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