杆塔模型初始化改为上传文件方式

This commit is contained in:
chengkai3
2026-05-04 09:05:50 +08:00
parent c929224d5e
commit 5357ef1fcc
4 changed files with 337 additions and 20 deletions
+39
View File
@@ -24,3 +24,42 @@
- 影响面限定在 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:从上传文本解析 `<GanTaType_Models>` 模型清单
- 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` 仍保留,兼容历史调用。