You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2.7 KiB

T6 任务简报:权限、错误码、并发与幂等集成

Where This Fits

  • Wave: W3
  • Depends on: T5
  • Contract: changes/n04-onboard/execution-contract.md
  • Design: changes/n04-onboard/design.md 的 API、Error Codes、Risks

Objective

把 W2 已完成的清单与知识服务接入统一安全、错误码和并发语义,先用集成测试锁定权限矩阵、所有权隔离、版本冲突和响应最小化。

Files In Scope

  • mydreamjob-server/src/main/java/com/mydreamjob/config/SecurityConfig.java
  • mydreamjob-server/src/main/java/com/mydreamjob/common/exception/ErrorCode.java
  • mydreamjob-server/src/main/java/com/mydreamjob/onboarding/OnboardingChecklistService.java
  • mydreamjob-server/src/main/java/com/mydreamjob/onboarding/CompanyKnowledgeService.java
  • mydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingAuthorizationIntegrationTest.java
  • mydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingConcurrencyIntegrationTest.java
  • mydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingPrivacyTest.java

Required Behavior

  • /onboarding/** 必须认证;未登录 401。
  • 学生接口仅 STUDENT;企业接口仅 COMPANY;角色不符 403。
  • 企业接口只能操作当前用户绑定的企业;跨企业 itemId 返回 9701,不能泄露其他企业数据。
  • 新增 9701-9706:item not found、item concurrent update、item limit exceeded、idempotency conflict、progress concurrent update、knowledge concurrent update。
  • 创建幂等冲突返回 9704;活动项上限返回 9703。
  • 更新/删除清单项乐观锁冲突映射 9702;进度冲突映射 9705;知识冲突映射 9706。
  • 所有响应使用白名单 DTO,不包含 ownerUserId、studentUserId、审核原因、哈希、IP、User-Agent、Token。
  • 失败请求不得产生部分写入或修改其他企业数据。

TDD Requirement

  1. 先写三个集成测试并确认 RED。
  2. 再修改安全配置、错误码和 Service 异常映射使测试 GREEN。
  3. 不改变既有非 onboarding 路径的安全语义。

Evidence Commands

cd D:\1\zhi\zhilai\mydreamjob-server
mvn -Dtest=OnboardingAuthorizationIntegrationTest,OnboardingConcurrencyIntegrationTest,OnboardingPrivacyTest test

Done Definition

  • 权限矩阵覆盖匿名、STUDENT、COMPANY、ADMIN、错误企业。
  • 并发与幂等冲突均返回契约规定的 HTTP 状态和错误码。
  • 隐私测试检查 JSON 响应不含内部字段。
  • onboarding 专项测试全部通过。
  • 并发创建:相同 idempotencyKey 并发请求只能产生一条记录并返回成功或 9704;并发达到 50 条边界不得写入第 51 条活动项。
  • 首次进度记录若携带非 0 version,必须返回 9705。