# File Safeguard

面向重要文件目录的“预览先行”批量复制与重命名工具。当前安全范围是 UTF-8 的 `.csv` 与 `.txt`：原件始终保持不变，结果写入不同目录，并在原子替换前重新打开、校验 SHA-256。

## 快速运行

Windows 使用项目中的 Python 时，在 `batch-tool/tool` 目录运行：

```powershell
$env:PYTHONPATH = "src"
& "C:\Users\10157\AppData\Local\Programs\Python\Python314\python.exe" -m file_safeguard.cli --config config.example.json --dry-run
```

确认预览无误后，移除 `--dry-run` 才会创建输出文件。报告写在 `reports/<任务编号>.json`，滚动日志在 `reports/file-safeguard.log`。

## 桌面界面

```powershell
$env:PYTHONPATH = "src"
& "C:\Users\10157\AppData\Local\Programs\Python\Python314\python.exe" -m file_safeguard.gui
```

界面会先显示扫描结果；“执行并验证”需要二次确认。长任务在后台线程运行，原件目录不参与写入。

## 处理模型

`扫描 → 格式/编码验证 → 冲突预览 → dry-run → 临时写入 → hash 与重新打开验证 → 原子替换 → JSON 回执`

同名策略：`skip` 跳过；`version` 输出 `_v2`、`_v3`；`error` 把冲突标为失败。工具不提供静默覆盖原件的选项。

## 客户可安全修改

编辑 `config.example.json` 后另存为 `config.json`：输入目录、输出目录、后缀、扩展名、冲突策略、最大文件数。不要把输出目录设为输入目录或其子目录。

## 验证与打包

```powershell
$env:PYTHONPATH = "src"
python -m pytest -q
python -m ruff check src tests
python -m mypy src
```

Windows 交付可在受控构建机使用：`pyinstaller --noconsole --name FileSafeguard src/file_safeguard/gui.py`。将生成的可执行包和本 README、默认配置一起发放；升级以版本号和变更记录管理，升级前保留旧版与任务报告。
