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
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.javamydreamjob-server/src/main/java/com/mydreamjob/common/exception/ErrorCode.javamydreamjob-server/src/main/java/com/mydreamjob/onboarding/OnboardingChecklistService.javamydreamjob-server/src/main/java/com/mydreamjob/onboarding/CompanyKnowledgeService.javamydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingAuthorizationIntegrationTest.javamydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingConcurrencyIntegrationTest.javamydreamjob-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
- 先写三个集成测试并确认 RED。
- 再修改安全配置、错误码和 Service 异常映射使测试 GREEN。
- 不改变既有非 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。