# 史诗011 - 用人方小程序功能实现

## 史诗目标
在mini项目中完整实现用人方小程序的所有页面功能，基于史诗7,8,9,10已移植的API模块基础，为企业用户提供残疾人就业管理的完整解决方案。

## 状态更新（2025-12-20）
- **依赖状态**：史诗012完成5/6核心故事（83%），MVP API就绪
- **启动建议**：史诗011可以立即开始开发
- **调整说明**：故事011.006需调整企业设置页功能实现（系统设置API延期至P2优先级）
- **故事拆分**：史诗拆分为6个故事，便于逐步开发和测试
- **整体进度**：故事011.001已完成，故事011.002已完成，故事011.003已完成
- **故事011.001完成情况**：基础框架搭建完成，包含API客户端集成、路由配置、布局组件、企业认证框架，所有测试通过，现有功能适配为企业用户使用
- **故事011.002完成情况**：登录页面UI更新完成（严格对照原型设计），首页仪表板实现完整，认证状态管理增强（自动token刷新），集成测试通过（23个测试），已集成Navbar导航栏组件，统一页面层级结构
- **故事011.003完成情况**：人才管理功能完整实现，包含人才列表页（搜索、筛选、分页）、人才详情页（基本信息、工作信息、薪资信息）、薪资历史记录、个人征信文件管理，严格对照原型设计实现，多模块API集成验证通过，已集成Navbar导航栏组件，区分主页面和二级页的不同配置（主页面使用YongrenTabBarLayout+Navbar无返回，二级页使用Navbar带返回按钮）
- **导航栏集成状态**：所有用人小程序页面已完成Navbar组件集成，建立统一的页面层级结构规范，主页面使用YongrenTabBarLayout+Navbar（无返回按钮），二级页面使用Navbar（带返回按钮，移除YongrenTabBarLayout包裹），已验证类型检查通过

## 史诗描述

### 现有系统上下文

**当前相关功能：**
- **mini项目**：基础小程序前端，已改造登录、个人资料页面为企业用户使用（注册功能由管理员管理）
- **API客户端**：已集成auth、user、role、file模块的RPC客户端（api.ts）
- **史诗7,8,9,10成果**：已移植allin系统的7个后端模块和对应UI模块（channel、company、disability_person、order、platform、salary等）
- **原型设计**：`docs/小程序原型/yongren.html` 提供了完整的8个页面原型设计

**技术栈：**
- 前端：TypeScript、React、Hono RPC客户端、Tailwind CSS
- 测试：Jest（mini项目使用Jest，其他包使用Vitest）
- API通信：基于Hono RPC的API客户端模式
- 包管理：pnpm workspace

**集成点：**
- 需要将史诗7,8,9,10移植的allin系统模块API客户端集成到mini项目
- **依赖史诗012（API补充与数据库扩展）**提供完整的用人方小程序API支持
- 基于已有RPC客户端模式扩展新的API客户端，使用`api/v1/yongren`路径前缀
- **UI组件开发**：基于原型文件独立开发小程序UI组件，复用现有小程序通用组件（如登录注册组件），只修改样式，保持核心逻辑不变
- 遵循mini项目现有的页面结构和路由配置

**史诗012完成状态更新（2025-12-17）：**
- ✅ **完成情况**：5/6核心故事完成（83%），MVP就绪
- ✅ **已完成的API**：数据库schema、企业用户认证、企业统计、人才扩展、订单统计、数据统计、视频管理
- ⚠️ **延期API**：系统设置API（P2优先级，非MVP必需）
- 📊 **进度**：史诗011可以立即开始，但故事011.006需调整系统设置相关功能实现计划

### 增强详情

**新增/变更内容：**
在mini项目中实现用人方小程序的8个核心页面，包括：
1. 登录页 - 企业用户手机号密码登录
2. 首页/看板 - 企业概览、人才分配、数据卡片
3. 人才列表页 - 人才搜索、筛选、分页展示
4. 人才详情页 - 个人信息、工作历史、薪资、视频管理
5. 数据统计页 - 可视化图表、残疾类型分布、性别年龄分布等
6. 订单管理页 - 订单列表、状态管理、打卡数据统计
7. 企业设置页 - 企业信息、账号管理、安全设置
8. 视频查看下载页 - 企业/个人维度的视频管理

