2.1 KiB
2.1 KiB
2026-06-04 — Code Review P0/P1 修复批次
摘要
依据 Cursor 全量 code review 结论,修复安装窗口、并行推送 DB 会话、源路径校验、Refresh 轮换竞态、定时任务失败判定、Primary 锁降级及前端推送/登录问题。
动机
- P0:
sync_files并行 worker 共用AsyncSession导致间歇性 DB 错误;create-admin在 Step3~4 之间无鉴权可被抢管。 - P1:推送源路径未统一黑名单;Refresh 非原子轮换;schedule 全失败仍提交
last_run_at;Redis 不可用时多 worker 重复后台任务;前端 WS 泄漏与开放重定向。
涉及文件
| 文件 | 变更 |
|---|---|
server/application/services/sync_engine_v2.py |
_db_lock 串行化 DB 写;源路径走 resolve_nexus_push_source_path |
server/utils/posix_paths.py |
新增 FORBIDDEN_NEXUS_SOURCE_PREFIXES、resolve_nexus_push_source_path |
server/api/install.py |
Step3 签发 install_token;create-admin 校验令牌 |
web/app/install.html |
保存并提交 install_token |
server/application/services/auth_service.py |
Redis Lua 原子 refresh 轮换 |
server/api/sync_v2.py |
validate/verify 复用统一源路径校验 |
server/main.py |
Redis 失败时 flock 文件锁 fallback(单 primary) |
server/background/schedule_runner.py |
推送零成功时 rollback schedule |
frontend/src/pages/LoginPage.vue |
登录 redirect 防开放重定向 |
frontend/src/composables/push/usePushProgress.ts |
失败时 disconnect WS;4001/4401 强制登出 |
tests/test_security_unit.py |
install token + 源路径单元测试 |
迁移 / 重启
- 需重启
nexus(Supervisor)使后端生效。 - 前端需
vite build后部署静态资源。 - 安装向导:Step3 响应新增
install_token,Step4 必须携带;进行中的安装需从 Step3 重新执行以获取令牌。
验证
.venv/bin/ruff check server/...
.venv/bin/python -c "import server.main"
.venv/bin/pytest tests/test_security_unit.py -q
cd frontend && npm run type-check
进度:☑实现 ☑WSL验证 □审计8步 □部署 □健康检查 □浏览器验证 ☑changelog