17 Commits

Author SHA1 Message Date
chengkai3 3fb4d5f170 fix:[FL-172][高程数据管理页面上传文件提交表单报错]
修复高程文件上传接口的422错误。

问题原因:
ElevationFileRecordCreateRequest schema 的 mount_code 字段设置了 min_length=2 约束,
当前端传递空字符串时,Pydantic 验证失败导致 422 Unprocessable Entity 错误。

解决方案:
1. 添加 field_validator,将空字符串转换为 None
2. 应用到以下 Request schemas 的可选字符串字段:
   - ElevationFileRecordCreateRequest: source, mount_code, notes
   - ElevationFileRecordUpdateRequest: source, notes
   - ElevationDatasetCreateRequest: source, mount_code, file_name, notes
   - ElevationDatasetUpdateRequest: name, source, notes

这样可以确保:
- 空字符串被规范化为 None
- 保持向后兼容性
- 后端逻辑可以正确使用默认 mount_code(第一个可用挂载点)

Co-authored-by: multica-agent <github@multica.ai>
2026-06-21 13:15:29 +08:00
chengkai3 899d5316cf feat:[FL-211][高程管理扁平化为文件记录]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-20 18:03:27 +08:00
chengkai3 86870f4610 feat: 高程管理重构 - 从数据集中心到文件中心
## 重构目标

将高程数据管理从"数据集中心"模式重构为"文件中心"模式,去掉 ElevationDataset 概念,
扁平化为 ElevationFileRecord,每条记录对应一个高程文件。

## 主要变更

### 数据库层
- 新增 `elevation_file_record` 表,合并原 dataset 核心字段
- 更新 `elevation_apply_job` 和 `elevation_data_import_job`,添加 `file_record_id` 字段
- 创建数据迁移脚本 `001_add_elevation_file_record.sql`
- 保留旧表用于向后兼容

### 后端 API
- 新增 `/api/v1/elevation/records` 路由组(推荐使用)
  - GET /records - 文件记录列表
  - POST /records - 上传文件并创建记录(上传即创建)
  - GET /records/{id} - 获取记录详情
  - PATCH /records/{id} - 更新记录
  - DELETE /records/{id} - 删除记录
  - POST /records/{id}/analyze - 触发分析
  - POST /records/{id}/terrain/build - 生成地形瓦片
  - GET /records/{id}/preview - 预览数据
- 保留 `/api/v1/elevation/datasets` 路由用于向后兼容
- Apply API 支持 `file_record_id` 和 `dataset_id` 双 ID

### 后端代码
- 新增 `elevation_file_record_service.py` (601 行),包含完整 CRUD 和操作逻辑
- 新增模型 `ElevationFileRecord`
- 新增 Schema:FileRecordSummary, CreateRequest, UpdateRequest 等
- 新增 Celery 任务:
  - `analyze_elevation_file_record_job`
  - `build_elevation_file_record_terrain_job`
- 新增执行函数:
  - `execute_file_record_analysis_job`
  - `execute_file_record_terrain_build_job`
- 更新模型字段,支持双 ID 关联

### 前端
- 新增简化页面 `/admin/elevation-records` (542 行)
- 从原 1760 行简化到 542 行
- 上传即创建,无需先建数据集
- 每行直接对应一个文件
- 操作更直观

### 文档
- 新增 `REFACTOR_SUMMARY.md` 完整重构说明
- 新增 `api/migrations/README.md` 迁移指南

## 用户体验改进

旧流程(4步):
1. 创建数据集(填编码+名称)
2. 导入文件到数据集
3. 分析数据集
4. 预览/地形/回填

新流程(2步):
1. 上传文件(填来源+分辨率)→ 自动创建+分析
2. 预览/地形/回填

## 向后兼容

- 保留旧表和旧 API,新旧系统可并存
- Apply Job 同时支持新旧 ID
- 提供平滑迁移路径

## 技术指标

- 代码简化:前端从 1760 行 → 542 行(-69%)
- 概念简化:去除"数据集"中间层
- API 数量:新增 8 个文件记录端点

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 09:01:16 +08:00
chengkai3 07735fb23f feat: [FL-104][高程数据管理中文件明细要展示各个文件的坐标范围]
- 添加 ElevationDatasetFileMeta 数据库模型存储文件级别坐标范围
- 更新 API schema 和 service,返回每个文件的 bbox 信息
- 修改高程数据分析任务,遍历目录所有文件并提取坐标范围
- 前端文件明细表格新增坐标范围列
- 创建数据库迁移脚本

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-13 07:59:08 +08:00
chengkai3 2a5cbe474b fix:[FL-92][高程数据管理预览时地形图渲染不出来] - 添加minzoom字段
修复地形图layer.json缺少minzoom字段导致Cesium无法正确加载地形的问题。

根本原因:
- Cesium地形加载需要layer.json同时包含minzoom和maxzoom字段
- 之前只有maxzoom字段,导致Cesium不知道从哪个层级开始加载地形
- 虽然瓦片数据正常(API返回200),但前端无法正确渲染三维地形

修改内容:
1. 在ElevationTerrainLayerResponse模型中添加minzoom字段(schemas/elevation.py)
2. 在地形构建代码中设置minzoom=0(services/elevation_service.py)
3. 地形瓦片的zoom level范围现在完整定义为0-6

影响:
- 已构建的地形数据需要重新触发构建任务才能生成包含minzoom的新layer.json
- 新构建的地形将自动包含minzoom字段

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-06-12 22:57:25 +08:00
chengkai3 61a1954034 [feat]:[FL-80][高程数据导入异步并支持进度回看]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-10 15:38:10 +08:00
chengkai3 2ad2405cd3 [fix/feat]:[FL-74][高程数据支持DEM地形瓦片预览和线路地形图]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-10 00:26:09 +08:00
chengkai3 4e2b3dcdad [fix]:[FL-57][统一计算任务到 Celery worker]
Co-authored-by: multica-agent <github@multica.ai>
2026-06-09 08:29:10 +08:00
Admin 7c121b8948 优化高程数据管理交互并补充分析进度与文件明细能力
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 15:24:47 +08:00
Admin 0952edd402 支持高程批量导入进度与异步分析任务监控
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 14:20:19 +08:00
Admin df7c6ca14e 完成高程数据集优化并支持多文件导入自动分析
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 13:42:51 +08:00
Admin 3362b6b67e 展示sample_tx_err首条异常原文
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 12:14:32 +08:00
Admin 779acf8e1e 支持高程数据管理批量导入
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 11:59:40 +08:00
Admin 4b0c7eda69 新增高程预览诊断信息面板
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 11:29:06 +08:00
Admin 556da5c155 改造高程预览为地形网格渲染
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 10:43:23 +08:00
Admin 8672f4b7cc 新增高程数据Cesium预览功能
Co-authored-by: multica-agent <github@multica.ai>
2026-05-03 10:00:16 +08:00
chengkai3 e5a33d7f9a feat: add elevation dataset management and line altitude apply jobs 2026-05-01 17:10:19 +08:00