5.1 KiB
5.1 KiB
恒星系统架构改造 - 进度报告
✅ 已完成工作
1. 数据库架构改造
- ✅ 创建
star_systems表 - ✅ 添加太阳系初始记录(id=1)
- ✅ 扩展
celestial_bodies表(添加system_id字段) - ✅ 更新所有太阳系天体
system_id = 1(30个天体)
2. ORM 模型
- ✅ 创建
StarSystemORM 模型 - ✅ 更新
CelestialBodyORM 模型(添加 system_id 关系) - ✅ 在
__init__.py中注册 StarSystem
3. 数据迁移
- ✅ 编写完整的数据迁移脚本(
scripts/migrate_interstellar_data.py) - ✅ 实现自动中文名翻译功能
- ✅ 实现行星数据去重逻辑
- ✅ 成功迁移 578 个系外恒星系统
- ✅ 成功迁移 898 颗系外行星(去重后)
4. 后端服务层
-
✅ 创建
StarSystemService(app/services/star_system_service.py)- 支持 CRUD 操作
- 支持搜索和分页
- 支持获取恒星系及其所有天体
- 支持统计功能
-
✅ 创建 Pydantic 模型(
app/models/star_system.py)- StarSystemBase
- StarSystemCreate
- StarSystemUpdate
- StarSystemResponse
- StarSystemWithBodies
- StarSystemStatistics
5. 迁移数据统计
恒星系统总数: 579
- 太阳系: 1
- 系外恒星系: 578
天体总数: 928
- 太阳系天体: 30(含太阳、行星、矮行星、卫星、探测器、彗星)
- 系外行星: 898(已去重)
数据质量:
- 去重前行星记录: ~3000+
- 去重后行星记录: 898
- 去重率: ~70%
🚧 剩余工作
1. 后端 API 开发
-
创建 StarSystem API 路由
- GET /api/star-systems(获取所有恒星系统)
- GET /api/star-systems/{id}(获取单个恒星系统)
- GET /api/star-systems/{id}/bodies(获取恒星系及其天体)
- POST /api/admin/star-systems(创建恒星系统)
- PUT /api/admin/star-systems/{id}(更新恒星系统)
- DELETE /api/admin/star-systems/{id}(删除恒星系统)
- GET /api/star-systems/statistics(获取统计信息)
-
更新 CelestialBody API
- 添加
system_id查询参数 - 添加
include_no_system参数(用于包含探测器等)
- 添加
2. 后台管理界面(Admin Frontend)
-
创建恒星系统管理页面(
/admin/star-systems)- 列表展示(支持搜索、分页)
- 新增恒星系统
- 编辑恒星系统
- 删除恒星系统(不可删除太阳系)
- 查看恒星系详情(含所有行星)
-
改造天体管理页面(
/admin/celestial-bodies)- 关键改动:先选择恒星系,再列出该恒星系的天体
- 添加恒星系选择器(下拉框)
- 根据选中的恒星系过滤天体列表
- 新增天体时自动设置
system_id - 支持在恒星系之间移动天体
3. 前端界面更新
-
更新 GalaxyScene 组件
- 使用新的
/api/star-systemsAPI - 移除前端行星去重代码
- 优化恒星点击事件(使用后端返回的完整数据)
- 使用新的
-
更新 App.tsx 查询逻辑
- Solar 视图:查询
system_id=1的天体 - Galaxy 视图:查询所有恒星系统
- Solar 视图:查询
4. 菜单配置
- 在后台管理菜单中添加"恒星系统管理"入口
📊 数据模型关系图
star_systems (579条记录)
├── id=1: Solar System (太阳系)
│ └── celestial_bodies (30条)
│ ├── Sun (star)
│ ├── Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune (planet)
│ ├── Pluto, Ceres, Haumea, Makemake, Eris (dwarf_planet)
│ ├── Moon, Io, Europa, Ganymede, Callisto (satellite)
│ ├── Voyager 1, Voyager 2, Parker Solar Probe... (probe)
│ └── Halley, NEOWISE, C/2020 F3 (comet)
│
├── id=2: Proxima Cen System (比邻星系统)
│ └── celestial_bodies (2条)
│ ├── Proxima Cen b (比邻星 b)
│ └── Proxima Cen d (比邻星 d)
│
├── id=3: TRAPPIST-1 System
│ └── celestial_bodies (7条)
│ └── TRAPPIST-1 b/c/d/e/f/g/h
│
└── ... (575 more systems)
🎯 下一步行动
立即可做:
- 完成 StarSystem API 路由
- 测试 API 端点
- 开发后台管理界面
预计工作量:
- 后端 API:1-2小时
- 后台界面:3-4小时
- 前端更新:1-2小时
- 测试验证:1小时
总计:6-9小时
🔧 技术要点
中文名翻译规则
# 恒星名翻译示例
Proxima Cen → 比邻星
Kepler-442 → 开普勒-442
TRAPPIST-1 → TRAPPIST-1
HD 40307 → HD 40307
# 行星名翻译示例
Proxima Cen b → 比邻星 b
Kepler-442 b → 开普勒-442 b
去重逻辑
- 按行星名称(name)去重
- 保留字段最完整的记录(非NULL字段最多的)
- 平均每个恒星系从5.2条记录减少到1.6条(效率提升70%)
查询优化
-- Solar 视图
SELECT * FROM celestial_bodies WHERE system_id = 1;
-- Galaxy 视图
SELECT * FROM star_systems WHERE id > 1;
-- 恒星系详情
SELECT * FROM celestial_bodies WHERE system_id = ?;
文档版本: v1.0 更新时间: 2025-12-05 19:10 状态: 数据迁移完成,API开发进行中