Blame

7d667a Harry 2026-10-03 11:43:40
docs: record frontend-backend consistency and mark earlier plans
1
# 前后端功能与数据一致性检查(2026-10-03)
2
3
## 完成标准
4
5
按业务能力核对,不以接口数量代替功能完成。每项能力分别记录:
6
7
| 核对项 | 完成要求 |
8
|---|---|
9
| 后端 | 新增、读取、修改、删除或归档等适用操作可用;权限、状态转换、持久化和回读一致。并非每项业务都必须支持物理删除。 |
10
| 前端 | 决定向用户开放的操作具备入口、表单、列表或详情、提交反馈和错误处理;内部专用能力可不开放,但须明确标记。 |
11
| 前后端契约 | 前端调用的函数、请求字段、必填项、成功响应字段和失败分支与后端一致。 |
12
| 测试站闭环 | 用隔离的 QA 数据验证操作、回读及清理或归档;Schemathesis 验证请求和响应契约。 |
13
14
## 2026-10-03 核对结果
15
16
| 范围 | 结果 |
17
|---|---|
18
| 当前本地 ERP 源码 | 214 个后端云函数与 OpenAPI 清单一一对应;前端调用 192 个函数,均能找到后端契约。 |
19
| 前端参数 | 169 处显式请求对象经静态检查,字段名及可确定的必填项符合 OpenAPI;变量和展开对象仍须由流程测试验证。 |
20
| 测试站读取接口 | Schemathesis 分别执行 30 个示例请求和 30 个生成请求;两组均仅在 `getPayrollMonthlyLedger` 发现响应契约失败。其余请求符合其声明的状态码、内容类型和响应结构;部分请求返回预期的 400 或 404,不能据此认定业务数据完整。 |
21
| 测试站 CRUD | 临时组织单元完成新增、回读、修改、回读、删除、删除后回读;六步成功,QA 记录已清理。 |
22
| 版本差异 | 测试站 OpenAPI 有 215 个接口,本地源码有 214 个;测试站多 `getMileageBonusList`。跨版本计数不能直接作为功能缺口。 |
23
24
### 已确认并在本地修正的两处不一致
25
26
1. `getPayrollMonthlyLedger` 在月份尚无已保存工资批次时返回未持久化期间,该期间没有 `id`。原契约和前端类型却要求 `id`。本地已把请求统一为 `code`,允许此响应缺少 `id`,并让前端月度工资表类型反映这一状态;测试站尚未发布修正。
27
2. 旧附件组件仍调用后端已停用且固定拒绝的 `logFileAccess`,并忽略错误。本地已移除该调用;附件的现行受保护访问入口由 `getEmployeeStorageAccess` 在签名时记录查看或下载。本组件目前未被业务页面引用。
28
29
已加入自动门禁:前端函数名与后端注册清单一致;动态选择的云函数也纳入检查;前端不得调用标记停用的接口;显式请求字段按 OpenAPI 比对;未保存月度工资期间的响应有专门契约测试。本地完整测试:后端 287 通过、8 跳过,前端 511 通过;代码检查和构建通过。上述本地修正尚未发布到测试站。
30
31
## 仅后端存在、当前前端未调用的 22 个接口
32
33
这些是**代码对比事实**,不自动等于应向最终用户开放。逐项决定“用户可见 / 内部专用 / 停用”后,再按完成标准验收。
34
35
| 领域 | 接口 |
36
|---|---|
37
| 人事与组织(11) | `assignOrganizationEmployee`、`attachEmployeeContract`、`backfillEmployeeIdentifiers`、`backfillEmployeeSourceLinks`、`backfillOrganizationFromEmployees`、`endEmployeeAssignment`、`getEmployeeSourceTrace`、`getHrReadiness`、`mapEmployeeIdentity`、`saveOrganizationTransfer`、`transferOrganizationEmployee` |
38
| 财务(4) | `closeFinancePeriod`、`getFinanceCases`、`getTrialBalance`、`previewPayrollJournal` |
39
| 考勤(3) | `confirmAttendanceDay`、`getAttendanceSummaryList`、`rebuildAttendanceSummaries` |
40
| 奖惩(2) | `saveAwardPunishmentEntry`、`saveAwardPunishmentPlan` |
41
| 其他(2) | `importDriverProfileAssets`、已停用的 `logFileAccess` |
42
43
`getHrReadiness` 与 `getEmployeeSourceTrace` 在应用说明中已明确为仅有云函数、界面未接入。其余接口的用户可见性需结合当前业务流程决定。原有[早期角色规划](Home#早期角色规划)、[早期场景规划](Home#早期场景规划)及[早期用例规划](Home#早期用例规划)仅作历史参考。