[migrate]:[FL-18][迁移故障复现工具]

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
chengkai3
2026-06-07 17:35:43 +08:00
parent 6244534582
commit 8a2af9135f
13 changed files with 1234 additions and 1 deletions
+48
View File
@@ -73,3 +73,51 @@
- 风险与关注点:
- 本次仅调整前端展示文案,不涉及页面交互、数据请求或接口契约。
## Work Log - 迁移故障复现工具(2026-06-07
- 背景:
- Issue `FL-18` 要求把源端 `/home/ck/fl-knowledge/LP/Form7_GuZhangFuXian.cs``LP/FuXian.cs` 的“故障复现”能力迁入 `fquiz`
- 源端工具是一个独立分析器:上传基础数据文件后,按波形、类型和耐雷水平做复现计算,并返回最可能的波头/波尾组合。
- 目标仓库现有 `fl-analysis` 聚焦任务化风险评估,不适合硬塞入同一任务模型;因此本次采用独立无状态工具页 + 上传接口的最小闭环接入。
- 本次改动:
- 后端
- `api/app/services/fault_recurrence_service.py`
- 纯 Python 迁移 `FuXian` 核心逻辑:文件解码、源端分段文本/普通 CSV 双格式解析、2.6/50 基准点判断、按同波头分组插值、KDE 概率密度比选。
- `api/app/schemas/fault_recurrence.py`
- 新增故障复现结果 schema,统一前端契约。
- `api/app/api/v1/fault_recurrence.py`
- 新增 `POST /api/v1/fault-recurrence/analyze`,接收 `multipart/form-data` 上传并返回结构化结果。
- `api/app/api/router.py`
- 注册故障复现路由。
- `api/app/services/seed_service.py`
- 新增默认菜单 `admin.fault_recurrence`,路径 `/admin/fault-recurrence`,并加入 admin 默认菜单绑定。
- `api/app/services/legacy_authz_service.py`
- 补 legacy 权限映射与 synthetic menu,兼容旧菜单表场景。
- `api/app/services/legacy_admin_rbac_service.py`
-`admin.fault_recurrence` 加入受保护菜单集合。
- 前端
- `web/src/app/admin/fault-recurrence/page.tsx`
- 新增独立 admin 工具页,支持选择基础数据文件、配置波形/类型/耐雷水平、执行复现、展示结构化结果与基础数据表格预览。
- `web/src/types/auth.ts`
- 新增故障复现前端类型定义。
- 测试
- `api/tests/test_fault_recurrence_service.py`
- 新增纯 Python 服务测试,覆盖分段文本解析、`No need!` 分支、插值结果与缺基准点 warning。
- `api/tests/test_fault_recurrence_contract.py`
- 新增 AST 契约测试,覆盖 router 注册与菜单/权限落点。
- 验证:
- 基线:
- `python3 -m unittest tests.test_line_contract` 通过。
- 迁移后:
- `python3 -m unittest tests.test_fault_recurrence_service tests.test_fault_recurrence_contract` 通过。
- `python3 -m unittest tests.test_line_contract` 通过。
- `npm --workspace web run lint -- src/app/admin/fault-recurrence/page.tsx` 通过。
- `npm --workspace web exec tsc --noEmit` 通过。
- `npm --workspace web run build` 未完成,进程被环境以 `code 137` 杀掉;构建日志未给出新增代码级报错,更像资源限制。
- 风险与关注点:
- 当前工具仍是“上传文件即时计算”模式,未与现有线路台账做持久化绑定;若后续需要从已导入线路直接发起故障复现,需要再评估与 `line/tower profile` 的联动入口。
- 前端完整 `next build` 在当前执行环境被 `SIGKILL/137` 中断,虽然 lint 与 `tsc --noEmit` 已通过,但仍需在资源更充足的 CI/部署环境再确认一次全量构建。