14-API覆盖清单¶
更新日期:2026-08-16 执行人:Codex 并行子代理 C 范围:
server/src/index.js+server/src/routes/*.js暴露的 HTTP 端点 smoke 覆盖核对与补测 约束:本轮仅修改server/scripts/smoke.js与新增本清单,未改动任何业务路由逻辑
1. HTTP 端点总表¶
server/src/index.js 将 5 个路由模块的 routes 合并为统一路由表。按 method + path 统计共 8 个 HTTP 端点(即 docs/05 中「7 大业务端点」的落地形态,其中 /evaluation/records 拆分为 GET 与 POST 两条路由键)。
| # | Method | Path | 用途 | smoke 用例 | 覆盖状态 |
|---|---|---|---|---|---|
| 1 | POST | /auth/login |
三端登录,返回 mock token | POST /auth/login |
✅ 已覆盖 |
| 2 | GET | /me |
当前用户 + 权限列表 | GET /me |
✅ 已覆盖 |
| 3 | GET | /dashboard/summary |
首页驾驶舱汇总 | GET /dashboard/summary |
✅ 已覆盖 |
| 4 | GET | /evaluation/dimensions |
五维评价维度 | GET /evaluation/dimensions |
✅ 已覆盖 |
| 5 | GET | /evaluation/records |
查询评价记录(分页/过滤) | GET /evaluation/records |
✅ 已覆盖 |
| 6 | POST | /evaluation/records |
提交评价记录 | POST /evaluation/records |
✅ 已覆盖 |
| 7 | GET | /students |
学生列表(分页/过滤) | GET /students |
✅ 已覆盖 |
| 8 | GET | /reports/term |
学期报告单 | GET /reports/term |
✅ 已覆盖 |
2. 辅助 HTTP 行为¶
除业务路由外,server/src/index.js 还暴露以下全局行为,本轮同步补充 smoke 用例:
| 行为 | 说明 | smoke 用例 | 结果 |
|---|---|---|---|
| OPTIONS 预检 | 所有请求先经过 CORS 预检分支,统一返回 204 |
OPTIONS /api/auth/login |
✅ PASS |
| 未注册路由 | /api 下未注册路径统一返回 404 NOT_FOUND |
GET /api/not-registered-route |
✅ PASS |
3. 覆盖统计¶
- 端点总数:8
- 已覆盖:8
- 缺失:0
- smoke 用例总数:10(8 个业务端点 + 2 个辅助行为)
- 覆盖自检:
smoke.js已内置「路由表 ↔ smoke 用例」自动核对,后续新增路由而未补 smoke 时会直接 FAIL
4. 运行结果¶
在 server 目录执行:
node scripts/check.js
CHECK_JS: 12/12 passed
CHECK_SCHEMA: ok
CHECK_POINTS: 30
CHECK_RESULT: all passed
node scripts/smoke.js
PASS POST /auth/login
PASS GET /me
PASS GET /dashboard/summary
PASS GET /evaluation/dimensions
PASS GET /evaluation/records
PASS POST /evaluation/records
PASS GET /students
PASS GET /reports/term
PASS OPTIONS /api/auth/login
PASS GET /api/not-registered-route
SMOKE_COVERAGE: 8/8 endpoints covered
SMOKE_RESULT: 10/10 passed
5. 疑似问题记录(仅记录,未修改)¶
以下为对照 docs/05-API契约.md 权限矩阵时发现的疑似偏差,按约定只记录、不改动:
server/src/routes/students.js:GET /students对teacher未按「仅本班」过滤,partner也可读取全部学生;契约要求 teacher 仅本班、partner 禁止访问。server/src/routes/evaluation.js:GET /evaluation/records对teacher未按班级过滤;POST /evaluation/records的createRecord仅校验角色可写,未校验 teacher 是否为本班教师。server/src/routes/reports.js:GET /reports/term仅requireUser,未校验角色权限与学生归属关系;契约中partner为 ❌,且学生/家长应只能查自己/自己孩子的报告。server/src/routes/auth.js:POST /auth/login对不存在的identifier返回404 USER_NOT_FOUND,契约还定义401 INVALID_CREDENTIALS、403 NOT_APPROVED、429 TOO_MANY_ATTEMPTS,当前 Mock 未实现;platform/accountType未参与校验。server/src/index.js:decodeURIComponent(url.pathname)位于业务try/catch之外,畸形百分号编码可能抛出URIError而未按 JSON 错误格式返回(低优先级健壮性问题)。
6. 结论¶
当前 8 个已暴露 HTTP 端点均有 smoke 覆盖,覆盖率为 8/8;check.js 与 smoke.js 均通过。覆盖自检已固化进 smoke.js,可防止后续新增端点漏测。业务路由逻辑与上述疑似权限偏差未在本轮改动。