瀏覽代碼

docs(story/prd): 移除数据库迁移任务,调整为上线前统一生成迁移脚本

- 从故事012.001中移除迁移脚本创建任务和验收标准
- 更新史诗012文档,调整故事012-01任务列表和验收标准
- 添加说明:数据库迁移脚本将在上线前统一生成,开发阶段通过TypeORM自动同步
- 更新风险缓解和测试策略中的迁移相关说明

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
yourname 1 周之前
父節點
當前提交
83cb77c6f8

+ 3 - 1
.claude/settings.local.json

@@ -49,7 +49,9 @@
       "Bash(d8d-happy daemon stop:*)",
       "Bash(d8d-happy daemon start:*)",
       "Bash(git add:*)",
-      "Bash(pnpm lint:*)"
+      "Bash(pnpm lint:*)",
+      "Bash(git commit -m \"$(cat <<''EOF''\ndocs(story): 更新技术栈为TypeORM并完善中文故事文档\n\n- 将史诗012技术栈从Prisma/Drizzle更新为TypeORM\n- 故事012.001完全中文化并应用检查清单改进建议\n- 添加详细的数据模型描述、枚举值对比和测试要求\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
+      "Bash(cat:*)"
     ],
     "deny": [],
     "ask": []

+ 6 - 6
docs/prd/epic-012-api-supplement-for-employer-mini-program.md

@@ -71,18 +71,18 @@
 **背景:** 现有数据库表结构缺少支持用人方小程序完整功能的关键字段,需要在不影响现有数据的前提下扩展schema。
 
 **任务列表:**
+
+注:数据库迁移脚本将在上线前统一生成,开发阶段通过TypeORM自动同步。
 1. 在`disabled_person`表添加可为空的`birth_date`字段(DATE类型),用于准确年龄统计
 2. 扩展`order_person_asset`表的`asset_type`枚举,新增视频类型:`salary_video`(工资视频)、`tax_video`(个税视频)、`checkin_video`(打卡视频)、`work_video`(工作视频)
 3. 在`users2`表添加可为空的`company_id`字段(外键引用`employer_company.company_id`),建立企业用户关联
-4. 创建数据库迁移脚本,支持向前和向后迁移
-5. 更新对应的TypeORM实体定义
-6. 验证现有数据不受影响,新增字段可为空
+4. 更新对应的TypeORM实体定义
+5. 验证现有数据不受影响,新增字段可为空
 
 **验收标准:**
 - [ ] `disabled_person`表成功添加`birth_date`字段,现有记录该字段值为NULL
 - [ ] `order_person_asset`表的`asset_type`枚举扩展完成,新增视频类型枚举值
 - [ ] `users2`表成功添加`company_id`字段,现有admin用户的该字段值为NULL
-- [ ] 数据库迁移脚本可正确执行向前和向后迁移
 - [ ] TypeORM实体定义更新完成
 - [ ] 现有业务功能不受影响,测试通过
 
@@ -269,7 +269,7 @@
    - `birth_date`字段:如需要可删除该字段,不影响核心业务数据
    - `asset_type`枚举扩展:新增的枚举值不影响原有数据,可安全保留
    - `company_id`字段:如需要可删除该字段,企业用户可暂时通过其他方式关联
-3. 保留完整的数据迁移脚本,支持向前和向后迁移
+3. 数据库迁移脚本将在上线前统一生成,开发阶段通过TypeORM自动同步
 4. API客户端变更可通过版本控制回退到上一个稳定版本
 
 ## 完成定义
@@ -298,7 +298,7 @@
 3. **性能测试**:验证实时统计查询的性能,确保响应时间符合要求
 4. **兼容性测试**:验证新增功能不影响现有API接口
 5. **回归测试**:确保现有业务功能不受影响
-6. **数据库迁移测试**:测试数据库schema变更脚本的正确性和可逆
+6. **数据库schema变更测试**:验证数据库schema变更的正确性和兼容
 
 ## 执行顺序建议
 