**页面功能基于：**
- `docs/小程序原型/yongren.html` 完整原型设计
- 史诗7,8,9,10移植的API模块提供数据支持
- 缺失的API接口进行增补实现

**集成方式：**
1. **API客户端集成**：基于现有`api.ts`模式，新增allin系统模块的RPC客户端
2. **UI组件开发**：基于原型文件独立开发小程序UI组件，复用现有小程序通用组件（如登录注册组件），只修改样式，保持核心逻辑不变。**注意**：史诗011针对mini小程序，UI组件应独立设计，而非复用管理后台的`@d8d/allin-*`系列UI包
3. **导航栏组件集成**：所有页面统一集成`Navbar`导航栏组件，建立页面层级结构规范：主页面使用`YongrenTabBarLayout`+`Navbar`（无返回按钮），二级页面使用`Navbar`（带返回按钮，移除`YongrenTabBarLayout`包裹）
4. **页面结构**：遵循mini项目现有的页面目录结构（`src/pages/`），适配导航栏占位布局
5. **路由配置**：使用现有的路由配置模式

**成功标准：**
1. 8个页面功能完整实现，符合原型设计要求
2. 与史诗7,8,9,10移植的API模块无缝集成
3. 保持mini项目现有功能的完整性（登录、注册、个人资料等）
4. 通过Jest测试验证，包括组件测试和集成测试
5. 遵循项目编码规范和UI组件使用规范

## 故事列表


### 故事011.001：基础框架搭建
**背景：** 史诗012已完成5/6核心故事（83%），MVP API就绪。需要将史诗7,8,9,10移植的API模块及史诗012补充的API集成到mini项目的RPC客户端中，建立用人方小程序的基础技术框架。注：系统设置API为P2优先级延期功能。

**任务列表：**
1. 分析史诗7,8,9,10移植的API模块及史诗012补充的API，确定需要集成的RPC客户端
2. 扩展`mini/src/api.ts`，新增allin系统模块的RPC客户端，包括史诗012补充的API接口
3. 配置用人方小程序的路由结构，支持页面导航
4. 创建基础布局组件（状态栏、底部导航、页面容器），参考原型设计`docs/小程序原型/yongren.html`
5. 建立企业用户认证框架，支持后续登录页面集成
6. 编写基础测试，验证现有功能不受影响

**验收标准：**
- [x] allin系统模块及史诗012补充API的RPC客户端成功集成到`mini/src/api.ts`
- [x] 用人方小程序的路由结构配置完成，支持页面导航
- [x] 基础布局组件（状态栏、底部导航、页面容器）可用并符合移动端设计
- [x] 企业用户认证框架就绪，支持后续登录页面集成
- [x] 现有mini项目功能不受影响

### 故事011.002：认证与首页实现
**背景：** 依赖故事011.001完成的基础框架和史诗012提供的企业用户认证API、企业统计API，实现企业用户登录功能和首页/看板页面。

**任务列表：**
1. 实现登录页面功能，支持企业用户手机号密码登录
2. 完善认证状态管理（token存储、验证、自动刷新）
3. 实现首页/看板页面，展示企业概览数据（在职人员统计、分配人才列表等）
4. 集成企业统计API，实现数据卡片和人才列表组件
5. 集成Navbar导航栏组件，建立统一的页面层级结构（主页面使用YongrenTabBarLayout+Navbar无返回按钮）
6. 优化用户体验，确保页面设计符合原型标准
7. 编写集成测试，验证登录和首页功能

**验收标准：**
- [x] 登录页面功能完整，支持企业用户手机号密码登录
- [x] 登录状态管理正常，token存储和验证可靠
- [x] 首页/看板页面展示企业概览数据（在职人员统计、分配人才列表等）
- [x] 页面设计符合原型标准，移动端体验良好，已集成Navbar导航栏组件
- [x] 与基础框架（故事011.001）无缝集成，建立统一的页面层级结构规范

### 故事011.003：人才管理功能实现
**背景：** 依赖故事011.001-011.002完成的基础，以及史诗012提供的人才扩展API，实现人才管理功能。

