2026-06-07 11:35:02 +08:00
|
|
|
|
## Work Log - 线路管理新建线路表单去掉塔型/状态(2026-06-07)
|
|
|
|
|
|
|
|
|
|
|
|
- 背景:
|
|
|
|
|
|
- Issue `FL-8` 要求调整 `/admin/power-lines` 新建线路表单,去掉“塔型”“状态”表单项,并删除对应字段契约。
|
|
|
|
|
|
- 代码排查确认影响不仅在前端表单,还包括线路公开 schema、线路列表筛选、线路卡片展示,以及 CSV 导入导出的线路元数据字段。
|
|
|
|
|
|
- 仓库当前无显式 Alembic 迁移链路,因此本次不直接做数据库删列迁移,优先收口前后端公开契约与页面行为。
|
|
|
|
|
|
|
|
|
|
|
|
- 本次改动:
|
|
|
|
|
|
- `web/src/app/admin/power-lines/page.tsx`
|
|
|
|
|
|
- 删除线路表单中的 `tower_shape`、`status` 字段。
|
|
|
|
|
|
- 删除线路列表状态筛选、线路卡片状态 Tag、线路卡片塔形展示。
|
|
|
|
|
|
- 调整创建/更新请求体,仅提交 `code`、`name`、`voltage_kv`。
|
|
|
|
|
|
- `web/src/types/auth.ts`
|
|
|
|
|
|
- 删除 `LineStatus` 类型与 `LineSummary` 中的 `tower_shape`、`status` 字段。
|
|
|
|
|
|
- `api/app/schemas/line.py`
|
|
|
|
|
|
- 删除 `LineSummary`、`LineCreateRequest`、`LineUpdateRequest` 中的 `tower_shape`、`status` 字段。
|
|
|
|
|
|
- `api/app/api/v1/lines.py`
|
|
|
|
|
|
- 删除线路列表接口的 `status` 查询参数。
|
|
|
|
|
|
- `api/app/services/line_service.py`
|
|
|
|
|
|
- 删除线路序列化输出中的 `tower_shape`、`status`。
|
|
|
|
|
|
- 删除线路列表状态筛选逻辑。
|
|
|
|
|
|
- 删除创建/更新线路时对 `tower_shape`、`status` 的公开读写。
|
|
|
|
|
|
- 删除杆塔 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` 数据列仍保留为兼容字段,避免在缺少迁移链路时影响现网插入;当前仅前后端公开契约不再读写/展示这两个字段。
|
2026-06-07 12:30:45 +08:00
|
|
|
|
|
|
|
|
|
|
## 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` 校验。
|
2026-06-07 14:04:49 +08:00
|
|
|
|
|
|
|
|
|
|
## 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` 通过。
|
|
|
|
|
|
|
|
|
|
|
|
- 风险与关注点:
|
|
|
|
|
|
- 本次仅调整前端展示文案,不涉及页面交互、数据请求或接口契约。
|
2026-06-07 17:35:43 +08:00
|
|
|
|
|
|
|
|
|
|
## 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/部署环境再确认一次全量构建。
|