a2ae74d582
- Backend: auth refresh reuse, schedule/retry/sync/agent/files fixes - Frontend: push WS, files ETag browse, vite build assets - Docs: audit/changelog, production deploy gate, bug scan registry B7-77 - Deploy: deploy-production.sh, prune assets, gate logs
1.5 KiB
1.5 KiB
2026-06-04 — 安装向导守卫修复 + 审计项收尾
摘要
修复安装向导在 step3 写入 .env 后 step4/5 API 被误拦 403 的 P1 逻辑错误;并处理 2a 审计其余 P2 项。
动机
- F-2a-01:
_is_installed()将「仅有.env」等同于「安装完成」,导致create-admin/lock无法调用。 - F-2a-03:
create_admin未显式is_active=1,与 lock 前校验不一致。 - F-2a-02/04/05:Monaco 预加载失败悬挂、vendor tar 路径、config.json 明文库密。
变更
| 项 | 文件 | 说明 |
|---|---|---|
| 守卫拆分 | server/api/install.py |
_has_env / _reject_if_env_exists(仅 init-db)/ _reject_if_locked(step4/5);installed=locked;/status 增 configured |
| 管理员 | install.py |
INSERT/UPDATE 显式 is_active=1 |
| config | install.py |
config.json 不再写入 db_pass |
| Monaco | web/app/api.js |
onerror + 成功时清 _monacoLoading |
| vendor 脚本 | scripts/sync_frontend_vendor.py |
tar 解压拒绝 .. 路径 |
| 测试 | tests/test_security_unit.py |
守卫回归 3 条 |
迁移 / 重启
- 无 DB 迁移;改 API 逻辑,重启 uvicorn 即可。
- 已有
web/data/config.json若含db_pass可手动删除该字段(非必须)。
验证
ruff check server/api/install.py
pytest tests/test_security_unit.py -q
pytest tests/ -q
进度
☑实现 ☑WSL验证 ☐审计8步 ☐部署 ☐健康检查 ☐浏览器验证 ☑changelog