Files
KSP_project/docs/test_report.md
T
ArmorandClaude Opus 4.7 e1d601a774 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>
2026-06-01 15:29:47 +08:00

78 lines
5.1 KiB
Markdown
Raw 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 管理后台测试报告
执行日期: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”;否则测试计划应将其标为未实现验收项。