**任务列表：**
1. 实现人才列表页，支持按姓名、残疾证号搜索，按状态、残疾类型筛选和分页展示
2. 实现人才详情页，展示完整信息（基本信息、工作信息、薪资信息等）
3. 集成薪资管理API，实现薪资历史记录查看功能
4. 集成文件管理API，实现个人征信文件预览和下载
5. 集成Navbar导航栏组件，区分主页面和二级页配置（列表页使用YongrenTabBarLayout+Navbar无返回，详情页使用Navbar带返回按钮）
6. 优化大数据量列表性能和页面间导航
7. 编写集成测试，验证人才管理功能

**验收标准：**
- [x] 人才列表页功能完整，支持按姓名、残疾证号搜索
- [x] 人才列表支持按状态、残疾类型筛选和分页展示
- [x] 人才详情页展示完整信息（基本信息、工作信息、薪资信息等）
- [x] 支持查看薪资历史记录和个人征信文件
- [x] 页面设计符合原型标准，与基础框架无缝集成，已集成Navbar导航栏组件并建立页面层级结构规范（主页面使用YongrenTabBarLayout+Navbar无返回，二级页使用Navbar带返回按钮）

### 故事011.004：订单管理功能实现
**背景：** 依赖故事011.001-011.003完成的基础，以及史诗012提供的订单统计API、视频管理API，实现订单管理功能。

**任务列表：**
1. 实现订单管理页，展示订单列表，支持状态筛选和搜索
2. 实现订单状态管理（查看、编辑、状态变更）
3. 实现打卡数据统计功能，显示考勤记录
4. 实现视频统计功能，关联订单的视频资料可查看
5. 优化页面加载性能和大数据量处理
6. 编写集成测试，验证订单管理功能

**验收标准：**
- [ ] 订单管理页展示订单列表，支持状态筛选和搜索
- [ ] 支持订单状态管理（查看、编辑、状态变更）
- [ ] 打卡数据统计功能完整，显示考勤记录
- [ ] 视频统计功能正常，关联订单的视频资料可查看
- [ ] 页面设计符合原型标准，与系统其他部分无缝集成

### 故事011.005：数据统计功能实现
**背景：** 依赖故事011.001-011.004完成的基础，以及史诗012提供的数据统计API，实现数据可视化功能。

**任务列表：**
1. 实现数据统计页，展示完整的统计图表集合
2. 实现残疾类型分布图表，数据准确显示
3. 实现性别分布、年龄分布、户籍省份分布图表
4. 支持数据筛选（时间范围、部门等）和图表交互
5. 优化图表加载性能和移动端显示
6. 编写集成测试，验证数据统计功能

**验收标准：**
- [ ] 数据统计页展示完整的统计图表集合
- [ ] 残疾类型分布图表正确显示，数据准确
- [ ] 性别分布、年龄分布、户籍省份分布图表功能正常
- [ ] 支持数据筛选（时间范围、部门等）和图表交互
- [ ] 页面设计符合原型标准，图表加载性能良好

### 故事011.006：视频与系统管理功能实现
**背景：** 依赖故事011.001-011.005完成的基础，以及史诗012提供的视频管理API，实现视频管理和企业设置功能。注：系统设置API为P2优先级延期功能，企业设置页高级功能需相应调整实现计划。

**任务列表：**
1. 实现视频查看下载页，支持企业维度和个人维度的视频管理
2. 实现视频操作功能（播放、下载、分享、批量下载）
3. 实现企业设置页面基础功能（企业信息展示）
4. 处理系统设置API延期，标记账号管理、安全设置等高级功能为"后期优化"
5. 优化视频播放体验和大文件处理性能
6. 编写集成测试，验证视频与系统管理功能

**验收标准：**
- [ ] 视频查看下载页功能完整，支持企业维度和个人维度的视频管理
- [ ] 视频支持播放、下载、分享、批量下载功能
- [ ] 企业设置页面基础功能可用（企业信息展示）
- [ ] 账号管理、安全设置等高级功能标记为"后期优化"（因系统设置API延期）
- [ ] 页面设计符合原型标准，与系统其他部分无缝集成

## 兼容性要求

- [x] 现有mini项目功能适配为企业用户使用（登录、个人资料页面已改造，注册功能由管理员管理）
- [ ] 遵循现有`api.ts` RPC客户端模式，新增客户端与原有客户端兼容
- [ ] 使用一致的UI组件库，保持界面风格统一
- [ ] 保持路由结构的统一性，新增路由不影响现有路由
- [ ] 数据库schema变化保持向后兼容
- [ ] 性能影响最小化，不影响现有功能响应速度

