Skip to content

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,可防止后续新增端点漏测。业务路由逻辑与上述疑似权限偏差未在本轮改动。