|
|
@@ -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(产品经理) |
|
|
|
|
|
|
## 开发代理记录
|
|
|
此部分由开发代理在实施过程中填充
|