## 风险缓解

**主要风险：**
1. **数据库schema变更风险**：新增字段和枚举扩展可能影响现有数据操作和查询
2. API集成可能影响现有功能稳定性
3. UI组件复用可能存在兼容性问题
4. 数据统计图表性能可能影响页面加载速度

**缓解措施：**
1. **数据库变更分步实施**：
   - 先添加可为空的`birth_date`字段，不影响现有记录
   - 扩展`asset_type`枚举时保留原有枚举值，确保向后兼容
   - `users2`表添加可为空的`company_id`字段，现有admin用户不受影响
2. **逐步集成**：每个API模块独立集成，分阶段测试验证
3. **组件测试**：对复用的UI组件进行充分测试，确保兼容性
4. **性能优化**：数据统计图表采用懒加载和分页，优化大数据量展示；实时统计查询添加适当的数据库索引
5. **回滚计划**：保持原有`api.ts`不变，新增独立客户端文件，便于回滚

**回滚计划：**
1. 如果新增功能导致严重问题，可临时移除新增路由，恢复原有功能
2. API客户端变更可通过版本控制回退到上一个稳定版本
3. 数据库schema变更支持可逆回滚：
   - `birth_date`字段：如需要可删除该字段，不影响核心业务数据
   - `asset_type`枚举扩展：新增的枚举值不影响原有数据，可安全保留
   - `company_id`字段：如需要可删除该字段，企业用户可暂时通过其他方式关联
4. 保留完整的数据迁移脚本，支持向前和向后迁移

## 完成定义

- [ ] 所有6个故事完成，验收标准全部满足
- [ ] 8个页面功能完整，符合原型设计要求
- [ ] API集成测试通过，包括正常流程和异常情况测试
- [ ] 现有功能回归测试通过，确保无功能退化
- [ ] 代码符合项目编码规范，通过代码审查
- [ ] 文档更新完成，包括API接口文档和用户操作手册
- [ ] 性能测试通过，页面加载时间在可接受范围内
- [ ] 移动端适配良好，主流设备测试通过

## 依赖关系

- 依赖史诗7,8,9,10移植的API模块和UI组件包
- **依赖史诗012（API补充与数据库扩展）**：提供企业用户认证、企业统计、人才扩展、订单统计、数据统计、视频管理等API接口（5/6核心故事完成，系统设置API延期至P2优先级）
- 依赖现有mini项目的基础框架和构建配置
- 依赖数据库schema与移植模块保持一致（通过史诗012扩展）
- 需要测试环境支持，包括API服务和数据库

**史诗012依赖状态（2025-12-17验证）：**
- ✅ **已就绪**：数据库schema、企业用户认证、企业统计、人才扩展、订单统计、数据统计、视频管理
- ⚠️ **延期**：系统设置API（P2，非MVP必需）
- 🚀 **启动建议**：史诗011可以立即开始，故事011.006需调整系统设置相关功能实现

## 测试策略

1. **单元测试**：对新增组件和工具函数进行Jest单元测试
2. **集成测试**：测试API客户端与后端服务的集成
3. **UI测试**：对页面交互和用户体验进行测试
4. **性能测试**：验证数据统计页面的加载和渲染性能
5. **兼容性测试**：测试不同设备和浏览器的兼容性
6. **回归测试**：确保现有功能不受影响

---

**故事经理交接说明：**

请为这个已有项目开发详细用户故事。关键考虑：

- 这是对现有mini项目的增强，技术栈：TypeScript、React、Hono RPC、Tailwind CSS，测试使用Jest
- 集成点：史诗7,8,9,10移植的allin系统API模块（channel、company、disability_person、order、platform、salary等）
- 现有模式：遵循mini项目现有的api.ts RPC客户端模式、页面结构和路由配置
- 关键兼容要求：不影响现有登录、注册、个人资料等功能，保持系统完整性
- 每个故事必须验证现有功能保持完整

史诗应在保持系统完整性的同时，为企业用户提供完整的残疾人就业管理功能，实现`docs/小程序原型/yongren.html`中的完整页面功能。