cosmo/IMPLEMENTATION_PLAN.md

139 lines
3.4 KiB
Markdown
Raw Normal View History

# Cosmo 实施计划
## Stage 1: 后端基础框架和数据获取
**Goal**: 搭建 FastAPI 后端,实现从 NASA JPL Horizons 获取数据
**Success Criteria**:
- FastAPI 服务器成功启动
- 能够查询并返回探测器和行星的坐标数据
- API 端点返回正确的 JSON 格式数据
**Tests**:
- 手动测试 API 端点 `/api/celestial/positions`
- 验证返回的坐标数据格式正确
- 测试时间范围查询功能
**Status**: Complete
**Tasks**:
- [x] 创建后端项目结构
- [x] 配置 FastAPI 和依赖
- [x] 实现 Horizons 数据查询服务
- [x] 实现 API 路由
- [x] 测试数据获取功能
---
## Stage 2: 前端基础框架和简单 3D 场景
**Goal**: 搭建 React + Three.js 前端,显示基础 3D 场景
**Success Criteria**:
- Vite + React + TypeScript 项目成功运行
- Three.js 场景正确渲染
- 显示太阳(中心)和几个彩色球体代表行星
**Tests**:
- 前端开发服务器启动无错误
- 浏览器中能看到 3D 场景
- 鼠标可以旋转和缩放视角
**Status**: Complete
**Tasks**:
- [x] 创建 React + Vite 项目
- [x] 配置 TypeScript 和 Tailwind
- [x] 安装 Three.js 相关依赖
- [x] 实现基础 3D 场景组件
- [x] 添加 OrbitControls
---
## Stage 3: 集成真实数据和轨道线
**Goal**: 前后端集成,使用真实 NASA 数据更新 3D 场景
**Success Criteria**:
- 前端成功调用后端 API
- 行星和探测器显示在正确的位置(基于真实数据)
- 显示探测器的轨道线
**Tests**:
- 验证行星位置与 NASA 数据一致
- 轨道线平滑连续
- 时间选择器改变时数据正确更新
**Status**: Complete
**Tasks**:
- [x] 实现前端 API 调用
- [x] 创建数据 hooks
- [x] 根据真实坐标渲染天体
- [ ] 实现轨道线绘制
- [ ] 添加时间选择器组件
---
## Stage 4: 进阶交互和信息面板
**Goal**: 实现点击聚焦和信息展示功能
**Success Criteria**:
- 点击天体后相机平滑飞向目标
- 显示天体详细信息面板
- 计算并显示探测器与最近行星的距离
**Tests**:
- 点击不同天体,相机正确聚焦
- 信息面板显示正确数据
- 距离计算准确
**Status**: Not Started
**Tasks**:
- [ ] 实现 3D 物体点击检测Raycaster
- [ ] 实现相机平滑动画
- [ ] 创建信息面板组件
- [ ] 实现距离计算逻辑
- [ ] 添加天体列表侧边栏
---
## Stage 5: 视觉优化和模型加载
**Goal**: 加载真实纹理和 3D 模型,优化视觉效果
**Success Criteria**:
- 行星显示真实纹理贴图
- 探测器使用 NASA 3D 模型
- 动态缩放功能正常工作
- 添加星空背景
**Tests**:
- 纹理正确加载并渲染
- 3D 模型显示正常
- 远近缩放时物体大小合理
- 整体视觉效果良好
**Status**: Not Started
**Tasks**:
- [ ] 下载并配置行星纹理
- [ ] 下载并配置探测器 3D 模型
- [ ] 实现 GLTFLoader 加载模型
- [ ] 实现动态缩放逻辑
- [ ] 添加星空背景Skybox
- [ ] 性能优化
---
## 进度跟踪
- **当前阶段**: Stage 3 (基本完成)
- **已完成**: 2/5 阶段 (Stage 1 & 2 完全完成Stage 3 大部分完成)
- **预计完成时间**: 待定
**下一步**:
- 实现轨道线绘制
- 添加时间选择器组件
- 进阶交互功能 (Stage 4)
- 视觉优化 (Stage 5)
## 注意事项
1. 每个阶段完成后必须确保代码能编译和运行
2. 遵循增量开发,不要跳跃阶段
3. 遇到问题最多尝试3次然后调整方案
4. 所有提交必须通过基本测试