3.4 KiB
3.4 KiB
BUG 专项逐行走读 — Batch 1(2026-06-04)
标准: docs/project/line-walk-audit-standard.md · 八类仅列 BUG
范围(5 文件,全文 Read)
| 文件 | N | Read |
|---|---|---|
server/api/install.py |
719 | 1–719 |
web/app/install.html |
720 | createAdmin/lock 段 + init |
server/application/services/script_job_callback.py |
110 | 1–110 |
server/api/agent.py |
360 | 1–360 |
server/api/servers.py |
1733 | stats 228–280 + list 165–220 |
Step 3 规则扫描(BUG 相关)
| 文件 | 命中 |
|---|---|
| install.py | 守卫分支、lock/create-admin 时序 |
| install.html | 未检查 lock 响应 |
| script_job_callback.py | _aggregate_execution_status 空列表 |
| agent.py | 丢弃未知 server、指标解析 |
| servers.py | stats offline = total - online |
Closure 表(BUG)
| 文件 | 行号 | 判定 | 严重度 | 理由 |
|---|---|---|---|---|
| install.html | 691-694 | FINDING | P1 | create-admin 成功后未检查 /lock;失败仍进 step5 |
| install.py | 648 | FINDING | P1 | create-admin 与 lock 非原子;锁定前 install API 仍可被未认证调用 |
| script_job_callback.py | 17-36 | FINDING | P2 | server_ids==[] 时直接 return "completed",忽略 results 中 pending |
| install.py | 509-526 | SAFE | — | state 不写 db_pass(有意);刷新 step4 需重填密码属 UX |
| agent.py | 154-180 | SAFE | — | 无 server_id / 未知 server 丢弃,设计如此 |
| agent.py | 86-94 | SAFE | — | 非数字指标跳过 |
| servers.py | 245-279 | RISK/BUG | P2 | offline=total-online 与列表 Redis 覆盖逻辑在「从未装 Agent」服务器上可能偏差;非回归 |
| servers.py | 205-212 | SAFE | — | is_online 过滤后重算 total |
FINDING 列表(8 字段)
BUG-06-04-01 · P1 · install.html:691-694
现象:管理员创建成功但 lock 503/400 时 UI 仍显示「安装完成」。
修复:检查 lock 响应;create-admin 返回 locked:true 时跳过二次 lock。
BUG-06-04-02 · P1 · install.py:648
现象:create-admin 完成到 lock 之间,未认证客户端可再次 create-admin(ON DUPLICATE 改密)。
修复:create-admin 末尾 _finalize_install_lock();lock 幂等 already_locked。
BUG-06-04-03 · P2 · script_job_callback.py:32-33
现象:server_ids JSON 损坏为空列表时,误标 completed。
修复:空列表时扫描 results 是否仍有 phase=pending。
Step 7 统计
install.py 2 FINDING(已修)
install.html 1 FINDING(已修)
script_job_callback.py 1 FINDING(已修)
agent.py 0
servers.py 0(1 项 P2 观察)
Step 8 DoD
- 5 文件 Read 覆盖
- Closure 全表
- FINDING 含
文件:行号 - 3 项 P1/P2 已落地修复
验证
ruff check server/api/install.py server/application/services/script_job_callback.py
pytest tests/test_security_unit.py tests/ -q --tb=no
Changelog: docs/changelog/2026-06-04-install-lock-atomic.md
下一批(BUG)
server/application/services/sync_engine_v2.pyserver/api/auth_service.pyserver/background/schedule_runner.pyfrontend/src/composables/terminal/useTerminalSessions.tsserver/infrastructure/redis/script_execution_store.py