完成高程数据集优化并支持多文件导入自动分析

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-05-03 13:40:16 +08:00
parent d7f05e36bf
commit df7c6ca14e
8 changed files with 584 additions and 42 deletions
+55
View File
@@ -266,3 +266,58 @@
- 风险与影响:
- 影响面:Worker 监控与 worker_registry 自动注册链路;不涉及业务任务执行逻辑。
- `forceRefresh=true` 会增加 Flower 端查询频次,但当前页面已 5s 轮询,影响可控。
## Work Log - 高程数据集优化(FL-1832026-05-03
- 背景:
- 需求要求高程数据集支持多文件、目录自动生成、增加使用状态、创建后支持批量导入 csv/img/zip,并在导入后自动分析。
- 本次改动:
- 后端模型与兼容:
- 文件:`api/app/models/elevation.py`
- `elevation_dataset` 新增字段:`dataset_dir``usage_status`,并增加 `usage_status` 索引。
- 文件:`api/app/core/database.py`
- 启动兼容逻辑新增 `_ensure_elevation_dataset_column_compatibility()`
- 若缺 `dataset_dir`,自动加列并按 `/elevation/datasets/{code}` 回填;
- 若缺 `usage_status`,自动加列并回填 `idle`
- 数据集创建逻辑改造:
- 文件:`api/app/schemas/elevation.py`
- `ElevationDatasetCreateRequest``file_path` 调整为可选 `file_name`(兼容“先建后传”)。
- `ElevationDatasetSummary` 新增 `dataset_dir``usage_status`
- 文件:`api/app/services/elevation_service.py`
- 数据集目录不再人工填写,固定根目录 `/elevation/datasets`,数据集目录自动为 `/elevation/datasets/{code}`
- 若创建时未给 `file_name`,允许仅创建元数据,不强制校验文件存在。
- 批量元数据导入兼容新旧列:`file_name``file_path`(从 path 自动提取文件名)。
- 批量导入高程数据文件(多文件):
- 文件:`api/app/api/v1/elevation.py`
- 新增接口:`POST /api/v1/elevation/datasets/{dataset_id}/data/import``files[]`)。
- 文件:`api/app/services/elevation_service.py`
- 新增 `import_dataset_data_files(...)`,支持:
- 直接上传:`csv/img/tif/tiff`
- 压缩包:`zip`(解压后仅导入 csv/img/tif/tiff
- 导入文件统一写入数据集目录 `/elevation/datasets/{code}`
- 自动选择优先文件作为当前数据集文件(优先 `img/tif/tiff`,其次 `csv`)。
- 导入后自动调用分析;失败时返回告警,不中断导入结果返回。
- 文件:`api/app/schemas/elevation.py`
- 新增 `ElevationDatasetDataImportResponse`
- 使用状态闭环:
- 文件:`api/app/services/elevation_service.py`
- 新增 `_refresh_dataset_usage_status()`,按任务状态汇总:
- 存在 `pending/running` 任务 => `in_use`
- 否则 => `idle`
- 在任务创建、运行、成功、失败路径同步更新 `usage_status` 并发布刷新事件。
- 前端高程管理页面改造:
- 文件:`web/src/app/admin/elevation/page.tsx`
- 新建数据集弹窗移除手填“挂载编码/文件路径”,改为仅填元数据;
- 列表新增 `dataset_dir``usage_status` 展示;
- 操作列新增“导入数据”,支持多选上传 `csv/img/tif/tiff/zip`
- 导入完成显示“上传数/解压数/可用数/告警数”统计。
- 文件:`web/src/types/auth.ts`
- 同步新增 `dataset_dir``usage_status``ElevationDatasetDataImportResponse` 类型。
- 验证:
- `python3 -m py_compile api/app/services/elevation_service.py api/app/api/v1/elevation.py api/app/schemas/elevation.py api/app/core/database.py api/app/models/elevation.py` 通过。
- 前端 lint 未执行(本环境缺少 `eslint`,命令报 `eslint: command not found`)。
- 风险与影响:
- 导入多个数据文件时,系统会选定一个“当前数据集文件”用于分析/回填(优先栅格),其余文件保留在数据集目录中。
- `usage_status` 依赖任务状态汇总,若历史任务状态异常(例如未正确收尾)可能导致状态滞后,需要运维侧修正任务状态。