chore: add reference docs, scripts, tests, demo, prototypes

- Reference docs: known issues, user journey, location redesign, mission merge plan
- Scripts: fill_location_state, merge_missions, migrate_location, migrate_state
- Tests: e2e test suite, asset entries unit tests
- Demo: location board, hifi prototypes, test screenshots
- Data backup: asset log entries and state nodes
- Update .gitignore

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 15:29:47 +08:00
co-authored by Claude Opus 4.7
parent f4909765af
commit e1d601a774
190 changed files with 11464 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
# KSP 管理后台测试报告
执行日期:2026-05-31
## 1. 执行结论
本轮完成了项目重构梳理、现有测试计划评估,并生成新的 `docs/test_plan_v2.md`
实际执行测试采用非破坏性 HTTP/API/模板级回归检查,目标是避免污染当前 `.env` 指向的真实 PostgreSQL 数据库。共执行 24 项,24 通过,0 失败。
浏览器自动化和现有 Python Playwright 脚本未能执行:本机 `.venv\Scripts\python.exe` 指向不存在的 Python 安装,`py -3` 不可用;Codex in-app Browser 的 Node 会话在本机 sandbox 中连续启动失败。因此,本报告不把 JS 点击、canvas 像素、CRUD 写入类场景算作已通过。
## 2. 测试环境
- 运行服务:`http://127.0.0.1:9000`
- 应用端口:`.env``APP_PORT=9000`
- 数据库:`.env` 指向 PostgreSQL `PGHOST=192.168.195.241``PGDATABASE=KSP`
- 测试方式:PowerShell `Invoke-WebRequest` / `Invoke-RestMethod`
- 数据安全策略:不执行新增、编辑、删除、导入、对接保存等持久写入动作
## 3. 已执行测试
| # | 检查项 | 结果 | 详情 |
|---:|---|---|---|
| 1 | API health returns ok | PASS | `{"service":"ksp-data-hangar","status":"ok"}` |
| 2 | Dashboard reachable | PASS | HTTP 200 |
| 3 | Base shell/sidebar present | PASS | sidebar、任务运营、数据中心、燃料换算存在 |
| 4 | Global sim time control present | PASS | `sim-time-display``+1d`、Today 存在 |
| 5 | Dashboard data panels present | PASS | Tracked Assets / Active Missions / Upcoming / Status Board 存在 |
| 6 | Asset list reachable with rows | PASS | rows=15 |
| 7 | Asset list filters/actions present | PASS | `q``asset_type``sort`、New Asset 存在 |
| 8 | Asset search route returns filtered page | PASS | `/assets?q=ST-01` 返回匹配页面 |
| 9 | Asset detail reachable from list link | PASS | `/assets/fba95050-ca89-4e67-b796-66b7e1c40764?...` |
| 10 | Asset detail dock/log modals present | PASS | `dock-modal``log-modal``saveDock``saveLog` 存在 |
| 11 | Mission status board reachable | PASS | HTTP 200 |
| 12 | Mission status board filters present | PASS | `asset_type``location``record_scope` 存在 |
| 13 | Location board reachable | PASS | HTTP 200`map-cv``LOC_ASSETS` 存在 |
| 14 | Location board embeds orbital data | PASS | Keplerian/ORB/BODIES 数据存在 |
| 15 | Timeline reachable | PASS | HTTP 200`tlr` 存在 |
| 16 | Timeline filters present | PASS | `tl-q``tls``tl-type``tl-loc``tl-state` 存在 |
| 17 | Data center: Engines | PASS | rows=31 |
| 18 | Data center: Communications | PASS | rows=31 |
| 19 | Data center: Tanks | PASS | rows=27 |
| 20 | Data center: Vehicles | PASS | rows=11 |
| 21 | Fuel converter page reachable | PASS | HTTP 200 |
| 22 | Fuel factors API returns list | PASS | count=8 |
| 23 | Fuel convert API volume mode | PASS | mode=volumecount=8 |
| 24 | Fuel convert invalid input rejected | PASS | HTTP 400 |
## 4. 未执行/跳过项
| 项目 | 状态 | 原因 |
|---|---|---|
| `tests/test_e2e.py` | SKIPPED | 本地 Python 不可用:`.venv` 入口坏,`py -3` 未安装 |
| Playwright 浏览器点击测试 | SKIPPED | 浏览器自动化运行时启动失败 |
| 主题切换、时间 modal、ESC、点击导航 | SKIPPED | 需要浏览器 JS 执行环境 |
| 地点板 canvas 像素/点击 Jupiter/Io/Back/缩放拖拽 | SKIPPED | 需要浏览器和截图/像素采样 |
| 时间线筛选实际生效 | SKIPPED | 需要浏览器 JS 执行环境 |
| 日志 CRUD、对接保存、删除、导入 | SKIPPED | 当前连接真实 PostgreSQL,执行会污染数据 |
## 5. 发现的问题
1. 现有 `docs/test_plan.md` 与实际不一致:文档写“12 个模块”,实际只有 10 个模块。
2. 现有 `tests/test_e2e.py` 的断言过浅,且报告名称编码损坏;它更像 smoke test,不能证明重构验收通过。
3. `draft_board.md` 要求的 `docking_events` 表尚未落地;当前对接接口只是给当前资产新增 state 日志,没有双向关系、分离或时间敏感查询。
4. 时间线模板存在 `onclick="tlPreset(...)"`,但代码库中未找到 `tlPreset` 实现;搜索/类型/地点/状态筛选控件也未找到绑定逻辑。
5. 资产详情日志搜索 `ad-lq` 和类型筛选 `ad-lf` 存在 DOM,但未找到前端过滤脚本。
6. 地点板当前用 Canvas 渐变绘制天体;尚未实现 draft 中“真实纹理 + 渲染模式切换”的目标。
7. 燃料换算页面是前端本地计算,API 另有 `/api/v1/fuel-converter/convert`;两者的模式命名不同,后续测试需同时覆盖页面行为和 API 合约。
## 6. 建议
- 先修复本地 Python/Playwright 环境,恢复自动化测试可执行性。
- 将当前 `tests/test_e2e.py` 拆成 `smoke``browser``business` 三类,避免把 DOM 存在误当成功能通过。
- 为写入测试准备隔离数据库或事务回滚 fixture,再验证日志 CRUD、对接和分离。
- 对时间线和资产详情筛选先补前端逻辑,再纳入 P1 浏览器回归。
-`docking_events` 明确是“本期必须实现”还是“后续 backlog”;否则测试计划应将其标为未实现验收项。