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.
5.4 KiB
5.4 KiB
n04-onboard 实施任务
Delivery / Proof Map
| Requirement Area | Tasks | Evidence |
|---|---|---|
| 通用/企业清单数据模型与种子 | 1, 2 | 迁移测试、Repository 集成测试 |
| 学生有效清单与完成状态 | 2, 3, 6 | Service 单元测试、MockMvc、持久化测试 |
| 企业自定义项 CRUD、幂等、并发 | 2, 4, 6 | Service 单元测试、MockMvc、Repository 集成测试 |
| 公司知识配置与基础信息回退 | 1, 2, 5 | Service 单元测试、MockMvc、持久化测试 |
| 公开评价摘要与小样本保护 | 2, 5 | 聚合 Service 测试、评价边界测试 |
| 权限、白名单响应和错误码 | 6, 7 | 未登录、角色、跨企业、脱敏断言 |
| OpenAPI、前端联调和文档 | 8 | python docs/verify_openapi.py、文档检查 |
| 全量回归和可发布证明 | 8 | mvn clean verify、专项测试汇总 |
Tasks
- 1. 新增 V38 建表迁移与 V39 通用清单种子,路径为
mydreamjob-server/src/main/resources/db/migration/。可观察结果:MySQL/H2 均可创建onboarding_checklist_items、student_onboarding_progress、company_knowledge,主外键、唯一键和索引存在;通用清单按分类和稳定排序写入。证据:mvn -Dtest=OnboardingMigrationTest,OnboardingSeedDataIntegrationTest test。依赖:无。 - 2. 新增
com.mydreamjob.onboarding领域实体与 Repository,路径为mydreamjob-server/src/main/java/com/mydreamjob/onboarding/。可观察结果:可查询某企业的活动通用+自定义项、批量查询当前学生完成记录、按企业查询知识记录,并为评价聚合提供跨岗位只读查询。证据:mvn -Dtest=OnboardingRepositoryIntegrationTest test。依赖:1。 - 3. 实现学生有效清单查询与完成状态更新服务及接口,路径为
OnboardingChecklistService.java、OnboardingChecklistController.java和对应 DTO。可观察结果:无企业自定义项时返回通用清单,有自定义项时合并排序;PUT 支持完成/取消完成、重复同状态幂等、完成率与完成时间正确。证据:mvn -Dtest=OnboardingChecklistServiceTest,OnboardingChecklistControllerTest test。依赖:2。 - 4. 实现企业自定义清单项查询、创建、更新和软删除,路径为
OnboardingChecklistService.java、OnboardingChecklistController.java和对应 DTO。可观察结果:仅企业本人可操作;创建支持idempotencyKey重放与请求体哈希冲突;更新/删除使用版本号;软删除后条目从学生有效清单消失但历史完成记录保留。证据:mvn -Dtest=OnboardingCompanyChecklistServiceTest,OnboardingCompanyChecklistControllerTest test。依赖:1, 2。 - 5. 实现企业知识内容 Upsert 和学生公司知识聚合,路径为
CompanyKnowledgeService.java、CompanyKnowledgeController.java和对应 DTO。可观察结果:企业读取无记录时返回configured=false;学生读取无知识时返回BASIC_ONLY;公开评价少于 3 条不返回均值;达到 3 条时返回平均分、分布、标签和八维摘要。证据:mvn -Dtest=CompanyKnowledgeServiceTest,CompanyKnowledgeControllerTest test。依赖:2。 - 6. 接入角色、所有权、错误码、幂等和乐观锁,路径为
SecurityConfig.java、ErrorCode.java、OnboardingChecklistService.java、CompanyKnowledgeService.java。可观察结果:/onboarding/**仅认证访问;STUDENT/COMPANY 角色和公司所有权严格隔离;9701-9706 在目标冲突场景返回 409/404;响应 DTO 不包含内部身份或审核字段。证据:mvn -Dtest=OnboardingAuthorizationIntegrationTest,OnboardingConcurrencyIntegrationTest,OnboardingPrivacyTest test。依赖:3, 4, 5。 - 7. 补齐模块测试,路径为
mydreamjob-server/src/test/java/com/mydreamjob/onboarding/。可观察结果:Service、MockMvc、持久化、迁移、种子、权限、幂等、并发、回退、小样本和端到端场景全部覆盖;测试断言响应状态、错误码、数据库行数和排序。证据:mvn -Dtest=Onboarding*Test test。依赖:3, 4, 5, 6。 - 8. 更新 OpenAPI、接口文档、前端联调说明和路线图,路径为
docs/openapi-rc.json、docs/onboarding-api.md、docs/frontend-integration.md、docs/backend-development-roadmap.md、README.md。可观察结果:9 个路径及 DTO 与运行时一致;前端文档给出请求示例、错误码、版本和幂等说明;路线图将本模块标记为实现完成/待验收。证据:python docs/verify_openapi.py,随后执行mvn clean verify。依赖:3, 4, 5, 6, 7。
Requirement-to-Task Coverage
| Spec Requirement | Covered By |
|---|---|
| 学生读取有效入职清单 | 1, 2, 3 |
| 学生更新个人清单完成状态 | 2, 3, 6, 7 |
| 企业创建自定义清单项 | 1, 2, 4, 6, 7 |
| 企业查询和更新自定义清单项 | 2, 4, 6, 7 |
| 企业软删除自定义清单项 | 2, 4, 6, 7 |
| 清单权限和数据最小化 | 3, 4, 6, 7 |
| 学生读取公司知识介绍 | 1, 2, 5, 7 |
| 公司知识评价摘要与小样本保护 | 2, 5, 7 |
| 企业读取本企业知识配置 | 1, 2, 5, 7 |
| 企业 Upsert 公司知识内容 | 1, 2, 5, 6, 7 |
| 公司知识权限与所有权隔离 | 5, 6, 7 |
| 不改变既有评价与企业接口语义 | 7, 8 |
Completion Gate
- 所有任务完成且专项测试、全量测试、OpenAPI 校验通过后才能进入 release-archivist。
- 不允许降低既有接口语义、删除业务数据或跳过迁移验证。