# T4 任务简报:企业自定义清单 CRUD 与幂等 ## Where This Fits - Wave: W2 - Depends on: T3 - Contract: `changes/n04-onboard/execution-contract.md` - Specs: `changes/n04-onboard/specs/onboarding-checklist/spec.md` ## Objective 在已有学生清单服务与 Controller 上增加 COMPANY 自定义清单 CRUD,先用失败测试锁定所有权、幂等和乐观锁。 ## Files In Scope - `mydreamjob-server/src/main/java/com/mydreamjob/onboarding/OnboardingChecklistService.java` - `mydreamjob-server/src/main/java/com/mydreamjob/onboarding/OnboardingChecklistController.java` - `mydreamjob-server/src/main/java/com/mydreamjob/onboarding/dto/CompanyChecklistItemCreateRequest.java` - `mydreamjob-server/src/main/java/com/mydreamjob/onboarding/dto/CompanyChecklistItemUpdateRequest.java` - `mydreamjob-server/src/main/java/com/mydreamjob/onboarding/dto/CompanyChecklistItemView.java` - `mydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingCompanyChecklistServiceTest.java` - `mydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingCompanyChecklistControllerTest.java` ## Required Behavior - `GET /api/v1/onboarding/company/checklist-items` 仅 COMPANY,读取本企业全部自定义项,含软删除项与 version。 - `POST /api/v1/onboarding/company/checklist-items` 创建本企业项,校验 title 1-120、description <=1000、category 枚举、sortOrder 0-9999、required 默认 false、idempotencyKey <=64。 - 相同企业 + 相同 idempotencyKey + 相同规范化请求体返回原条目;不同请求体返回 `ONBOARDING_IDEMPOTENCY_CONFLICT`。 - 活动自定义项达到 50 条时返回 `ONBOARDING_ITEM_LIMIT_EXCEEDED`。 - `PUT /api/v1/onboarding/company/checklist-items/{itemId}` 更新标题、说明、分类、排序、必填和 active,必须校验 version。 - 过期 version 返回 `ONBOARDING_CHECKLIST_ITEM_CONCURRENT_UPDATE`。 - `DELETE /api/v1/onboarding/company/checklist-items/{itemId}?version={version}` 软删除;重复删除已非活动项幂等成功。 - 所有企业操作仅限当前 COMPANY 拥有的企业,跨企业 itemId 返回 `ONBOARDING_CHECKLIST_ITEM_NOT_FOUND`。 - 企业不存在返回 `COMPANY_NOT_FOUND`,非 COMPANY 返回 `FORBIDDEN`。 ## TDD Requirement 1. 先写 Service/Controller 失败测试并确认 RED。 2. 再实现最小 DTO、Service、Controller 使测试 GREEN。 3. 不实现公司知识接口。 ## Evidence Commands ```powershell cd D:\1\zhi\zhilai\mydreamjob-server mvn -Dtest=OnboardingCompanyChecklistServiceTest,OnboardingCompanyChecklistControllerTest test ``` ## Done Definition - 覆盖查询、创建、幂等重放、幂等冲突、上限、更新、版本冲突、软删除、重复删除和跨企业隔离。 - 创建请求哈希可重复,不依赖随机或当前时间。 - 既有学生清单行为不回归。