- Expand location hierarchy in draft_board.md to 72 items across all systems - Update ST-01/ST-02/XH-01/XH-02/XH-03/Xihe wiki pages (zh + en) - Update log_book.xlsx state node detail data for XH-01 and ST-01 missions Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
11 KiB
11 KiB
KSP管理后台 — 重新设计 Todo
处理顺序
- Asset 面板 — 已讨论,结论归档
- 任务日志新增界面 — 已讨论
- 任务日志编辑界面 — 已讨论
- 地点板 — 已讨论,demo 完成
- 时间线 — 已讨论
- 任务资产目录 — 已讨论
- 数据中心 — 已讨论,保持现状
1. Asset 面板
展示信息
- Asset 名称、类别、日志数量、当前状态(是否退役)、当前所属任务
- 当前位置:从日志的
location字段根据当前模拟时间派生(LEO / GEO / Solar Orbit / Mars Orbit 等),不可直接编辑 - 对接载具列表:哪些载具当前对接到了此 Asset 上(时间敏感,随 simulation_time 变化)
- 对接目标:当前 Asset 对接到了哪个母 Asset 上
- 日志列表:分页呈现,支持筛选
- Upcoming events:当前模拟时间之后的未来事件
全局功能(共享)
- 调节当前时间:顶部栏全局控件,修改后写入 DB,所有页面按新时间重新计算
Asset 基础编辑
- 修改 Asset 名称
- 修改 Asset 类别
- 修改 Asset 状态(是否退役)
新增对接载具
输入信息:
- 对接时间(默认使用当前模拟时间,用户可修改)
- 对接载具:
- 分支 A:从已有 Asset 库中选择(记为 selected_asset)
- 分支 B:用户输入一个字符串(用于未入库的载具,如 "Echo Shuttle")
- 备注信息(用户输入,可为空)
保存时自动操作日志(分支 A — selected_asset): 对当前 Asset 和 selected_asset 双方都执行:
- 检查是否存在一条日志(state interval),其时间段涵盖了对接时间点:
- 存在 → 在该日志下新增一个 state node:
- Title: "XXX 对接到 YYY"
- Node Detail: 备注信息
- Node At: 对接时间
- 不存在 → 新增一条日志(state interval):
- Start At: 对接时间
- End At: 留空(表示该对接状态持续进行中)
- 在该日志下新增一个 state node(内容同上)
- 存在 → 在该日志下新增一个 state node:
保存时自动操作日志(分支 B — 用户输入字符串): 仅对当前 Asset 执行上述操作。用户输入的字符串仅用于当前 Asset 的日志内容。
移除对接载具
输入信息:
- 选择某个已对接的载具
- 分离时间(默认使用当前模拟时间,用户可修改)
- 备注信息(用户输入,可为空)
保存时自动操作日志(之前是 selected_asset 的情况): 对当前 Asset 和 selected_asset 双方都执行:
- 检查是否存在一条日志:其 Start At 等于该 selected_asset 对接到当前 Asset 的时间,且 End At 为空:
- 存在 → 新增一个 state node 记录分离事件,分离时间设为该日志的 End At。结束
- 如不存在,检查是否存在一条日志,其时间段涵盖了分离时间点:
- 存在 → 新增 state node:Title "XXX 从 YYY 分离",Node Detail 备注信息,Node At 分离时间
- 如以上都不存在 → 新增一个 event point,记录分离信息
保存时自动操作日志(之前是用户输入字符串的情况): 仅对当前 Asset 执行上述操作。
数据库新增
docking_events表:parent_asset_id, child_asset_id (nullable), child_label (nullable), docked_at, undocked_at, dock_note, undock_note
设计约束
- Location 不可直接编辑,只能通过修改日志来修正
- 对接关系是时间敏感的(随 simulation_time 变化)
2. 任务日志新增界面
字段(与现有保持一致)
Entry Type / Title / Start At / End At / Location / State Label / Mission Label / Summary / Note / State Nodes
改进点
- State node 按时间自动排序:后端渲染 + JS 插入均按
at_time升序 - 保存成功:跳转到目标页后顶部展示 toast 样式 flash 消息
- 保存失败:弹出 validation dialog,高亮异常字段,不清空已填写的表单内容
3. 任务日志编辑界面
同新增界面,共用 asset_entry_form.html,多一个删除按钮。无额外需求。
4. 地点板
布局
- 左侧/居中:大型可交互 Canvas 星图
- 右侧 320px 信息面板:Scope / Assets in Scope / Ongoing Missions / Upcoming Events
- 顶部栏:全局模拟时间控件(共享组件)
星图交互
- 初始 view:太阳系全貌,太阳居中,八大行星 + Ceres + Vesta + 冥王星按内→外顺序排列
- 点击层级(面包屑式导航):
- Solar System → 行星系(如 Earth System 含月球轨道)→ 单天体
- 点击有卫星的行星 → 行星系(planet_system),显示所有卫星轨道
- 再次点击同一行星 → 单天体视图(single_body)
- 点击太阳或卫星 → 直接进入单天体视图
- 返回:← Back 按钮回退到上一层
- 拖拽平移:阈值 6px 以上才进入拖拽模式,避免误触
- 滚轮缩放:0.3x ~ 4x
天体渲染
- 天体纹理:使用真实 NASA/航天器照片纹理(从 Solar System Scope + NASA 下载)
- 3D 球体着色:光照高光 + 暗面阴影 + 大气边缘辉光
- 土星附加光环椭圆
- 星空背景:800 颗随机恒星,含亮星点缀
- 两种渲染模式切换:Flat(简化渐变球体)/ Realistic(真实纹理 + 全效果)
轨道计算
- 基于 JPL Keplerian 轨道根数(J2000 历元),解 Kepler 方程计算真实日心位置
- 显示缩放公式:
displayDist = dist^0.4 × 100(非比例尺,保证内行星可见) - 画布坐标系 Y 轴取反(Canvas Y↓ → 实际 Y↑),实现逆时针旋转
- 模拟时间变动时,天体位置平滑动画过渡(requestAnimationFrame + 缓动)
卫星数据
- 来源:项目
user_input/RSSKopernicus/文件目录 - 已收录:木星 4 颗(Io, Europa, Ganymede, Callisto)、土星 7 颗(Mimas, Enceladus, Tethys, Dione, Rhea, Titan, Iapetus)、天王星 5 颗(Miranda, Ariel, Umbriel, Titania, Oberon)、海王星 1 颗(Triton)、火星 2 颗(Phobos, Deimos)、冥王星 1 颗(Charon)、地球 1 颗(Moon)
- 卫星数据扁平化存入
BD顶层字典,支持BD['io']直接查找
技术实现(后端集成参考)
- Demo 文件:
demo/location_board_demo.html - 纹理文件:
demo/textures/(sun, mercury, venus, earth, mars, jupiter, saturn, uranus, neptune, pluto, moon, io) - 设计系统:OLED 深色主题(
#0B0B10背景),Fira Code + 系统 sans-serif 字体栈
5. 时间线
交互
- 只读视图(不直接在时间线上拖拽编辑)
- 滚轮缩放 + 拖拽导航,无整页刷新
筛选系统(重新设计)
布局: 顶部横向筛选条
- 搜索栏 — 实时过滤资产名称,输入时下方标签同步收缩
- 快速预设 —
Active only/This Month/Next 90d/All一键切换 - 分类下拉:
- Type: All / Exploration Mothership / Space Shuttle / Station / Base / Cargo Ship
- Location: All / Earth System / Mars System / Jupiter System / Saturn System / Transfer
- State: All / Transfer / Docked / Maintenance / Exploration / Surface Ops
- 日期范围 — start/end 输入 + 快捷预设(Last 30d / This Year / Next Year / Custom)
- 资产标签条 — 横向 pill 标签(checkbox),选中计数 + Select All / Clear
视觉风格
- 待高保真设计阶段统一处理
6. 任务资产目录
布局
- 保留表格布局
- 顶部:操作按钮 + 筛选栏
- 表头可点击排序(Name / Type / Location / Entries / Updated)
筛选栏
[+ New Asset] [Import Log Book]
🔍 Search... Location: [All ▾] Type: [All ▾]
Sort: [Name ▾] ☐ Hide retired
- 搜索:文本匹配 name / type / program / home_region
- Location 下拉:分层级,选父级匹配所有子集(见 Location 体系)
- Type 下拉:All / Exploration Mothership / Space Shuttle / Station / Base / Cargo Ship
- Sort:Name / Type / Location / Entries / Updated,表头点击切换
- 退役开关:☐ Hide retired,默认隐藏
技术
- DB 级筛选(不在应用层加载全量)
- 分页保持现有分页逻辑
7. Location 分层体系
对标地点板 scope,Location 从自由文本改为结构化选项。日志 location 字段后续应改为从选项中选择。
完整层级(基于 RSSKopernicus 数据,含所有固体天体 surface)
Solar System
├── Mercury System
│ ├── Mercury Orbit Mercury Surface
├── Venus System
│ ├── Venus Orbit Venus Surface
├── Earth System
│ ├── LEO (Low Earth Orbit)
│ ├── GEO/MEO (Geostationary/Medium Earth Orbit)
│ ├── Lunar Orbit Lunar Surface
│ └── Earth Surface
├── Mars System
│ ├── Mars Orbit Mars Surface
│ ├── Phobos Orbit Phobos Surface
│ └── Deimos Orbit Deimos Surface
├── Ceres Orbit Ceres Surface
├── Vesta Orbit Vesta Surface
├── Jupiter System
│ ├── Jupiter Orbit (gas giant, no surface)
│ ├── Io Orbit Io Surface
│ ├── Europa Orbit Europa Surface
│ ├── Ganymede Orbit Ganymede Surface
│ └── Callisto Orbit Callisto Surface
├── Saturn System
│ ├── Saturn Orbit (gas giant, no surface)
│ ├── Mimas Orbit Mimas Surface
│ ├── Enceladus Orbit Enceladus Surface
│ ├── Tethys Orbit Tethys Surface
│ ├── Dione Orbit Dione Surface
│ ├── Rhea Orbit Rhea Surface
│ ├── Titan Orbit Titan Surface
│ └── Iapetus Orbit Iapetus Surface
├── Uranus System
│ ├── Uranus Orbit (ice giant, no surface)
│ ├── Miranda Orbit Miranda Surface
│ ├── Ariel Orbit Ariel Surface
│ ├── Umbriel Orbit Umbriel Surface
│ ├── Titania Orbit Titania Surface
│ └── Oberon Orbit Oberon Surface
├── Neptune System
│ ├── Neptune Orbit (ice giant, no surface)
│ └── Triton Orbit Triton Surface
├── Pluto System
│ ├── Pluto Orbit Pluto Surface
│ └── Charon Orbit Charon Surface
├── Solar Orbit
└── Transfer (interplanetary transit)
筛选规则
- 选父级 → 匹配所有子集(如 "Earth System" 含 LEO, GEO, Lunar Orbit, Lunar Surface, Earth Surface)
- 选子级 → 精确匹配
8. 数据中心
保持现有结构和功能不变。包含四个参考数据表:
| 页面 | 模型 | 排序 | 筛选 |
|---|---|---|---|
| /engines | EngineFamily + Variants | 表头点击(6列升降序) | q + fuel + cycle + mod |
| /communications | CommunicationPart | 下拉(名称/距离/质量) | q + source + type |
| /tanks | TankSpec | 下拉(名称/容积/质量比) | q + fuel + source |
| /vehicles | VehicleCost | 下拉(名称/成本) | q + source |
有详情页的仅 Engines。其他三个无详情页。复合修改、删除功能。 待高保真阶段统一设计时考虑布局统一(表头点击排序推至全部四页)。