cosmo/IMPLEMENTATION_PLAN.md

3.4 KiB
Raw Blame History

Cosmo 实施计划

Stage 1: 后端基础框架和数据获取

Goal: 搭建 FastAPI 后端,实现从 NASA JPL Horizons 获取数据 Success Criteria:

  • FastAPI 服务器成功启动
  • 能够查询并返回探测器和行星的坐标数据
  • API 端点返回正确的 JSON 格式数据

Tests:

  • 手动测试 API 端点 /api/celestial/positions
  • 验证返回的坐标数据格式正确
  • 测试时间范围查询功能

Status: Complete

Tasks:

  • 创建后端项目结构
  • 配置 FastAPI 和依赖
  • 实现 Horizons 数据查询服务
  • 实现 API 路由
  • 测试数据获取功能

Stage 2: 前端基础框架和简单 3D 场景

Goal: 搭建 React + Three.js 前端,显示基础 3D 场景 Success Criteria:

  • Vite + React + TypeScript 项目成功运行
  • Three.js 场景正确渲染
  • 显示太阳(中心)和几个彩色球体代表行星

Tests:

  • 前端开发服务器启动无错误
  • 浏览器中能看到 3D 场景
  • 鼠标可以旋转和缩放视角

Status: Complete

Tasks:

  • 创建 React + Vite 项目
  • 配置 TypeScript 和 Tailwind
  • 安装 Three.js 相关依赖
  • 实现基础 3D 场景组件
  • 添加 OrbitControls

Stage 3: 集成真实数据和轨道线

Goal: 前后端集成,使用真实 NASA 数据更新 3D 场景 Success Criteria:

  • 前端成功调用后端 API
  • 行星和探测器显示在正确的位置(基于真实数据)
  • 显示探测器的轨道线

Tests:

  • 验证行星位置与 NASA 数据一致
  • 轨道线平滑连续
  • 时间选择器改变时数据正确更新

Status: Complete

Tasks:

  • 实现前端 API 调用
  • 创建数据 hooks
  • 根据真实坐标渲染天体
  • 实现轨道线绘制
  • 添加时间选择器组件

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. 所有提交必须通过基本测试