# 审计 — 2026-06-07 文件上传 + Layer3 巡检脚本 + 生产对齐部署

## 范围

本批次 `git diff HEAD~1`（commit `9337f37`）及部署前修复：

| 文件 | 变更要点 |
|------|----------|
| `deploy/health_monitor.sh` | 引号剥离 `normalize_env_value`；Telegram 中文告警 |
| `frontend/src/composables/files/useFilesActions.ts` | FormData 字段 `files` → `file` |
| `server/api/sync_v2.py` | 接受 `file`/`files`；多文件；`_sftp_upload_one` |
| `tests/test_sync_upload_form.py` | 上传字段解析单测 |
| `server/api/auth.py` | 改密 `audit_repo` 定义顺序（F821 修复） |
| `deploy/gate_log.jsonl` | 门控运行记录（自动生成，非业务逻辑） |

## Step 3 规则扫描

| H | 规则 | 结论 |
|---|------|------|
| H1 | 上传字段前后端一致 | FIXED `sync_v2` + `useFilesActions` |
| H2 | 多文件不静默丢 | FIXED `_collect_multipart_upload_files` |
| H3 | Layer3 Telegram token 引号 | FIXED `normalize_env_value` |
| H4 | 改密会话失效 + 审计 | FIXED `audit_repo` 先于 `AuthService` |
| H5 | 无静默吞错 | PASS SFTP/HTTP 错误向上抛出 |

## Closure

| H | 判定 | 依据 |
|---|------|------|
| H1 | FIXED | `test_sync_upload_form.py` |
| H2 | FIXED | `sync_v2.py` 多文件循环 |
| H3 | FIXED | 生产演练 Telegram 收到 |
| H4 | FIXED | `auth.py` ruff F821 清零 |
| H5 | PASS | 无 bare except |

## 验证

| 项 | 结果 |
|----|------|
| `pytest tests/test_sync_upload_form.py -q` | pass |
| `bash scripts/local_verify.sh` | 待 ruff 修复后重跑 |
| Layer3 演练 | 用户确认 Telegram 收到 |
| `deploy/pre_deploy_check.sh` | 本审计入库后重跑 |

## DoD

- [x] changelog `2026-06-07-files-upload-form-field-fix.md`
- [x] 涉及文件列入本审计范围表
- [x] 生产 Layer3 终验通过
- [ ] 前端 vite build + docker upgrade
- [ ] 批量升级 Agent
