Files
fquiz/memory/2026-06-07.md
T
chengkai3 8a2af9135f [migrate]:[FL-18][迁移故障复现工具]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-07 17:35:43 +08:00

7.6 KiB
Raw Blame History

Work Log - 线路管理新建线路表单去掉塔型/状态(2026-06-07

  • 背景:

    • Issue FL-8 要求调整 /admin/power-lines 新建线路表单,去掉“塔型”“状态”表单项,并删除对应字段契约。
    • 代码排查确认影响不仅在前端表单,还包括线路公开 schema、线路列表筛选、线路卡片展示,以及 CSV 导入导出的线路元数据字段。
    • 仓库当前无显式 Alembic 迁移链路,因此本次不直接做数据库删列迁移,优先收口前后端公开契约与页面行为。
  • 本次改动:

    • web/src/app/admin/power-lines/page.tsx
      • 删除线路表单中的 tower_shapestatus 字段。
      • 删除线路列表状态筛选、线路卡片状态 Tag、线路卡片塔形展示。
      • 调整创建/更新请求体,仅提交 codenamevoltage_kv
    • web/src/types/auth.ts
      • 删除 LineStatus 类型与 LineSummary 中的 tower_shapestatus 字段。
    • api/app/schemas/line.py
      • 删除 LineSummaryLineCreateRequestLineUpdateRequest 中的 tower_shapestatus 字段。
    • api/app/api/v1/lines.py
      • 删除线路列表接口的 status 查询参数。
    • api/app/services/line_service.py
      • 删除线路序列化输出中的 tower_shapestatus
      • 删除线路列表状态筛选逻辑。
      • 删除创建/更新线路时对 tower_shapestatus 的公开读写。
      • 删除杆塔 CSV 导出中的“塔形”列,以及 CSV 导入元数据对“塔形”的回填。
    • api/tests/test_line_contract.py
      • 新增 AST 级最小回归测试,校验线路公开 schema/接口/CSV 导出头中不再暴露上述字段。
  • 验证:

    • python3 -m unittest api/tests/test_line_contract.py 通过。
    • npm --workspace web run lint -- src/app/admin/power-lines/page.tsx 仍失败,但失败项与修改前一致:
      • react-hooks/set-state-in-effect 2 处
      • react-hooks/exhaustive-deps warning 4 处
      • 本次未新增新的 lint 问题。
  • 风险与关注点:

    • power_line 表中的 tower_shape / status 数据列仍保留为兼容字段,避免在缺少迁移链路时影响现网插入;当前仅前后端公开契约不再读写/展示这两个字段。

Work Log - 线路管理新建线路优化(2026-06-07)

  • 背景:

    • Issue FL-10 要求优化 /admin/power-lines 的新建线路弹窗:
      • 去掉“线路编码将由系统自动生成”提示;
      • 将“电压等级”改为必填。
    • 代码排查确认目标仅命中前端页面 web/src/app/admin/power-lines/page.tsx;后端线路接口当前仍保留 voltage_kv 可空兼容,未在本次需求内扩展为全链路契约变更。
  • 本次改动:

    • web/src/app/admin/power-lines/page.tsx
      • 删除新建线路弹窗顶部“线路编码将由系统自动生成”提示。
      • 为“电压等级”增加 AntD 表单必填规则,错误文案为“请选择电压等级”。
      • 去掉电压等级下拉的 allowClear,避免用户主动清空后提交空值。
  • 验证:

    • 执行 npm_config_cache=/tmp/npm-cache npm ci,补齐 web 依赖。
    • 执行 npm_config_cache=/tmp/npm-cache npx eslint web/src/app/admin/power-lines/page.tsx
      • 无新增 error
      • 仍有 4 条既有 react-hooks/exhaustive-deps warning,与本次改动无关。
  • 风险与关注点:

    • 当前“电压等级必填”仅收口在前端新建/编辑弹窗;若后续还有其他外部写入入口,需要单独评估是否同步收紧后端 LineCreateRequest 校验。

Work Log - 去掉线路管理页左侧提示文案(2026-06-07)

  • 背景:

    • Issue FL-12 要求去掉 /admin/power-lines 页面左侧卡片里的说明文案“左侧选择线路,右侧查看线路分布图或塔杆列表。”。
    • 文案全局检索只命中 web/src/app/admin/power-lines/page.tsx 一处,未发现接口、类型或其他页面联动影响。
  • 本次改动:

    • web/src/app/admin/power-lines/page.tsx
      • 删除线路管理左侧卡片顶部的提示文案,仅保留筛选输入框和线路列表。
  • 验证:

    • 基线:npm --workspace web run lint -- src/app/admin/power-lines/page.tsx 通过。
    • 修改后:npm --workspace web run lint -- src/app/admin/power-lines/page.tsx 通过。
  • 风险与关注点:

    • 本次仅调整前端展示文案,不涉及页面交互、数据请求或接口契约。

Work Log - 迁移故障复现工具(2026-06-07)

  • 背景:

    • Issue FL-18 要求把源端 /home/ck/fl-knowledge/LP/Form7_GuZhangFuXian.csLP/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/部署环境再确认一次全量构建。