Files
KSP_project/draft_board.md
ArmorandClaude Opus 4.7 f4909765af docs: update wiki pages, draft board location hierarchy, log book data
- 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>
2026-06-01 15:29:18 +08:00

270 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# KSP管理后台 — 重新设计 Todo
## 处理顺序
1. [x] Asset 面板 — 已讨论,结论归档
2. [x] 任务日志新增界面 — 已讨论
3. [x] 任务日志编辑界面 — 已讨论
4. [x] 地点板 — 已讨论,demo 完成
5. [x] 时间线 — 已讨论
6. [x] 任务资产目录 — 已讨论
7. [x] 数据中心 — 已讨论,保持现状
---
## 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 **双方**都执行:
1. 检查是否存在一条日志(state interval),其时间段涵盖了对接时间点:
- **存在** → 在该日志下新增一个 state node:
- Title: "XXX 对接到 YYY"
- Node Detail: 备注信息
- Node At: 对接时间
- **不存在** → 新增一条日志(state interval):
- Start At: 对接时间
- End At: 留空(表示该对接状态持续进行中)
- 在该日志下新增一个 state node(内容同上)
**保存时自动操作日志(分支 B — 用户输入字符串):**
仅对当前 Asset 执行上述操作。用户输入的字符串仅用于当前 Asset 的日志内容。
### 移除对接载具
**输入信息:**
- 选择某个已对接的载具
- 分离时间(默认使用当前模拟时间,用户可修改)
- 备注信息(用户输入,可为空)
**保存时自动操作日志(之前是 selected_asset 的情况):**
对当前 Asset 和 selected_asset **双方**都执行:
1. 检查是否存在一条日志:其 Start At 等于该 selected_asset 对接到当前 Asset 的时间,且 End At 为空:
- **存在** → 新增一个 state node 记录分离事件,分离时间设为该日志的 End At。结束
2. 如不存在,检查是否存在一条日志,其时间段涵盖了分离时间点:
- **存在** → 新增 state nodeTitle "XXX 从 YYY 分离"Node Detail 备注信息,Node At 分离时间
3. 如以上都不存在 → 新增一个 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
### 改进点
1. **State node 按时间自动排序**:后端渲染 + JS 插入均按 `at_time` 升序
2. **保存成功**:跳转到目标页后顶部展示 toast 样式 flash 消息
3. **保存失败**:弹出 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. 时间线
### 交互
- 只读视图(不直接在时间线上拖拽编辑)
- 滚轮缩放 + 拖拽导航,无整页刷新
### 筛选系统(重新设计)
**布局:** 顶部横向筛选条
1. **搜索栏** — 实时过滤资产名称,输入时下方标签同步收缩
2. **快速预设**`Active only` / `This Month` / `Next 90d` / `All` 一键切换
3. **分类下拉**
- 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
4. **日期范围** — start/end 输入 + 快捷预设(Last 30d / This Year / Next Year / Custom
5. **资产标签条** — 横向 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。其他三个无详情页。复合修改、删除功能。
待高保真阶段统一设计时考虑布局统一(表头点击排序推至全部四页)。