# 史诗017 - 人才小程序功能实现 ## 史诗目标 在mini-talent项目中完整实现人才小程序的所有页面功能,基于史诗015已创建的API模块基础,为残疾人用户提供个人信息管理、考勤记录、就业信息查询等完整的服务体验,并创建rencai mini ui包提供可复用的UI组件。 ## 状态更新(2025-12-26) - **依赖状态**:史诗015已完成4/13核心故事(31%),核心API就绪,包含手机号登录支持 - **启动建议**:史诗017可以立即开始,与史诗015并行开发 - **调整说明**:参照史诗011(用人方小程序)的成功模式,采用相同的架构和开发规范 - **🆕 新增故事017.011**:更新人才小程序登录界面,提示支持手机号登录(纯UI文案更新) - **🆕 新增故事017.012**:统一Navbar导航栏组件规范,参照用人方小程序实现(P1用户体验改进) - **🆕 新增故事017.013**:首页(Dashboard)样式对照原型调整(P1用户体验改进) - **故事拆分**:史诗拆分为13个故事,便于逐步开发和测试 - **整体进度**: - ✅ 故事017.001已完成 (rencai mini ui包基础框架搭建) - ✅ 故事017.002已完成 (登录与首页实现) - ✅ 故事017.009已完成 (管理后台用户管理功能完善 - P0阻塞性任务) - ✅ 故事017.011已完成 (登录界面支持手机号登录提示 + 修复登录API调用bug - P1用户体验改进) - ✅ 故事017.012已完成 (统一Navbar导航栏组件规范 - P1用户体验改进) - ✅ 故事017.013已完成 (首页样式对照原型调整 - P1用户体验改进) - ⏳ 故事017.003-017.008、017.010待开始 ## 史诗描述 ### 现有系统上下文 **当前相关功能:** - **mini-talent项目**:基础小程序前端框架(从mini项目复制) - **mini-ui-packages目录**:已创建多个UI包(yongren-dashboard-ui、yongren-talent-management-ui等) - **史诗015成果**:已为人才小程序补充了人才用户认证、个人信息查询等API接口 - **原型设计**:`docs/小程序原型/rencai.html` 提供了完整的6个页面原型设计 **技术栈:** - 前端:TypeScript、React、Hono RPC客户端、Tailwind CSS、Taro - 测试:Jest(mini项目使用Jest) - API通信:基于Hono RPC的API客户端模式 - 包管理:pnpm workspace **集成点:** - 在mini-ui-packages下创建rencai相关的mini ui包,每个UI包包含自己的API客户端和RPC类型 - 参照yongren系列UI包的模式,每个UI包独立管理自己的API路由和类型定义 - UI包内部封装API调用逻辑,页面组件内部使用对应的API客户端 - mini-talent只需要导入和使用页面组件,无需关心API客户端的实现细节 - **UI组件开发**:基于原型文件创建独立的rencai mini ui包,复用现有小程序通用组件 - 遵循mini-talent项目现有的页面结构和路由配置 **史诗015完成状态更新(2025-12-25):** - ✅ **已就绪**:数据库schema、人才用户认证、个人信息查询API - ⚠️ **进行中**:就业信息API、帮助与支持API、通知与消息API、数据统计API - 🚀 **启动建议**:史诗017可以立即开始,参照已完成的API进行前端开发 ### 增强详情 **新增/变更内容:** **1. 创建rencai mini ui包:** 在`mini-ui-packages`下创建以下UI包: - `@d8d/rencai-dashboard-ui` - 人才首页/个人主页UI包 - `@d8d/rencai-auth-ui` - 人才登录认证UI包 - `@d8d/rencai-personal-info-ui` - 人才个人信息UI包 - `@d8d/rencai-attendance-ui` - 人才考勤记录UI包 - `@d8d/rencai-employment-ui` - 人才就业信息UI包 - `@d8d/rencai-settings-ui` - 人才设置页UI包 - `@d8d/rencai-shared-ui` - 人才共享UI组件包 **2. API客户端集成模式:** - 每个rencai UI包内部包含自己的API客户端(`src/api/index.ts`) - UI包内部封装API调用逻辑,页面组件内部直接使用对应的API客户端 - 通过package.json的`exports`字段配置导出路径,参照yongren系列UI包的配置格式: ```json "exports": { ".": { ... }, "./api": { ... }, "./pages/LoginPage/LoginPage": { ... } } ``` - mini-talent使用export配置的完整路径导入页面组件:`import LoginPage from '@d8d/rencai-auth-ui/pages/LoginPage/LoginPage'` - 支持`/api/v1/rencai`路径前缀的API调用 - 提供类型安全的TypeScript RPC客户端 **3. 实现页面功能:** 在mini-talent项目中实现以下6个核心页面: 1. 登录页 - 人才用户身份证号/残疾证号密码登录 2. 首页/个人主页 - 个人概览、打卡状态、快捷功能入口、最新通知 3. 考勤记录页 - 考勤日历、打卡明细、考勤统计 4. 个人信息页 - 基本信息、银行卡信息、证件照片 5. 就业信息页 - 当前就业状态、薪资记录、就业历史 6. 设置页 - 账号安全、消息通知、帮助中心、退出登录 **集成方式:** 1. **API客户端模式**:每个UI包内部管理自己的API客户端和RPC类型,API调用逻辑封装在页面组件内部,mini-talent无需关心API实现 2. **UI组件开发**:基于原型文件创建独立的rencai mini ui包,参照yongren系列UI包的结构 3. **导航栏组件集成**:所有页面统一集成`Navbar`导航栏组件,建立页面层级结构规范 4. **页面结构**:遵循mini-talent项目现有的页面目录结构(`src/pages/`),页面使用package.json exports配置的完整路径导入UI包组件 5. **路由配置**:使用现有的路由配置模式,配置底部TabBar导航 **成功标准:** 1. 6个页面功能完整实现,符合原型设计要求 2. rencai系列mini ui包创建完成,组件可复用 3. 与史诗015补充的API模块无缝集成 4. 保持mini-talent项目现有功能的完整性 5. 通过Jest测试验证,包括组件测试和集成测试 6. 遵循项目编码规范和UI组件使用规范 ## 故事列表 ### 故事017.001:rencai mini ui包基础框架搭建 ✅ 设计完成 **状态**: 📝 READY (清晰度评分: 9/10) **背景:** 史诗015已完成人才用户认证API和个人信息查询API,需要创建rencai系列的mini ui包,每个UI包包含自己的API客户端和RPC类型,建立人才小程序的基础技术框架。 **详细设计文档**: [docs/stories/017.001.story.md](../stories/017.001.story.md) **任务列表:** 1. 分析史诗015已完成的API模块,确定每个UI包需要集成的RPC客户端 2. 在`mini-ui-packages`下创建rencai系列UI包基础结构: - `@d8d/rencai-dashboard-ui` - 包含首页相关的API客户端和页面组件 - `@d8d/rencai-auth-ui` - 包含人才认证相关的API客户端和登录组件 - `@d8d/rencai-personal-info-ui` - 包含个人信息查询相关的API客户端和页面组件 - `@d8d/rencai-attendance-ui` - 包含考勤记录相关的API客户端和页面组件(前端模拟) - `@d8d/rencai-employment-ui` - 包含就业信息相关的API客户端和页面组件 - `@d8d/rencai-settings-ui` - 包含设置相关的API客户端和页面组件 - `@d8d/rencai-shared-ui` - 包含共享UI组件 3. 为每个UI包创建API客户端(`src/api/index.ts`),集成对应的RPC接口 4. 配置每个UI包的package.json,添加页面组件的exports导出路径(参照yongren系列UI包的export配置) 5. 配置mini-talent项目的路由结构,支持页面导航 6. 创建基础布局组件(状态栏、底部导航、页面容器),参考原型设计`docs/小程序原型/rencai.html` 7. 建立人才用户认证框架,支持后续登录页面集成 8. 编写基础测试,验证现有功能不受影响 **验收标准:** - [ ] rencai系列7个UI包基础结构创建完成 - [ ] 每个UI包包含自己的API客户端(`src/api/index.ts`)和对应的RPC类型定义 - [ ] 每个UI包的package.json配置了页面组件的exports导出路径(如`"./pages/LoginPage/LoginPage"`),参照yongren-dashboard-ui的格式 - [ ] mini-talent使用exports配置的完整路径导入页面组件:`import LoginPage from '@d8d/rencai-auth-ui/pages/LoginPage/LoginPage'` - [ ] 页面组件内部已封装API调用逻辑,mini-talent无需关心API实现 - [ ] mini-talent项目的路由结构配置完成,支持页面导航 - [ ] 基础布局组件(状态栏、底部导航、页面容器)可用并符合移动端设计 - [ ] 人才用户认证框架就绪,支持后续登录页面集成 - [ ] 现有mini-talent项目功能不受影响 ### 故事017.002:登录与首页实现 ✅ 已完成 **状态**: ✅ Done **背景:** 依赖故事017.001完成的基础框架和史诗015提供的人才用户认证API、个人信息查询API,实现人才用户登录功能和首页/个人主页页面。 **任务列表:** 1. 创建`@d8d/rencai-auth-ui`包,实现登录页面功能 2. 支持人才用户身份证号/残疾证号密码登录 3. 完善认证状态管理(token存储、验证、自动刷新) 4. 创建`@d8d/rencai-dashboard-ui`包,实现首页/个人主页页面 5. 展示个人概览数据(姓名、残疾类型、出勤统计、本月薪资) 6. 实现打卡状态显示(已打卡/未打卡,上班/下班打卡时间) 7. 集成快捷功能入口(个人信息、考勤记录、薪资查询、企业信息) 8. 实现最新通知列表 9. 集成Navbar导航栏组件,建立统一的页面层级结构(主页面使用TabBarLayout+Navbar无返回按钮) 10. 优化用户体验,确保页面设计符合原型标准 11. 编写集成测试,验证登录和首页功能 **验收标准:** - [ ] 登录页面功能完整,支持人才用户身份证号/残疾证号密码登录 - [ ] 登录状态管理正常,token存储和验证可靠 - [ ] 首页/个人主页页面展示个人概览数据(姓名、残疾类型、出勤统计、本月薪资) - [ ] 打卡状态显示正常(已打卡/未打卡,上班/下班打卡时间) - [ ] 快捷功能入口可用(个人信息、考勤记录、薪资查询、企业信息) - [ ] 最新通知列表显示正常 - [ ] 页面设计符合原型标准,移动端体验良好,已集成Navbar导航栏组件 - [ ] 与基础框架(故事017.001)无缝集成,建立统一的页面层级结构规范 ### 故事017.003:个人信息功能实现 ⏳ 待开始 **状态**: ⏳ Pending **背景:** 依赖故事017.001-017.002完成的基础,以及史诗015提供的个人信息查询API、银行卡信息查询API、证件照片查询API,实现个人信息管理功能。 **任务列表:** 1. 创建`@d8d/rencai-personal-info-ui`包,实现个人信息页面 2. 展示个人基本信息(姓名、性别、年龄、身份证号、残疾证号、残疾类型、联系电话、联系地址) 3. 集成银行卡信息查询API,展示银行卡列表(银行名称、卡号脱敏、卡类型、是否默认) 4. 集成证件照片查询API,展示证件照片列表(身份证、残疾证、体检报告、征信报告) 5. 支持证件照片预览功能 6. 集成Navbar导航栏组件,使用Navbar带返回按钮(二级页面) 7. 优化页面布局和数据展示 8. 编写集成测试,验证个人信息功能 **验收标准:** - [ ] 个人信息页面展示完整的个人基本信息 - [ ] 银行卡信息查询接口返回银行卡信息(卡号脱敏处理) - [ ] 证件照片查询接口返回证件照片信息 - [ ] 支持证件照片预览功能 - [ ] 页面设计符合原型标准,已集成Navbar导航栏组件 - [ ] 所有查询接口验证用户权限,确保用户只能查询自己的数据 ### 故事017.004:考勤记录功能实现 ⏳ 待开始 **状态**: ⏳ Pending **背景:** 依赖故事017.001-017.003完成的基础,实现考勤记录查看功能。注:史诗015的考勤记录API为P2延期功能,当前打卡功能为前端模拟实现。 **任务列表:** 1. 创建`@d8d/rencai-attendance-ui`包,实现考勤记录页面 2. 实现考勤日历视图,标记已打卡日期和打卡状态(前端模拟数据) 3. 实现月份切换功能 4. 展示考勤统计(出勤率、正常出勤天数、迟到次数、早退次数、缺勤次数) 5. 实现打卡明细列表,按日期倒序排列 6. 显示每日打卡详情(上班打卡时间、下班打卡时间、打卡状态) 7. 集成Navbar导航栏组件,使用Navbar带返回按钮(二级页面) 8. 优化大数据量列表性能和页面间导航 9. 编写集成测试,验证考勤记录功能 **验收标准:** - [ ] 考勤日历视图功能完整,正确标记打卡状态(前端模拟数据) - [ ] 支持月份切换,展示对应月份的考勤数据 - [ ] 考勤统计数据展示完整(出勤率、正常出勤天数、迟到次数、早退次数、缺勤次数) - [ ] 打卡明细列表功能完整,支持按日期倒序排列 - [ ] 显示每日打卡详情(上班打卡时间、下班打卡时间、打卡状态) - [ ] 页面设计符合原型标准,已集成Navbar导航栏组件 - [ ] 前端模拟数据结构符合后续API接口规范,便于后续替换为真实API ### 故事017.005:就业信息功能实现 ⏳ 待开始 **状态**: ⏳ Pending **背景:** 依赖故事017.001-017.004完成的基础,以及史诗015提供的就业信息API(当前就业状态查询、薪资记录查询、就业历史查询),实现就业信息查看功能。 **任务列表:** 1. 创建`@d8d/rencai-employment-ui`包,实现就业信息页面 2. 集成当前就业状态查询API,展示当前工作信息(企业名称、岗位名称、入职日期、工作状态、订单编号、薪资水平) 3. 集成薪资记录查询API,展示薪资发放历史,支持按月份查询 4. 实现就业历史时间线视图,展示所有历史就业记录 5. 支持薪资详情查看(薪资明细) 6. 集成Navbar导航栏组件,使用Navbar带返回按钮(二级页面) 7. 优化页面加载性能和数据展示 8. 编写集成测试,验证就业信息功能 **验收标准:** - [ ] 当前就业状态查询接口返回正确的当前工作信息 - [ ] 薪资记录查询接口返回历史薪资记录,支持按月查询 - [ ] 就业历史查询接口返回个人的就业历史记录 - [ ] 就业历史时间线视图展示完整,按时间倒序排列 - [ ] 支持薪资详情查看功能 - [ ] 页面设计符合原型标准,已集成Navbar导航栏组件 ### 故事017.006:设置与帮助功能实现 ⏳ 待开始 **状态**: ⏳ Pending **背景:** 依赖故事017.001-017.005完成的基础,以及史诗015提供的帮助与支持API、登录日志查询API,实现设置页和帮助功能。 **任务列表:** 1. 创建`@d8d/rencai-settings-ui`包,实现设置页面 2. 展示个人信息摘要(姓名、残疾类型、出勤统计、本月薪资) 3. 实现功能入口列表(修改个人信息、账号与安全、消息通知设置) 4. 实现帮助与支持入口(帮助中心、用户协议、隐私政策) 5. 集成登录日志查询API,展示个人登录日志 6. 实现退出登录功能 7. 集成Navbar导航栏组件(设置页在底部TabBar中) 8. 编写集成测试,验证设置与帮助功能 **验收标准:** - [ ] 设置页面展示个人信息摘要 - [ ] 功能入口列表可用(修改个人信息、账号与安全、消息通知设置) - [ ] 帮助与支持入口可用(帮助中心、用户协议、隐私政策) - [ ] 登录日志查询接口返回个人的登录日志记录 - [ ] 退出登录功能正常 - [ ] 页面设计符合原型标准,已集成Navbar导航栏组件 ### 故事017.007:通知与消息功能实现 ⏳ 待开始 **状态**: ⏳ Pending **背景:** 依赖故事017.001-017.006完成的基础,以及史诗015提供的通知与消息API,实现系统通知和消息推送功能。 **任务列表:** 1. 扩展`@d8d/rencai-shared-ui`包,创建通知相关组件 2. 集成通知列表查询API,展示个人通知列表 3. 实现通知详情查看功能 4. 实现通知标记已读功能(单条标记、批量标记) 5. 展示未读通知数量 6. 在首页集成通知入口,显示最新通知 7. 在设置页添加消息通知设置入口 8. 编写集成测试,验证通知与消息功能 **验收标准:** - [ ] 通知列表查询接口返回个人的通知列表,支持分页 - [ ] 通知详情查询接口返回通知的详细信息 - [ ] 通知标记已读接口支持单条和批量标记已读 - [ ] 未读通知数查询接口返回正确的未读通知数量 - [ ] 首页正确显示最新通知 - [ ] 设置页消息通知设置入口可用 - [ ] 页面设计符合原型标准 ### 故事017.008:性能优化与测试完善 ⏳ 待开始 **状态**: ⏳ Pending **背景:** 依赖故事017.001-017.007和017.009完成的所有功能,进行性能优化和测试完善,确保人才小程序达到生产环境质量标准。 **注意**: 故事017.009为P0优先级阻塞性任务,必须在性能优化之前完成,否则人才用户无法登录小程序。 ### 故事017.009:管理后台用户管理功能完善 ✅ 已完成 **状态**: ✅ Done **优先级**: P0 - 阻塞性任务(人才登录必需) ### 故事017.011:人才小程序登录界面支持手机号登录提示 🆕 **状态**: ✅ Ready for Review **优先级**: P1 - 用户体验改进 **背景:** 依赖故事015.013(后端已支持手机号登录)和故事017.002(登录页面已实现),需要更新登录界面UI文案,提示用户可以使用手机号登录。 **实现备注**: 同时修复了登录API调用bug (`body` → `json`) **问题分析:** - 后端API已支持: 手机号/身份证号/残疾证号三种登录方式(故事015.013已完成) - 前端登录页面已实现: 但UI文案仍显示"身份证号/残疾证号",未提示手机号登录 - **用户体验问题**: 用户不知道可以使用手机号登录,仍然需要翻看证件 **技术方案:** - 纯UI文案更新,无逻辑变更 - 更新登录页面的输入框标签、placeholder、验证提示 - 更新错误提示文案,保持通用性 - 零风险,向后兼容 **详细设计文档**: [docs/stories/017.011.story.md](../stories/017.011.story.md) **任务列表:** 1. 更新`LoginPage`组件的UI文案: - 输入框标签: "身份证号/残疾证号" → "手机号/身份证号/残疾证号" - 输入框placeholder更新 - 表单验证提示更新 2. 更新`useAuth` Hook的错误提示文案 3. 验证三种登录方式都正常工作 4. 更新相关文档 **验收标准:** - [ ] 登录页面显示"手机号/身份证号/残疾证号"作为输入提示 - [ ] 用户可以使用手机号成功登录 - [ ] 身份证号和残疾证号登录仍然正常工作 - [ ] 错误提示友好且通用 - [ ] 所有现有功能不受影响 ### 故事017.012:统一Navbar导航栏组件规范 ✅ Ready for Review **状态**: ✅ Ready for Review (清晰度评分: 9/10) **优先级**: P1 - 用户体验改进 **背景:** 对照人才小程序原型(rencai.html)和用人方小程序(yongren)的实现规范,发现人才小程序已创建的页面中未正确使用Navbar导航栏组件。需要建立统一的页面层级结构规范:TabBar页面使用Navbar无返回按钮,非TabBar页面使用Navbar带返回按钮。 **问题分析:** - **原型对照** (`docs/小程序原型/rencai.html`): - TabBar包含4个页面:首页(行160-301)、考勤记录页(行303-481)、个人信息页(行483-628)、设置页(行770-906) - 就业信息页(行630-768)不在TabBar中,需要从首页"薪资查询"入口跳转 - **首页(Dashboard)**: 未使用Navbar组件,仅有``空白占位 - **TabBar配置** (`mini-talent/src/app.config.ts`): 4个TabBar页面为首页、考勤、我的(personal-info)、更多(settings) - **TabBar页面规范**: 使用`leftIcon=""`和`leftText=""`隐藏返回按钮,参照yongren-dashboard-ui:139-148 - **非TabBar页面规范**: 使用`leftIcon="i-heroicons-chevron-left-20-solid"`和`leftText="返回"`,参照yongren-order-management-ui:580-589 - **Navbar组件来源**: `@d8d/mini-shared-ui-components/components/navbar` **页面层级划分:** - **TabBar页面(一级,无返回按钮)**: - 首页 (`pages/index/index`) - TabBar"首页" - 考勤记录页 (`pages/attendance/index`) - TabBar"考勤" - 个人信息页 (`pages/personal-info/index`) - TabBar"我的" - 设置页 (`pages/settings/index`) - TabBar"更多" - **非TabBar页面(二级,带返回按钮)**: - 就业信息页 (`pages/employment/index`) - 从首页跳转 **技术方案:** - 在所有页面统一导入并使用Navbar组件 - TabBar页面: `leftIcon="" leftText="" onClickLeft={() => {}}` - 非TabBar页面: `leftIcon="i-heroicons-chevron-left-20-solid" leftText="返回" onClickLeft={() => Taro.navigateBack()}` - 移除手动空白占位``,使用Navbar的`placeholder`属性 **详细设计文档**: [docs/stories/017.012.story.md](../stories/017.012.story.md) **任务列表:** 1. 更新`@d8d/rencai-dashboard-ui`包的Dashboard页面: - 导入Navbar组件: `import { Navbar } from '@d8d/mini-shared-ui-components/components/navbar'` - 在ScrollView前添加Navbar,配置为TabBar页面(无返回按钮) - 移除手动空白占位`` 2. 更新`@d8d/rencai-personal-info-ui`包的PersonalInfoPage: - 导入Navbar组件 - 添加Navbar,配置为TabBar页面(无返回按钮) 3. 更新`@d8d/rencai-attendance-ui`包的AttendancePage: - 导入Navbar组件 - 添加Navbar,配置为TabBar页面(无返回按钮) 4. 更新`@d8d/rencai-employment-ui`包的EmploymentPage: - 导入Navbar组件 - 添加Navbar,配置为非TabBar页面(带返回按钮) - 使用`Taro.navigateBack()`实现返回功能 5. 更新`@d8d/rencai-settings-ui`包的SettingsPage: - 导入Navbar组件 - 添加Navbar,配置为TabBar页面(无返回按钮) 6. 验证所有页面的导航栏样式和交互符合原型和用人方小程序规范 7. 编写测试,验证Navbar组件在各页面中的正确显示和交互 **验收标准:** - [ ] TabBar页面(首页、考勤、个人信息、设置)使用Navbar无返回按钮(leftIcon="" leftText="") - [ ] 非TabBar页面(就业信息)使用Navbar带返回按钮 - [ ] 所有页面移除手动空白占位,使用Navbar的placeholder属性 - [ ] 返回按钮点击正确调用Taro.navigateBack() - [ ] Navbar样式与用人方小程序保持一致 - [ ] 所有页面导航栏固定在顶部(fixed=true) - [ ] 测试验证导航栏在各页面的正确显示和交互 ### 故事017.013:首页(Dashboard)样式对照原型调整 📝 **状态**: 📝 Approved (清晰度评分: 9/10) **优先级**: P1 - 用户体验改进 **背景:** 对照人才小程序原型(rencai.html 行160-301),发现故事017.002实现的首页存在样式差异,需要调整以确保与原型设计一致。 **问题分析:** 对照原型首页部分(rencai.html 行160-301),发现以下样式差异: | 模块 | 原型要求 | 当前实现 | 优先级 | |------|----------|----------|--------| | 个人信息卡片 | 3列统计:本月出勤/异常记录/本月薪资 | 只有2列,缺少"异常记录" | P1 | | 头像区域 | 圆形头像(首字) + 右侧二维码按钮 | 无头像显示,无二维码按钮 | P2 | | 打卡模块标题 | "今日打卡" | 无标题 | P2 | | 打卡状态指示器 | 绿点脉冲动画 + "已打卡"文字 | 简单标签,无动画 | P1 | | 时间显示 | 大号时间"09:27" + 日期"2023年11月25日 星期六" | 无时间显示,无日期 | P1 | | 上班/下班卡片 | 圆形图标 + 灰色背景,未打卡灰色 | 蓝色方形背景 | P1 | | 远程打卡按钮 | 文案"小程序远程打卡" | 文案"远程打卡" | P2 | | 功能入口 | 4个彩色圆角方形背景 | 圆形图标卡片 | P2 | | 通知列表 | 彩色圆形图标 + 标题 + 副标题 | 红点 + 标题 + 日期 | P1 | **技术方案:** - 仅调整首页样式,不影响功能逻辑 - 保持与原型设计的像素级一致性 - 参照原型代码实现样式细节(渐变/动画/布局) - 其他页面(考勤/个人信息/就业/设置)的完整实现归到各自的故事中(017.003-017.006) **详细设计文档**: [docs/stories/017.013.story.md](../stories/017.013.story.md) **任务列表:** 1. **个人信息卡片调整** (P1): - 添加"异常记录"统计列 - 添加圆形头像显示(用户姓名首字) - 添加右侧二维码按钮图标 - 调整3列统计布局为等宽分布 2. **打卡状态模块调整** (P1): - 添加模块标题"今日打卡" - 实现打卡状态指示器(绿点 + 文字) - 添加绿色圆点脉冲动画效果 - 添加大号时间显示(格式"HH:mm") - 添加当前日期显示(格式"YYYY年MM月DD日 星期X") - 调整上班/下班卡片为圆形图标样式 - 更新远程打卡按钮文案为"小程序远程打卡" - 添加手机图标到远程打卡按钮 3. **快捷功能入口样式调整** (P2): - 调整为彩色圆角方形背景(不是圆形图标) - 应用4种颜色: 蓝/绿/紫/黄 4. **最新通知样式调整** (P1): - 调整为彩色圆形图标样式 - 通知内容显示: 标题 + 副标题 - 移除右侧红点 **验收标准:** - [ ] 个人信息卡片显示3列统计(本月出勤/异常记录/本月薪资) - [ ] 添加圆形头像显示(用户姓名首字,60px,白色边框) - [ ] 添加右侧二维码按钮图标(白色半透明圆形背景) - [ ] 打卡状态指示器: 绿色圆点 + "已打卡"文字 - [ ] 绿色圆点添加脉冲动画效果 - [ ] 添加大号时间显示(格式"HH:mm") - [ ] 添加当前日期显示(格式"YYYY年MM月DD日 星期X") - [ ] 上班/下班卡片调整为圆形图标 + 灰色背景样式 - [ ] 远程打卡按钮文案更新为"小程序远程打卡" - [ ] 快捷功能入口调整为彩色圆角方形背景 - [ ] 通知列表调整为彩色圆形图标 + 标题 + 副标题样式 - [ ] 所有样式与原型保持一致 - [ ] 移动端显示效果良好 - [ ] 现有功能不受影响 - [ ] 类型检查通过 (`pnpm typecheck`) ### 故事017.010:性能优化与测试完善 ⏳ 待开始 **状态**: ⏳ Pending **背景:** 依赖故事017.001-017.009、017.011和017.012完成的所有功能,进行性能优化和测试完善,确保人才小程序达到生产环境质量标准。 **任务列表:** 1. **性能优化**: - 页面加载性能优化(懒加载、代码分割) - 列表渲染性能优化(虚拟列表、分页加载) - 图片加载优化(懒加载、压缩) - API请求优化(缓存、防抖节流) 2. **测试完善**: - 补充单元测试,确保组件测试覆盖率≥80% - 补充集成测试,确保API集成测试覆盖率≥60% - 端到端测试,覆盖主要用户流程 - 性能测试,验证页面加载和交互性能 3. **兼容性测试**: - 测试不同小程序平台的兼容性(微信、支付宝等) - 测试不同设备和屏幕尺寸的适配 - 测试网络异常情况的处理 4. **用户体验优化**: - 添加加载状态提示 - 优化错误提示信息 - 添加空状态提示 - 优化交互动效 5. **文档更新**: - 更新API使用文档 - 更新组件使用文档 - 添加部署说明 **验收标准:** - [ ] 页面加载时间≤2秒(首屏加载) - [ ] 列表滚动流畅,无卡顿 - [ ] 组件测试覆盖率≥80% - [ ] API集成测试覆盖率≥60% - [ ] 端到端测试覆盖主要用户流程 - [ ] 兼容主流小程序平台和设备 - [ ] 用户体验良好,无明显的性能问题 - [ ] 文档完整,包含API使用说明和组件使用说明 ## 兼容性要求 - [ ] 现有mini-talent项目功能不受影响 - [ ] rencai系列UI包遵循yongren系列UI包的API客户端模式,每个包独立管理自己的API和类型 - [ ] 使用一致的UI组件库,保持界面风格统一 - [ ] 保持路由结构的统一性,新增路由不影响现有路由 - [ ] rencai系列UI包遵循现有的mini-ui-packages包结构规范 - [ ] 性能影响最小化,不影响现有功能响应速度 ## 风险缓解 **主要风险:** 1. **API集成风险**:史诗015的API可能尚未全部完成,需要并行开发 2. **UI组件复用风险**:rencai系列UI包可能与现有yongren系列UI包存在差异 3. **性能风险**:小程序性能可能影响用户体验 4. **兼容性风险**:不同小程序平台可能存在兼容性问题 **缓解措施:** 1. **分阶段集成**: - 先集成已完成的API(人才用户认证、个人信息查询) - 未完成的API使用前端模拟数据,便于后续替换 - 与史诗015保持密切沟通,了解API开发进度 2. **UI组件规范统一**: - 参照yongren系列UI包的结构和命名规范 - 复用`@d8d/mini-shared-ui-components`的通用组件 - 创建`@d8d/rencai-shared-ui`共享UI包 3. **性能优化**: - 使用懒加载和代码分割减少初始加载体积 - 列表使用虚拟列表优化大数据量渲染 - 图片使用懒加载和压缩优化加载速度 4. **兼容性测试**: - 在开发过程中持续进行多平台测试 - 使用Taro的跨平台能力,确保代码兼容性 - 针对不同平台进行适配和优化 **回滚计划:** 1. 如果新增功能导致严重问题,可临时移除新增路由,恢复原有功能 2. 每个UI包独立管理,可通过卸载对应包进行回滚 3. UI包独立发布,可通过包版本管理进行回滚 4. 保持完整的测试用例,确保回滚后功能正常 ## 完成定义 - [ ] 所有12个故事完成,验收标准全部满足 - [ ] 6个页面功能完整,符合原型设计要求 - [ ] rencai系列7个UI包创建完成,组件可复用 - [ ] API集成测试通过,包括正常流程和异常情况测试 - [ ] 现有功能回归测试通过,确保无功能退化 - [ ] 代码符合项目编码规范,通过代码审查 - [ ] 文档更新完成,包括API接口文档和用户操作手册 - [ ] 性能测试通过,页面加载时间在可接受范围内 - [ ] 移动端适配良好,主流设备和平台测试通过 **进度跟踪** (2025-12-26): - ✅ 故事017.001: 基础框架搭建完成 - ✅ 故事017.002: 登录与首页实现完成 - ✅ 故事017.009: 管理后台用户管理功能完成 - ✅ 故事017.011: 登录界面支持手机号登录提示完成 - ✅ 故事017.012: 统一Navbar导航栏组件规范完成 - 📝 故事017.013: 首页样式对照原型调整已批准 - ⏳ 故事017.003-017.008、017.010待开始 - **总体进度**: 46% (6/13 故事完成或已批准) ## 依赖关系 - 依赖史诗015(人才小程序API支持)提供完整的API接口 - 依赖现有的mini-talent项目基础框架和构建配置 - 依赖mini-ui-packages目录下的其他UI包作为参考 - 依赖现有的通用UI组件包(`@d8d/mini-shared-ui-components`) - 参照史诗011(用人方小程序功能实现)的成功模式和架构 **史诗015依赖状态(2025-12-25):** - ✅ **已就绪**:人才用户认证、个人信息查询 - ⚠️ **进行中**:就业信息API、帮助与支持API、通知与消息API - ⚠️ **延期**:考勤记录API(P2优先级,前端模拟实现) - 🚀 **启动建议**:史诗017可以立即开始,与史诗015并行开发 ## 测试策略 1. **单元测试**:对新增组件和工具函数进行Jest单元测试 2. **集成测试**:测试API客户端与后端服务的集成 3. **UI测试**:对页面交互和用户体验进行测试 4. **性能测试**:验证页面的加载和渲染性能 5. **兼容性测试**:测试不同小程序平台和设备的兼容性 6. **回归测试**:确保现有功能不受影响 --- **故事经理交接说明:** 请为这个已有项目开发详细用户故事。关键考虑: - 这是对现有mini-talent项目的增强,技术栈:TypeScript、React、Hono RPC、Tailwind CSS、Taro,测试使用Jest - 集成点:史诗015补充的人才小程序API模块(人才用户认证、个人信息查询、就业信息查询等) - 参照模式:史诗011(用人方小程序)的成功模式和架构,yongren系列UI包的结构规范 - API集成模式:每个rencai UI包内部管理自己的API客户端和RPC类型,API调用逻辑封装在页面组件内部,mini-talent只需导入页面组件使用 - UI包创建:在mini-ui-packages下创建rencai系列UI包,参照yongren系列UI包的结构 - 关键兼容要求:不影响现有功能,保持系统完整性 - 每个故事必须验证现有功能保持完整 史诗应在保持系统完整性的同时,为残疾人用户提供完整的人才小程序功能,实现`docs/小程序原型/rencai.html`中的完整页面功能,并创建可复用的rencai mini ui包。