## Work Log - ATP 渲染从 maxGraph 切换到 AntV X6(2026-05-04) - 背景: - 用户要求“直接改成 AntV X6 + 一套电气符号 SVG 方案,去掉 maxgraph 方案”。 - 本次改动(最小闭环): - 前端 ATP 渲染组件整体替换: - 删除:`web/src/components/atp-maxgraph-viewer.tsx` - 新增:`web/src/components/atp-x6-viewer.tsx` - 方案:`@antv/x6` 只读渲染 + 自定义电气符号 SVG(按元件类型 R/L/C/SW/SRC/XFMR/LINE/CTRL/MISC 映射) - 页面引用与文案同步: - 文件:`web/src/app/admin/power-lines/atp-viewer/page.tsx` - 组件引用从 `AtpMaxGraphViewer` 改为 `AtpX6Viewer` - 卡片标题从“maxGraph 渲染结果”改为“X6 渲染结果” - 依赖替换: - `web/package.json`:移除 `@maxgraph/core`,新增 `@antv/x6` - 锁文件同步:`web/package-lock.json`、根 `package-lock.json` - 验证: - `npm run build:web` 通过(含编译、TypeScript、静态页生成)。 - `npm run lint:web` 当前工程基线仍有大量历史问题(含 Cesium 产物目录与其他页面告警/错误),本次未新增针对性 lint 规则改动。 - 风险与影响: - 影响面限定在 ATP 查看器前端渲染层与前端依赖。 - ATP 图布局策略沿用原有节点位置推导逻辑;渲染引擎替换后视觉细节(标签锚点/线段路由)会与旧 maxGraph 有差异。 - `web/.next/lock` 在部分异常终止场景可能残留,已在本次验证过程中手动清理后重跑构建。 ## Work Log - 杆塔模型初始化改为上传文件方式(2026-05-04) - 背景: - 用户要求“杆塔模型初始化从指定文件读数据,改成文件上传方式”。 - 本次改动(最小闭环): - 后端新增上传初始化接口: - 文件:`api/app/api/v1/tower_models.py` - 新增 `POST /api/v1/tower-models/seed/upload` - 入参: - `setting_file`(必选,LP_Setting) - `ganta_file`(必选,LP_GanTa) - `images_zip`(可选,模型图片压缩包) - `overwrite_existing`(query,是否覆盖已有模型) - 后端服务新增上传导入逻辑: - 文件:`api/app/services/tower_model_service.py` - 新增 `seed_tower_models_from_upload(...)` - 解析策略: - LP_Setting:从上传文本解析 `` 模型清单 - LP_GanTa:从上传 CSV/TXT 内容解析默认参数 - images_zip:按“文件名 stem == 模型编码”匹配图片(支持 jpg/jpeg/png/webp/gif/bmp) - 持久化与事件:沿用原有 `tower-model.seeded` topic 发布与默认参数回填逻辑 - 复用与抽取: - `LP_Setting` 解析提取为 `_load_legacy_model_codes_from_text` - `LP_GanTa` 解析提取为 `_load_legacy_defaults_by_model_from_bytes` - 前端初始化入口改造: - 文件:`web/src/app/admin/tower-models/page.tsx` - 将“初始化老系统数据”改为“上传文件初始化” - 新增上传弹窗与覆盖开关,调用 `/api/v1/tower-models/seed/upload` - 保留“仅新增/覆盖已有模型”语义(通过 `overwrite_existing` 控制) - 验证: - 后端语法:`python3 -m compileall api/app/api/v1/tower_models.py api/app/services/tower_model_service.py` 通过。 - 前端构建:`npm run build:web` 通过。 - 风险与影响: - 影响面限定在杆塔模型初始化流程(初始化入口与导入数据来源)。 - 旧接口 `POST /api/v1/tower-models/seed/legacy` 仍保留,兼容历史调用。 ## Work Log - 杆塔模型展示支持卡片/列表视图(2026-05-04) - 背景: - Issue `FL-201` 要求“塔杆模型展示支持卡片和列表呈现,默认卡片”。 - 本次改动(最小闭环): - 文件:`web/src/app/admin/tower-models/page.tsx` - 新增页面状态: - `viewMode: "card" | "list"`,默认值 `"card"`。 - 新增展示方式切换控件: - 在筛选区下方增加 `Segmented`,支持“卡片/列表”切换。 - 新增卡片视图渲染: - 以网格布局渲染模型卡片(移动端单列、`md` 双列、`xl` 三列)。 - 卡片内展示模型名称/编码、状态、塔型、排序、默认参数标签、图片预览。 - 管理权限下保留“编辑/上传图片/删除”操作,行为与列表视图一致。 - 保留原有列表视图: - 原 `Table` 渲染逻辑不变,作为“列表”模式展示。 - 验证: - 未执行编译/安装类命令(遵循任务约束“不要做代码编译检查,严禁安装依赖”)。 - 通过代码 diff 校对确认: - 默认进入页面即为“卡片”展示。 - 切换到“列表”时回退到既有表格视图。 - 现有 CRUD、图片上传与预览调用链未改动。 - 风险与影响: - 影响范围仅前端 `杆塔模型管理` 页面展示层。 - 卡片模式下每项仍会触发图片预览加载请求,数据量较大时请求并发会增多(与原表格缩略图逻辑一致)。