提交 a761d9ce authored 作者: 陈泽健's avatar 陈泽健

docs(security): HANDOFF 记录500修复完成进度与推送状态

- 头部最近提交更新为 beb0f4af(已推送)
- 2026-09-10 任务小节补充提交推送状态与网络超时小插曲
- 状态行更新:JSON 双重编码 500 已修复验证
Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
上级 beb0f4af
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
> **最后更新**: 2026-09-10 > **最后更新**: 2026-09-10
> **当前分支**: `platform-auto-test` > **当前分支**: `platform-auto-test`
> **开发窗口**: 安全测试模块 > **开发窗口**: 安全测试模块
> **最近提交**: `29f3612d` feat(ui-automation): 5.60 15条用例同步验证全通过 + 钉钉形态4停止通知 + noVNC协议修复 > **最近提交**: `beb0f4af` fix(security): 修复5.60安全用例JSON双重编码500错误 + 部署脚本防复发(已推送)
> **状态**: ✅ 安全测试 P1 全部完成 + P2 执行验证完成 + 菜单升级 + ERP 配置子菜单 + ERP 上传流程对接完成 + ERP 任务创建对接完成 + 安全测试定时任务模块完成 + **安全测试用例支持标准版与项目版区分全部实现并验证通过** > **状态**: ✅ 安全测试 P1 全部完成 + P2 执行验证完成 + 菜单升级 + ERP 配置子菜单 + ERP 上传流程对接完成 + ERP 任务创建对接完成 + 安全测试定时任务模块完成 + 标准版/项目版区分实现 + **5.60 JSON 双重编码 500 错误已修复并验证(67 条用例 API 恢复正常)**
--- ---
...@@ -86,18 +86,22 @@ ...@@ -86,18 +86,22 @@
**根因**(已实测确认): **根因**(已实测确认):
- `deploy_security_cases_560.py` 用 sqlite3 原生读取本地 SQLite 的 `tags/steps/config` 列,SQLAlchemy JSON 在 SQLite 上以 TEXT 存储 → **读到的是 JSON 文本字符串** - `deploy_security_cases_560.py` 用 sqlite3 原生读取本地 SQLite 的 `tags/steps/config` 列,SQLAlchemy JSON 在 SQLite 上以 TEXT 存储 → **读到的是 JSON 文本字符串**
- 脚本又对`json.dumps()`**双重编码**,MySQL JSON 列存成了"JSON 字符串值"(`"[\"...\"]"`而非数组/对象; - 脚本又对`json.dumps()`**双重编码**,MySQL JSON 列存成了"字符串值"而非数组/对象;
- API 读取后 Pydantic 收到 str 而非 list/dict → 4 个校验错误(恰巧 `depends_on/parameters/condition` 未被 dumps、直传文本被 MySQL 正常解析,所以只有 3 字段报错)。 - API 读取后 Pydantic 收到 str 而非 list/dict → 4 个校验错误(恰巧 `depends_on/parameters/condition` 未被 dumps、直传文本被 MySQL 正常解析,所以只有 3 字段报错)。
**修复**(全部完成并验证): **修复**(全部完成并验证):
1. `backend/scripts/fix_560_json_double_encoding.py`(新增)— 对 5.60 MySQL 中 67 条安全用例的 tags/steps/config 逐层 `json.loads` 还原后 UPDATE 回写;运行结果:**修复 67 条,JSON_TYPE 验证全部 ARRAY/OBJECT** 1. `backend/scripts/fix_560_json_double_encoding.py`(新增)— 对 5.60 MySQL 中 67 条安全用例的 tags/steps/config 逐层 `json.loads` 还原后 UPDATE 回写;运行结果:**修复 67 条,JSON_TYPE 验证全部 ARRAY/OBJECT**
2. `backend/scripts/deploy_security_cases_560.py` — 新增 `_parse_json_field()`,加载本地用例时对 6 个 JSON 列先 `json.loads` 还原,防止下次部署复发。 2. `backend/scripts/deploy_security_cases_560.py` — 新增 `_parse_json_field()`,加载本地用例时对 6 个 JSON 列先 `json.loads` 还原,防止下次部署复发。
3. **API 验证**`GET http://192.168.5.60/api/cases?case_type=security` → 200,total=67,tags=list / steps=dict / config=dict 全部正常,前端安全测试模块恢复访问 3. **API 验证**`GET http://192.168.5.60/api/cases?case_type=security` → 200,total=67,0 条字段异常,sec_hw_15 等补录用例内容完整
**注意事项** **注意事项**
- 本地 `data/test_platform.db` 曾被并行窗口覆盖回退到 **42 条**安全用例(5.60 上是 67 条);本地补录需重新运行 `create_security_cases.py`(注意与并行窗口错开数据库写入时间,见踩坑 S8) - 本地 `data/test_platform.db` 曾被并行窗口覆盖回退到 **42 条**安全用例(5.60 上是 67 条);本地补录需重新运行 `create_security_cases.py`(注意与并行窗口错开数据库写入时间,见踩坑 S8)
- 部署脚本与修复脚本在 `backend/scripts/` 下被 .gitignore 忽略,提交需 `git add -f` - 部署脚本与修复脚本在 `backend/scripts/` 下被 .gitignore 忽略,提交需 `git add -f`
**提交与推送状态**
- `beb0f4af` fix(security): 修复5.60安全用例JSON双重编码500错误 + 部署脚本防复发(3 files changed:fix_560_json_double_encoding.py 新增 / deploy_security_cases_560.py 防复发 / 本 HANDOFF 更新)——**已推送** `de15b58b..beb0f4af → origin/platform-auto-test`
- 推送过程小插曲:首次 fetch/push 因 git 服务器 HTTP 层响应过慢超时失败(ping 7ms 正常),稍后重试直接成功——遇 push 超时可先 ping 排除网络再重试
### 本次任务(2026-08-19):安全测试新增定时任务模块 + 部署 5.60 验证通过 ### 本次任务(2026-08-19):安全测试新增定时任务模块 + 部署 5.60 验证通过
**背景**:安全测试模块补充定时任务能力(设置执行周期 interval/daily/weekly + 执行时间),参考 UI 自动化定时任务模块实现,复用同一张 `scheduled_tasks` 表和调度引擎,按 `case_type` 分流调度。 **背景**:安全测试模块补充定时任务能力(设置执行周期 interval/daily/weekly + 执行时间),参考 UI 自动化定时任务模块实现,复用同一张 `scheduled_tasks` 表和调度引擎,按 `case_type` 分流调度。
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论