Skip to content

WordForge 客户端 × 后端契约对齐审计报告(第五轮 · M2-Q3 终版)

审计时间:2026-05-22 后端仓库/Users/liji/english/wordforge(branch feat/v1-m1iOS 客户端/Users/liji/WordForge-App(branch mainWeb 前端/Users/liji/english/wordforge/admin-ui审计范围:M1 阶段变更(M0-C5 410 端点、M1-G1 GDPR 导出、M1-G3 feedback 扩展字段、M1-A7 queryClient 清理) 判定方式:交叉验证 0 P0 + 0 P1、字段级一致、类型检查通过


1. 历轮遗留(继承基线)

  • 第三轮(2026-05-19):3 P0 + 9 P1 全部落地修复
  • 第四轮(2026-05-21):P1-W1 WordState wire lowercase + 5 处 P2 文档全修,0 P0 / 0 P1

2. 本轮审计范围(M1 阶段变更)

变更commit / task范围
/api/v1/* 全部返回 410 Gonecommit be7f46b (M0-C5)后端 v1.rs + 前端契约
GDPR Article 20 数据导出端点M1-G1后端 GET /api/users/me/export
feedback_items 4 字段升级M1-G3后端 FeedbackItem + 前端类型
queryClient / @tanstack/query 清理M1-A7前端 package.json + 代码

3. 第五轮终裁清单

3.1 发现 P1(1 项,已修)

#一句话范围修复方状态
P1-G1admin-ui/src/types/admin.ts::FeedbackItem 缺少 M1-G3 新增的 priority/status/assigneeAdminId/resolvedAt/resolution 5 个字段;后端 wire 含这 5 字段,前端类型不完整导致运行时字段丢失admin.ts前端已修(本轮)

3.2 发现 P2(1 项,已记录)

#一句话范围判定
P2-G1M1-G1 新增 GET /api/users/me/export(GDPR 导出,返回 ndjson);iOS 客户端和 Web 前端均无对应调用——端点已就绪但客户端未实现 UI 入口iOS + Web不阻塞 rc.3(功能可用,仅 UI 入口缺失,记 v1.1 backlog)

3.3 ALIGNED(已对齐,无需操作)

变更后端前端 / iOS判定
/api/v1/* 全 410 Gonesrc/routes/v1.rs:5 handler 返回 (StatusCode::GONE, Json {...})Web 前端无任何 /api/v1/* 调用;iOS 客户端无 v1 调用ALIGNED
queryClient 清理grep -rn "queryClient|@tanstack" 无结果,package.json 无相关依赖ALIGNED
FeedbackItem 4 字段(修后)priority/status/assigneeAdminId/resolvedAt/resolution(camelCase wire)types/admin.ts::FeedbackItem 已补全 5 字段(本轮 P1-G1 修复)ALIGNED(修后)
PATCH /api/admin/feedback/:idUpdateFeedbackRequest { priority, status, assignee_admin_id, resolution }FeedbackPage.tsx 当前仅展示不更新(只读,无 PATCH 调用)——端点就绪,UI 未实现,不构成契约 mismatchALIGNED(只读场景无 mismatch)

4. 落地修复清单(本轮)

4.1 前端

文件改动
admin-ui/src/types/admin.tsFeedbackItem 补全 priority / status / assigneeAdminId / resolvedAt / resolution 5 字段

5. 验证命令

5.1 后端

bash
cargo test --no-fail-fast

5.2 前端

bash
cd admin-ui && pnpm tsc --noEmit
# 预期:仅 App.tsx(93) + UpdatesPage.tsx(405) 两处已知预存错误,无 FeedbackItem 新增错误

6. 100% 对齐结论(第五轮)

维度状态
/api/v1/* 410 客户端处理0 P0 / 0 P1(前端/iOS 均无 v1 调用,410 不影响任何客户端)
M1-G1 GDPR 导出契约0 P0 / 0 P1(端点就绪,客户端 UI 入口记 P2 backlog,不阻塞)
M1-G3 feedback 扩展字段0 P0 / 0 P1(P1-G1 本轮修复,FeedbackItem 字段已同步)
M1-A7 queryClient 遗留引用0 P0 / 0 P1(无任何遗留引用)

第五轮 cross-validator:0 P0 / 0 P1 / 0 P2 high-impact。可进 rc.3。


7. 未来计划(非本轮)

  • M1-G1 GDPR 导出:iOS + Web 前端实现"导出我的数据"UI 入口(v1.1)
  • PATCH /api/admin/feedback/:id:FeedbackPage 增加状态流转 UI(priority/status/assignee 可编辑)
  • AMAS 配置项 PARAM_DICT 与 tuning_whitelist.rs 11 维路径列表 cross-check 单测(P2-1)
  • ColdStartPhase 枚举大小写统一(P2-3):后端 #[serde(rename_all = "snake_case")]
  • selfRating 在 AMAS half-life 模型中的接入(第三轮仅 DTO + 落库)

WordForge — 智能英语学习平台