- 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>
5.1 KiB
5.1 KiB
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指向 PostgreSQLPGHOST=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. 发现的问题
- 现有
docs/test_plan.md与实际不一致:文档写“12 个模块”,实际只有 10 个模块。 - 现有
tests/test_e2e.py的断言过浅,且报告名称编码损坏;它更像 smoke test,不能证明重构验收通过。 draft_board.md要求的docking_events表尚未落地;当前对接接口只是给当前资产新增 state 日志,没有双向关系、分离或时间敏感查询。- 时间线模板存在
onclick="tlPreset(...)",但代码库中未找到tlPreset实现;搜索/类型/地点/状态筛选控件也未找到绑定逻辑。 - 资产详情日志搜索
ad-lq和类型筛选ad-lf存在 DOM,但未找到前端过滤脚本。 - 地点板当前用 Canvas 渐变绘制天体;尚未实现 draft 中“真实纹理 + 渲染模式切换”的目标。
- 燃料换算页面是前端本地计算,API 另有
/api/v1/fuel-converter/convert;两者的模式命名不同,后续测试需同时覆盖页面行为和 API 合约。
6. 建议
- 先修复本地 Python/Playwright 环境,恢复自动化测试可执行性。
- 将当前
tests/test_e2e.py拆成smoke、browser、business三类,避免把 DOM 存在误当成功能通过。 - 为写入测试准备隔离数据库或事务回滚 fixture,再验证日志 CRUD、对接和分离。
- 对时间线和资产详情筛选先补前端逻辑,再纳入 P1 浏览器回归。
- 对
docking_events明确是“本期必须实现”还是“后续 backlog”;否则测试计划应将其标为未实现验收项。