- 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>
270 lines
11 KiB
Markdown
270 lines
11 KiB
Markdown
# 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 node:Title "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。其他三个无详情页。复合修改、删除功能。
|
||
待高保真阶段统一设计时考虑布局统一(表头点击排序推至全部四页)。
|