Jelajahi Sumber

📝 docs(prd): 更新用人方小程序实现PRD,补充数据库分析和详细任务

- 基于数据库结构分析,详细补充了缺失API接口的具体实现方案
- 明确了数据库schema扩展需求:为`disabled_person`表添加`birth_date`字段,扩展`order_person_asset`表的`asset_type`枚举,在`users2`表添加`company_id`字段
- 细化了各API模块的任务列表,包括企业用户认证、企业统计、人才扩展、订单统计、数据统计、视频管理和系统设置
- 更新了验收标准,确保每个功能点都有明确的验证要求
- 补充了数据库变更风险及缓解措施,制定了详细的回滚计划
yourname 1 Minggu lalu
induk
melakukan
c22e83452d
1 mengubah file dengan 77 tambahan dan 25 penghapusan
  1. 77 25
      docs/prd/epic-011-employer-mini-program-implementation.md

+ 77 - 25
docs/prd/epic-011-employer-mini-program-implementation.md

@@ -59,27 +59,70 @@
 ## 故事列表
 
 ### 故事011-00:补充缺失的API接口
-**背景:** 经过验证,现有allin系统移植模块的API不足以完全支持用人方小程序的所有功能需求,需要补充关键API接口。
+**背景:** 经过数据库结构分析和API验证,现有allin系统移植模块的API不足以完全支持用人方小程序的所有功能需求,需要基于实际数据库表结构补充关键API接口。
+
+**数据库分析发现:**
+- **企业用户认证缺失**:`users2`表只有admin用户,缺乏企业用户与`employer_company`表的关联
+- **视频管理基础存在**:`order_person_asset`表已支持文件关联,但`asset_type`枚举需要扩展以支持工资视频、个税视频、打卡视频、工作视频等类型
+- **数据统计需要实时计算**:无专门统计表,需要基于`disabled_person`、`employment_order`、`order_person`等表实时计算
+- **年龄统计字段缺失**:`disabled_person`表只有`age`字段,缺乏`birth_date`字段用于准确年龄统计
+- **个人征信信息存储**:通过`disabled_bank_card.file_id`关联`files`表存储个人征信截图
+- **企业统计可基于现有表**:`employer_company`、`employment_order`、`order_person`表已包含必要关联关系
 
 **任务列表:**
-1. **企业用户认证API**:扩展auth-module,支持企业用户手机号密码登录、退出登录、获取企业用户信息
-2. **企业统计API**:扩展company-module,添加企业概览统计接口(在职人员、订单数、累计订单等)
-3. **人才扩展API**:扩展disability-module,添加工作历史查询、薪资历史查询、个人征信信息查询、视频关联查询接口
-4. **订单统计API**:扩展order-module,添加打卡数据统计、视频统计、企业维度订单查询接口
-5. **数据统计API**:创建统计模块或扩展现有模块,提供残疾类型分布、性别分布、年龄分布、户籍分布、在职状态统计、薪资分布等统计接口
-6. **视频管理API**:扩展file-module或创建视频管理模块,支持视频分类管理(工资视频、个税视频、打卡视频、工作视频)、企业/个人维度视频查询、批量下载功能
-7. **系统设置API**:添加企业用户专属的设置接口(账号信息、安全设置、消息通知等)
-8. **API文档与测试**:为所有新增API编写文档和单元测试
+1. **数据库schema扩展**:
+   - 在`disabled_person`表添加`birth_date`字段(DATE类型),用于准确年龄统计
+   - 扩展`order_person_asset`表的`asset_type`枚举,新增视频类型:`salary_video`(工资视频)、`tax_video`(个税视频)、`checkin_video`(打卡视频)、`work_video`(工作视频)
+   - 在`users2`表添加`company_id`字段(外键引用`employer_company.company_id`),建立企业用户关联
+
+2. **企业用户认证API**:扩展auth-module,支持企业用户手机号密码登录(基于users2表+company_id关联)、退出登录、获取企业用户信息(包含关联的企业信息)
+
+3. **企业统计API**:扩展company-module,基于`employer_company`、`employment_order`、`order_person`表实时计算:
+   - 企业概览统计:在职人员数、进行中订单数、已完成订单数、累计订单数
+   - 企业维度人才统计:分配人才列表、人才状态分布
+
+4. **人才扩展API**:扩展disability-module,提供聚合查询接口:
+   - 工作历史查询:基于`order_person`表查询个人的历史工作记录(关联`employment_order`表)
+   - 薪资历史查询:基于`order_person.salary_detail`字段和`order`表查询历史薪资记录
+   - 个人征信信息查询:基于`disabled_bank_card.file_id`关联`files`表获取征信截图信息
+   - 视频关联查询:基于`order_person_asset`表查询关联的视频文件(按扩展的asset_type分类)
+
+5. **订单统计API**:扩展order-module,提供企业维度统计:
+   - 打卡数据统计:基于`order_person_asset`表(asset_type为`checkin_video`)统计打卡视频数量
+   - 视频统计:按视频类型(工资、个税、打卡、工作)分类统计
+   - 企业维度订单查询:支持按企业ID过滤订单列表,包含订单状态、人员关联等详细信息
+
+6. **数据统计API**:创建统计模块或扩展现有模块,基于实时计算提供:
+   - 残疾类型分布:基于`disabled_person.disability_type`统计
+   - 性别分布:基于`disabled_person.gender`统计
+   - 年龄分布:基于新增的`birth_date`字段计算年龄分组(18-25、26-35、36-45、46+)
+   - 户籍分布:基于`disabled_person.household_province`和`household_city`统计
+   - 在职状态统计:基于`disabled_person.job_status`统计
+   - 薪资分布:基于`order_person.salary_detail`统计薪资范围分布
+
+7. **视频管理API**:扩展file-module或创建视频管理模块:
+   - 视频分类管理:支持按扩展的asset_type枚举分类查询
+   - 企业维度视频查询:基于企业ID查询关联的所有视频(通过`employment_order`→`order_person`→`order_person_asset`关联链)
+   - 个人维度视频查询:基于人员ID查询关联的视频
+   - 批量下载功能:支持按企业或个人维度批量下载视频文件
+
+8. **系统设置API**:添加企业用户专属的设置接口:
+   - 账号信息管理:修改手机号、密码等
+   - 安全设置:登录设备管理、登录日志
+   - 消息通知设置:订单状态通知、人才分配通知等
+
+9. **API文档与测试**:为所有新增API编写OpenAPI文档、TypeScript类型定义和单元测试
 
 **验收标准:**