+ 24 - 23
docs/stories/012.001.story.md

@@ -14,9 +14,8 @@
 1. [ ] `disabled_person`表成功添加`birth_date`字段,现有记录该字段值为NULL
 2. [ ] `order_person_asset`表的`asset_type`枚举扩展完成,新增视频类型枚举值
 3. [ ] `users2`表成功添加`company_id`字段,现有admin用户的该字段值为NULL
-4. [ ] 数据库迁移脚本可正确执行向前和向后迁移
-5. [ ] TypeORM实体定义更新完成
-6. [ ] 现有业务功能不受影响,测试通过
+4. [ ] TypeORM实体定义更新完成
+5. [ ] 现有业务功能不受影响,测试通过
 
 ## 任务 / 子任务
 将故事分解为实施所需的具体任务和子任务。
@@ -25,24 +24,19 @@
 - [ ] 任务1:向`disabled_person`表添加可为空的`birth_date`字段(AC:1)
   - [ ] 修改`allin-packages/disability-module/src/entities/disabled-person.entity.ts`以添加`birthDate`字段
   - [ ] 在disability-module中更新对应的schema验证
-  - [ ] 创建添加`birth_date`列的数据库迁移脚本
 - [ ] 任务2:扩展`order_person_asset`表中的`asset_type`枚举(AC:2)
   - [ ] 更新`allin-packages/order-module/src/schemas/order.schema.ts`中的`AssetType`枚举
   - [ ] 添加新的视频类型:`salary_video`、`tax_video`、`checkin_video`、`work_video`
   - [ ] 确保向后兼容现有的枚举值
   - [ ] 更新`order-person-asset.entity.ts`中的实体验证
 - [ ] 任务3:向`users2`表添加可为空的`company_id`字段(AC:3)
-  - [ ] 定位用户实体(可能在user-module或auth-module中)
+  - [ ] 修改`packages/core-module/user-module/src/entities/user.entity.ts`以添加`companyId`字段
+  - [ ] 添加`@ManyToOne`关联到`Company`实体(`allin-packages/company-module/src/entities/company.entity.ts`)
   - [ ] 添加`companyId`字段,外键引用`employer_company.company_id`
-  - [ ] 创建添加`company_id`列的数据库迁移脚本
-- [ ] 任务4:创建数据库迁移脚本(AC:4)
-  - [ ] 为所有三个schema变更创建向前迁移脚本
-  - [ ] 创建向后/回滚迁移脚本
-  - [ ] 在测试数据库上测试迁移脚本
-- [ ] 任务5:更新TypeORM实体定义(AC:5)
+- [ ] 任务4:更新TypeORM实体定义(AC:4)
   - [ ] 更新实体定义以反映新字段和枚举值
   - [ ] 验证所有模块中的schema一致性
