epic-017-talent-mini-program-implementation.md 22 KB

史诗017 - 人才小程序功能实现

史诗目标

在mini-talent项目中完整实现人才小程序的所有页面功能,基于史诗015已创建的API模块基础,为残疾人用户提供个人信息管理、考勤记录、就业信息查询等完整的服务体验,并创建rencai mini ui包提供可复用的UI组件。

状态更新(2025-12-25)

  • 依赖状态:史诗015已完成3/8核心故事(38%),核心API就绪
  • 启动建议:史诗017可以立即开始,与史诗015并行开发
  • 调整说明:参照史诗011(用人方小程序)的成功模式,采用相同的架构和开发规范
  • 故事拆分:史诗拆分为8个故事,便于逐步开发和测试
  • 整体进度
    • ✅ 故事017.001已完成 (rencai mini ui包基础框架搭建)
    • ⏳ 故事017.002-017.008待开始

史诗描述

现有系统上下文

当前相关功能:

  • 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包的配置格式:

    "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

任务列表:

  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:登录与首页实现 ⏳ 待开始

状态: ⏳ Pending 背景: 依赖故事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完成的所有功能,进行性能优化和测试完善,确保人才小程序达到生产环境质量标准。

任务列表:

  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. 保持完整的测试用例,确保回滚后功能正常

完成定义

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

进度跟踪 (2025-12-25):

  • ✅ 故事017.001: 详细设计完成 (READY状态,清晰度评分9/10)
  • ⏳ 故事017.002-017.008: 待开始
  • 总体进度: 12.5% (1/8 故事完成详细设计)

依赖关系

  • 依赖史诗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包。