-- [ ] 企业用户可成功登录和获取企业信息
-- [ ] 企业概览统计接口返回正确的在职人员、订单数等数据
-- [ ] 人才详情页可查询到工作历史、薪资历史、个人征信信息
-- [ ] 订单管理页可获取打卡数据统计和视频统计
-- [ ] 数据统计页所有图表数据可通过API正确获取
-- [ ] 视频管理页支持按企业/个人维度查询和批量下载
-- [ ] 系统设置功能完整,账号信息可管理
-- [ ] 所有新增API通过单元测试,接口文档完整
+- [ ] 数据库schema扩展完成:`disabled_person`表添加`birth_date`字段,`order_person_asset`表扩展`asset_type`枚举,`users2`表添加`company_id`字段
+- [ ] 企业用户可成功登录和获取企业信息(包含关联的企业详情)
+- [ ] 企业概览统计接口返回正确的在职人员数、进行中订单数、已完成订单数、累计订单数
+- [ ] 人才详情页可查询到工作历史、薪资历史、个人征信信息、关联视频列表
+- [ ] 订单管理页可获取打卡数据统计和按类型分类的视频统计
+- [ ] 数据统计页所有图表数据可通过API正确获取(残疾类型、性别、年龄、户籍、在职状态、薪资分布)
+- [ ] 视频管理页支持按企业/个人维度查询,支持按视频类型筛选和批量下载
+- [ ] 系统设置功能完整,账号信息、安全设置、消息通知均可管理
+- [ ] 所有新增API通过单元测试,OpenAPI文档和TypeScript类型定义完整
 
 ### 故事011-01:API客户端集成与基础框架搭建
 **任务列表:**
@@ -145,20 +188,29 @@
 ## 风险缓解
 
 **主要风险:**
-1. API集成可能影响现有功能稳定性
-2. UI组件复用可能存在兼容性问题
-3. 数据统计图表性能可能影响页面加载速度
+1. **数据库schema变更风险**:新增字段和枚举扩展可能影响现有数据操作和查询
+2. API集成可能影响现有功能稳定性
+3. UI组件复用可能存在兼容性问题
+4. 数据统计图表性能可能影响页面加载速度
 
 **缓解措施:**
-1. **逐步集成**:每个API模块独立集成,分阶段测试验证
-2. **组件测试**:对复用的UI组件进行充分测试,确保兼容性
-3. **性能优化**:数据统计图表采用懒加载和分页,优化大数据量展示
-4. **回滚计划**:保持原有`api.ts`不变,新增独立客户端文件,便于回滚
+1. **数据库变更分步实施**:
+   - 先添加可为空的`birth_date`字段,不影响现有记录
+   - 扩展`asset_type`枚举时保留原有枚举值,确保向后兼容
+   - `users2`表添加可为空的`company_id`字段,现有admin用户不受影响
+2. **逐步集成**:每个API模块独立集成,分阶段测试验证
+3. **组件测试**:对复用的UI组件进行充分测试,确保兼容性
+4. **性能优化**:数据统计图表采用懒加载和分页,优化大数据量展示;实时统计查询添加适当的数据库索引
+5. **回滚计划**:保持原有`api.ts`不变,新增独立客户端文件,便于回滚
 
 **回滚计划:**
 1. 如果新增功能导致严重问题,可临时移除新增路由,恢复原有功能
 2. API客户端变更可通过版本控制回退到上一个稳定版本
-3. 数据库变更设计为可逆操作,保留数据迁移脚本
+3. 数据库schema变更支持可逆回滚:
+   - `birth_date`字段:如需要可删除该字段,不影响核心业务数据
+   - `asset_type`枚举扩展:新增的枚举值不影响原有数据,可安全保留
+   - `company_id`字段:如需要可删除该字段,企业用户可暂时通过其他方式关联
+4. 保留完整的数据迁移脚本,支持向前和向后迁移
 
 ## 完成定义