483fdb982b
- 创建后端数据库模型:DocumentChapter 和 Document,支持按章节组织的树形文档结构 - 创建数据库迁移文件:002_add_document_management.sql - 创建 Pydantic schemas:定义文档和章节的请求/响应模型 - 创建后端服务层:document_service.py 实现 CRUD 和树形结构构建 - 创建 API 路由:/api/v1/documents 和 /api/v1/documents/chapters,支持完整的 RESTful 操作 - 创建前端类型定义:document.ts - 创建文档管理页面:/admin/documents,包含章节树形目录和文档表格,支持增删改查 - 创建文档展示页面:/admin/docs-view,左侧目录树右侧内容展示,支持 Markdown 渲染 - 安装 react-markdown 依赖用于文档内容展示 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: multica-agent <github@multica.ai>
数据库迁移说明
本目录包含数据库迁移脚本,用于重构高程数据管理功能。
迁移文件
001_add_elevation_file_record.sql
目的: 将高程数据管理从数据集中心模式重构为文件中心模式
主要变更:
-
创建新表
elevation_file_record- 包含所有文件记录相关字段
- 每个文件对应一条记录
- 合并了原
elevation_dataset的核心字段
-
数据迁移
- 从
elevation_dataset迁移数据到elevation_file_record - 保留原有的 ID 以保持关联关系
- 从
-
更新关联表
elevation_apply_job添加file_record_id字段elevation_data_import_job添加file_record_id字段- 将现有的
dataset_id值复制到新字段
-
向后兼容
- 保留旧表和旧字段用于过渡期
- 创建兼容性视图
elevation_dataset_compat
执行迁移
# 使用 psql 执行迁移
psql -U your_user -d your_database -f 001_add_elevation_file_record.sql
# 或使用 Python 脚本执行
python -c "
from app.core.database import engine
with open('migrations/001_add_elevation_file_record.sql') as f:
sql = f.read()
with engine.begin() as conn:
conn.execute(sql)
"
回滚计划
如需回滚,执行以下操作:
- 停止使用新的
/recordsAPI - 删除
elevation_file_record表 - 删除
elevation_apply_job.file_record_id和elevation_data_import_job.file_record_id字段 - 继续使用原有的
/datasetsAPI
注意事项
- 迁移前务必备份数据库
- 迁移过程中保留旧表,确保可以回滚
- 完全迁移完成并测试通过后,再考虑删除旧表
- 新旧 API 可以并存一段时间,逐步切换
后续清理
当确认新系统运行稳定后,可执行清理:
-- 删除旧表
DROP TABLE IF EXISTS elevation_dataset_file_meta;
DROP TABLE IF EXISTS elevation_dataset CASCADE;
-- 删除旧字段
ALTER TABLE elevation_apply_job DROP COLUMN IF EXISTS dataset_id;
ALTER TABLE elevation_data_import_job DROP COLUMN IF EXISTS dataset_id;
-- 删除兼容性视图
DROP VIEW IF EXISTS elevation_dataset_compat;