feat(ui): 安全软件风格主题 + 三阶段进度/日志 + XLSX 支持

- 主面板:阶段1扫描全盘 → 阶段2抽样 → 阶段3抽检,每阶段独立进度条/已用时/分类型 chips

- 日志:按类型着色(命中红/未命中绿/警告黄/阶段青)

- 主题:暗绿底 + 鲜绿/青色强调,圆角胶囊按钮(material::security_dark)

- 抽检:SampleMode 枚举支持按份数/百分比/全部;设置页 C 组动态切换

- 抽检:XLSX 检查器(zip + quick-xml 解析 sharedStrings 与 sheet)

- 扫描:walker 进度回调(已访问、命中候选、当前目录)

- 兼容:quick-xml 0.36 使用 reader.config_mut().trim_text()

- 仓库:新增 .gitignore 忽略 venv/pyc/target/构建产物
This commit is contained in:
2026-06-10 12:20:25 +08:00
parent 31161d9a5f
commit 7e256c426f
43 changed files with 8529 additions and 59 deletions

66
Cargo.toml Normal file
View File

@@ -0,0 +1,66 @@
[package]
name = "secret-file-selfcheck"
version = "0.1.0"
edition = "2021"
description = "磁盘文档涉密抽检工具egui + Umi-OCR"
[dependencies]
eframe = { version = "0.27", default-features = false, features = ["default_fonts", "glow", "persistence"] }
egui = "0.27"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "sync", "time", "fs"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing-appender = "0.2"
docx-rs = "0.4"
encoding_rs = "0.8"
chardetng = "0.1"
reqwest = { version = "0.12", default-features = false, features = ["json", "blocking"] }
base64 = "0.22"
sysinfo = "0.31"
windows-sys = { version = "0.59", features = [
"Win32_UI_WindowsAndMessaging",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_System_Threading",
"Win32_System_Console",
"Win32_System_Memory",
"Win32_System_LibraryLoader",
"Win32_System_DataExchange",
"Win32_Graphics_Gdi",
"Win32_Storage_FileSystem",
"Win32_Storage_Xps",
"Win32_UI_Shell",
"Win32_System_Registry",
"Win32_Security",
"Win32_Foundation",
] }
sys-locale = "0.3"
dirs = "5"
walkdir = "2"
regex = "1"
aho-corasick = "1"
sha2 = "0.10"
anyhow = "1"
thiserror = "1"
chrono = { version = "0.4", features = ["serde"] }
once_cell = "1"
log = "0.4"
image = { version = "0.25", default-features = false, features = ["png", "bmp"] }
handlebars = "5"
url = "2"
rand = "0.8"
rfd = "0.14"
zip = "2"
quick-xml = "0.36"
[build-dependencies]
embed-resource = "2"
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = true
panic = "abort"