-- [ ] 任务6:验证和测试(AC:6
+- [ ] 任务5:验证和测试(AC:5)
   - [ ] 运行现有测试以确保没有回归
   - [ ] 为新字段和枚举值添加单元测试
   - [ ] 测试与现有数据的向后兼容性
@@ -76,11 +70,17 @@
   - 新增:`salary_video`, `tax_video`, `checkin_video`, `work_video`
   - 全部:`tax`, `salary`, `job_result`, `contract_sign`, `disability_cert`, `other`, `salary_video`, `tax_video`, `checkin_video`, `work_video`
 
-**用户实体**(待定位):
-- 基于史诗描述,`users2`表需要`company_id`字段
-- 应引用`employer_company.company_id`作为外键
+**用户实体**(`packages/core-module/user-module/src/entities/user.entity.ts`):
+- 对应数据库表:`users2`(@Entity({ name: 'users2' }))
+- 当前字段包括:`username`、`password`、`phone`、`email`、`nickname`、`name`、`avatarFileId`、`openid`、`unionid`、`registrationSource`、`roles`关联等
+- 需要添加`company_id`字段,外键引用`employer_company.company_id`
 - 字段应为可为空(现有admin用户为NULL)[来源:docs/prd/epic-012-api-supplement-for-employer-mini-program.md#故事012-01]
-- **注意**:需要在`packages/user-module`或`packages/auth-module`中查找对应的用户实体文件。如果不存在,可能需要基于`users2`表创建新的实体
+- **注意**:实体类名为`UserEntity`,需要添加`companyId`字段和对应的`@ManyToOne`关联到`Company`实体(employer_company表)
+
+**Company实体**(`allin-packages/company-module/src/entities/company.entity.ts`):
+- 对应数据库表:`employer_company`(@Entity('employer_company'))
+- 主键:`id`(映射到`company_id`列)
+- 用于外键关联的字段是`company_id`列
 
 ### API规范
 不适用于此仅schema的故事。后续故事将使用这些schema变更实现API。
@@ -93,14 +93,14 @@
 - `allin-packages/disability-module/src/entities/disabled-person.entity.ts`
 - `allin-packages/order-module/src/entities/order-person-asset.entity.ts`
 - `allin-packages/order-module/src/schemas/order.schema.ts`
-- 用户实体位置:需要定位(检查`packages/user-module`或`packages/auth-module`)
-- 迁移脚本:应在适当位置创建(基于现有迁移模式TBD)
+- `packages/core-module/user-module/src/entities/user.entity.ts`(users2表)
+- `allin-packages/company-module/src/entities/company.entity.ts`(employer_company表)
+- 注:数据库迁移脚本将在上线前统一生成,开发阶段通过TypeORM自动同步
 
 ### 技术约束
 - **向后兼容性**:所有新字段必须可为空,现有数据不受影响 [来源:docs/prd/epic-012-api-supplement-for-employer-mini-program.md#兼容性要求]
 - **数据库**:PostgreSQL 17,TypeORM 0.3.25 [来源:architecture/tech-stack.md]
 - **枚举扩展**:必须保留现有枚举值,添加新值 [来源:docs/prd/epic-012-api-supplement-for-employer-mini-program.md#风险缓解]
-- **迁移脚本**:必须支持向前和向后迁移 [来源:docs/prd/epic-012-api-supplement-for-employer-mini-program.md#任务列表]
 
 ### 项目结构说明
 - Monorepo结构,`allin-packages/`用于业务模块 [来源:architecture/source-tree.md]
@@ -122,16 +122,15 @@
 
 #### 测试框架和模式
 - **单元测试**:测试单个实体和schema
-- **集成测试**:测试数据库迁移脚本和schema变更
+- **集成测试**:测试数据库schema变更
 - **向后兼容性测试**:验证现有数据和查询正常工作
 - **枚举验证测试**:测试新枚举值是否被接受
 
 #### 此故事的特定测试要求
 1. **Schema验证测试**:验证新字段是否正确可为空
 2. **枚举扩展测试**:验证新枚举值适用于现有代码
-3. **迁移测试**:测试向前和向后迁移脚本
-4. **回归测试**:运行现有模块测试以确保没有破坏
-5. **外键测试**:验证`company_id`外键关系
+3. **回归测试**:运行现有模块测试以确保没有破坏
+4. **外键测试**:验证`company_id`外键关系
 
 ## 变更日志
 跟踪对此故事文档所做的更改
@@ -140,6 +139,8 @@
 |------|------|------|------|
 | 2025-12-13 | 1.0 | 初始故事创建 | Bob(Scrum Master) |
 | 2025-12-13 | 1.1 | 转换为中文,应用检查清单改进建议 | Bob(Scrum Master) |
+| 2025-12-13 | 1.2 | 更新用户实体和Company实体位置信息 | Bob(Scrum Master) |
+| 2025-12-13 | 1.3 | 移除数据库迁移任务,调整为上线前统一生成迁移脚本 | John(产品经理) |
 
 ## 开发代理记录
 此部分由开发代理在实施过程中填充