feat: add elevation dataset management and line altitude apply jobs

This commit is contained in:
chengkai3
2026-05-01 17:02:52 +08:00
parent 9212880962
commit e5a33d7f9a
20 changed files with 1783 additions and 4 deletions
+66
View File
@@ -319,3 +319,69 @@
- 风险与影响:
- 影响范围仅为线路管理分布图控件区 UI 与交互;后端接口和数据结构无影响。
## Work Log - 新增高程数据管理功能(2026-05-01)
- 背景:
- 目标是支撑线路走向图高程渲染,提供“高程数据集管理 + 杆塔高程回填任务”闭环能力。
- 约束:最小改动优先,不引入重型 GDAL 依赖,先落可运行方案。
- 本次改动(最小闭环):
- 后端模型与任务:
- 新增 `api/app/models/elevation.py`
- `elevation_dataset`:存高程数据集元信息(挂载、文件路径、分辨率、样本统计、bbox、状态)。
- `elevation_apply_job`:存线路回填任务(模式、进度统计、状态、错误信息)。
- 新增 `api/app/tasks/elevation_tasks.py`
- Celery 任务 `apply_elevation_for_line_job`,异步执行指定 job。
- `api/app/core/celery_app.py`
- Celery include 扩展:加入 `app.tasks.elevation_tasks`
- 后端 API 与服务:
- 新增 `api/app/schemas/elevation.py`dataset/job 请求与响应模型)。
- 新增 `api/app/services/elevation_service.py`,提供:
- 数据集列表/创建/更新/分析;
- 回填任务列表/详情/创建;
- 回填执行逻辑(最近邻采样 CSV 点,写回 `power_line_tower.altitude_m`)。
- 回填结果写入 `raw_extra_json.elevation`(数据集来源、采样距离、时间)。
- 新增 `api/app/api/v1/elevation.py`
- `GET /api/v1/elevation/datasets`
- `POST /api/v1/elevation/datasets`
- `PATCH /api/v1/elevation/datasets/{dataset_id}`
- `POST /api/v1/elevation/datasets/{dataset_id}/analyze`
- `GET /api/v1/elevation/jobs`
- `GET /api/v1/elevation/jobs/{job_id}`
- `POST /api/v1/elevation/jobs/apply-line`
- `api/app/api/router.py` 注册 elevation 路由。
- `api/app/core/database.py` + `api/app/models/__init__.py` 注册新模型,确保 `init_db` 自动建表。
- 权限/菜单/订阅:
- `api/app/services/seed_service.py`
- 新增权限:`elevation.read` / `elevation.manage`
- 新增后台菜单:`admin.elevation` -> `/admin/elevation`
- admin 默认菜单绑定新增 `admin.elevation`
- `api/app/services/legacy_authz_service.py`
- admin 默认权限加入 elevation 权限。
- `MENU_CODE_PERMISSION_MAP` 增加 `admin.elevation`
- legacy synthetic 菜单补齐 `admin.elevation`
- `api/app/services/topic_registry.py`
- 新增 topic 规则:`admin.elevation`
- `api/app/services/admin_service.py` / `legacy_admin_rbac_service.py`
-`admin.elevation` 设为受保护菜单(不可误删)。
- 前端页面与类型:
- 新增 `web/src/app/admin/elevation/page.tsx`
- 高程数据集管理(创建、分析、列表)。
- 回填任务管理(创建、进度/结果查看)。
- 支持跳转文件管理上传 CSV(复用现有文件系统)。
- `web/src/types/auth.ts` 增加 elevation 相关类型定义。
- `web/src/app/admin/page.tsx` 新增“高程数据管理”卡片入口。
- `web/src/app/admin/menus/page.tsx``admin.elevation` 加入前端受保护菜单编码集合。
- 验证:
- 后端语法编译:
- `python3 -m compileall api/app` -> 通过。
- 前端构建:
- `npm run build:web` -> 通过。
- 构建产物中已包含路由:`/admin/elevation`
- 风险与影响:
- 当前实现使用 CSV 点集“最近邻采样”,适合先跑通管理与回填流程;不是严格栅格插值方案。
- 未引入 GDAL/rasterio,部署更稳,但精度依赖 CSV 样本密度与坐标质量。
- 回填默认允许 `overwrite_all`,存在覆盖人工高程风险;前端默认展示“仅填空(推荐)”。