Files
Nexus/docs/changelog/2026-06-01-bug-remediation.md
2026-07-08 22:31:31 +08:00

2.6 KiB
Raw Permalink Blame History

Changelog: 2026-06-01 全量 Bug 修复

变更摘要

一次性修复交接文件第八节 P0~P3 项及审查发现的认证/数据流问题。

动机

  • Vue ServersPage 批量 Agent 操作因 Vuetify item-value 返回 ID 而非对象导致 server_ids 无效
  • Access Token 30 天与 Refresh Cookie 架构不一致;SPA 未使用 credentials 与自动 refresh
  • Agent 心跳直写 MySQL 与 Redis→10min 刷库设计冲突
  • script-callback 缺少 X-API-Key 层防护

涉及文件

前端

  • frontend/src/pages/ServersPage.vue
  • frontend/src/api/index.ts
  • frontend/src/stores/auth.ts
  • frontend/src/router/index.ts
  • frontend/src/pages/TerminalPage.vue
  • frontend/src/utils/serverSelection.ts(新)
  • frontend/src/utils/apiError.ts(新)

后端

  • server/api/agent.py
  • server/application/services/auth_service.py
  • server/config.py
  • server/application/services/script_jobs.py
  • server/application/services/script_service.py
  • server/domain/models/__init__.py
  • server/infrastructure/database/admin_repo.py
  • server/infrastructure/database/migrations.py
  • server/main.py
  • server/api/settings.pyruff 清理)

测试

  • tests/test_api.py
  • tests/test_nexus_v6.py
  • tests/test_step1to5_features.py

文档

  • docs/design/specs/2026-06-01-bug-remediation-design.md
  • docs/design/plans/2026-06-01-bug-remediation.md
  • docs/audit/2026-06-01-bug-remediation.md

是否需迁移/重启

  • 需要重启 Nexus 后端(认证、Agent、迁移 DROP 列)
  • 需要重新构建并部署前端 SPA
  • 启动时自动执行 admins 表 DROP 废弃列(已存在则跳过)

生产部署记录(2026-06-01

  • Git: 8311821origin/main
  • 后端: supervisorctl restart nexus/healthok
  • 前端: Vite build + tar/scpindex.htmlindex-ngtHwr8t.jsServersPage-Vzm34hgn.js
  • 浏览器: 登录成功进入仪表盘与服务器列表
  • API: expires_in=360060 分钟 access token

验证方式

ruff check server/
python -c "import server.main"
cd frontend && npm run type-check
pytest tests/test_nexus_v6.py tests/test_step1to5_features.py -q
  • 服务器页:勾选多台 → 批量安装 Agent → 提示 N/M 成功
  • 登录后刷新页面:HttpOnly refresh 恢复会话(无 localStorage token
  • 未知 server_id 心跳:200 discarded,日志 debug 级 422

未改项说明

  • WebSSH JWT 在 URL:仍用 15 分钟专用 token + query(需 WS 协议改造,单独迭代)
  • sysctl 命令注入:当前 sync_engine_v2 已无 sysctl 拼接路径