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:
@@ -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=volume,count=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”;否则测试计划应将其标为未实现验收项。
|
||||
Reference in New Issue
Block a user