# T1 任务简报:V38/V39 迁移与通用清单种子 ## Where This Fits - Wave: W1 - Depends on: 无 - Contract: `changes/n04-onboard/execution-contract.md` - Specs: `changes/n04-onboard/specs/onboarding-checklist/spec.md`、`changes/n04-onboard/specs/company-knowledge/spec.md` - Design: `changes/n04-onboard/design.md` 的 Data Model 与 Architecture 部分 ## Objective 新增 V38 建表迁移和 V39 通用清单种子,并先用失败测试锁定表结构、约束、通用项数量和稳定排序。 ## Files In Scope - `mydreamjob-server/src/main/resources/db/migration/V38__onboarding_checklist_and_company_knowledge.sql` - `mydreamjob-server/src/main/resources/db/migration/V39__onboarding_standard_checklist_seed.sql` - `mydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingMigrationTest.java` - `mydreamjob-server/src/test/java/com/mydreamjob/onboarding/OnboardingSeedDataIntegrationTest.java` - 如项目迁移测试需要共享测试配置,仅可修改同一测试包内的辅助文件。 ## Required Behavior - 创建 `onboarding_checklist_items`、`student_onboarding_progress`、`company_knowledge`。 - `onboarding_checklist_items` 至少包含合同规定的字段、唯一键、活动/排序索引、`company_id` 对 `companies(id)` 的外键。 - `student_onboarding_progress` 必须对学生与条目唯一,并建立 `users(id)`、`onboarding_checklist_items(id)` 外键。 - `company_knowledge.company_id` 唯一,并建立 `companies(id)` 外键。 - V39 必须写入稳定的通用清单;每一步使用明确 `item_key`、分类、排序和必填标记,不得使用随机值。 - 迁移必须兼容 H2 `MODE=MySQL` 与 MySQL 8.4。 ## TDD Requirement 1. 先写 `OnboardingMigrationTest`、`OnboardingSeedDataIntegrationTest`,确认因表或种子不存在而失败。 2. 再写 V38/V39 让测试通过。 3. 不得先写迁移再补测试。 ## Evidence Commands ```powershell cd D:\1\zhi\zhilai\mydreamjob-server mvn -Dtest=OnboardingMigrationTest,OnboardingSeedDataIntegrationTest test ``` ## Done Definition - 两条证据测试通过。 - 测试断言三张表存在、关键唯一约束/外键/索引可验证、通用种子数量大于 0 且排序稳定。 - 不修改 V1-V37。 - 不创建 W2 实体、Repository、Service 或 Controller。