为人才小程序提供完整的API接口支持并扩展数据库schema,基于现有allin系统移植模块的基础,为残疾人用户提供个人信息管理、考勤记录、就业信息、薪资查询等完整的数据支持。
当前相关功能:
数据库分析发现:
users2表目前只有admin用户和企业用户,缺乏人才用户的认证支持order_person_asset表支持打卡视频存储,但需要扩展打卡记录查询APIorder_person.salary_detail字段已存在,需要提供薪资查询APIorder_person表关联employment_order表可查询就业历史disabled_person_photo表已支持照片存储,需要提供证件照片管理APIdisabled_bank_card表已存储银行卡信息,需要提供银行卡管理API技术栈:
集成点:
新增/变更内容: 为人才小程序补充6大类API接口,包括:
只读设计原则: 遵循与用人方小程序相同的设计原则,人才小程序API以查询功能为主,所有数据修改操作(个人信息更新、银行卡管理、证件照片管理、打卡记录等)由管理员在管理后台统一处理。人才用户仅有的写入操作包括:登录认证、通知标记已读。
API路径约定:
所有人才小程序的API路径统一使用 api/v1/rencai 前缀,与现有管理后台和用人方小程序API路径做区分。例如:
POST /api/v1/rencai/auth/loginGET /api/v1/rencai/personal/infoGET /api/v1/rencai/attendance/recordsGET /api/v1/rencai/employment/infoGET /api/v1/rencai/salary/records现有管理后台API和用人方小程序API保持不变,新增的人才小程序API使用独立的路由前缀,避免路径冲突。
成功标准:
API路径约定说明:
所有新增的人才小程序API必须遵循 api/v1/rencai 前缀约定,确保与现有管理后台和用人方小程序API路径隔离。每个故事在实现API接口时需确保路径前缀正确。
只读设计说明: 遵循与用人方小程序相同的设计原则,人才小程序API以查询功能为主。所有数据修改操作(个人信息更新、银行卡管理、证件照片管理、打卡记录等)由管理员在管理后台统一处理。人才用户仅有的写入操作包括:登录认证、通知标记已读。
故事概览: 本史诗包含12个故事,其中8个为核心故事(015-01到015-03、015-05到015-07、015-09、015-10),3个延期故事(015-04、015-08、015-11),1个冗余故事(015-12)。故事015-04、015-08因打卡功能前端模拟实现而延期。
背景: 现有数据库表结构缺少支持人才小程序完整功能的关键字段,需要在不影响现有数据的前提下扩展schema。
任务列表: 注:数据库迁移脚本将在上线前统一生成,开发阶段通过TypeORM自动同步。
users2表的user_type枚举,新增talent(人才用户)类型users2表添加person_id字段(外键引用disabled_person.person_id),建立人才用户关联注: 打卡相关字段(checkin_time、checkout_time、checkin_status)暂不添加。打卡功能目前为前端模拟实现,待后续确定接口逻辑后再考虑数据库扩展。
验收标准:
users2表的user_type枚举成功扩展,新增talent类型users2表成功添加person_id字段,现有admin用户和企业用户的该字段值为NULL背景: 现有auth-module支持管理员用户和企业用户认证,需要扩展以支持人才用户身份证号/残疾证号密码登录和人才信息关联。
任务列表:
disabled_person表获取)users2表的person_id字段验证人才用户权限状态: ✅ 完成 (2025-12-25)
背景: 人才用户需要查看个人信息,包括基本信息、银行卡信息、证件照片等。所有个人信息由管理员在管理后台统一维护,人才小程序只提供查询功能。
任务列表:
个人信息查询API(disability-module扩展):
disabled_person表查询人才基本信息银行卡信息查询API(disability-module扩展):
disabled_bank_card表查询人才银行卡信息证件照片查询API(disability-module扩展):
disabled_person_photo表查询人才证件照片编写单元测试和集成测试
验收标准:
背景: 人才用户需要查看考勤记录、考勤统计和打卡明细。当前打卡功能为前端模拟实现,待后续确定真实打卡接口逻辑后再实现后端API。
任务列表:
考勤记录查询API(order-module扩展):
order_person表查询个人的打卡记录考勤统计API(order-module扩展):
order_person表统计个人的考勤数据考勤日历API(order-module扩展):
打卡明细API(order-module扩展):
打卡视频查询API(order-module扩展):
order_person_asset表查询个人的打卡视频添加数据库索引优化查询性能
编写单元测试和集成测试
验收标准:
背景: 人才用户需要查看当前就业状态、薪资记录和就业历史,基于order_person表和employment_order表进行查询。
任务列表:
当前就业状态查询API(order-module扩展):
order_person表查询个人当前的工作状态employment_order表获取企业信息薪资记录查询API(order-module扩展):
order_person.salary_detail字段查询历史薪资记录就业历史查询API(order-module扩展):
order_person表查询个人的就业历史薪资视频查询API(order-module扩展):
order_person_asset表查询个人的薪资相关视频(工资视频、个税视频)添加数据库索引优化查询性能
编写单元测试和集成测试
验收标准:
背景: 人才用户需要查看帮助文档、用户协议、隐私政策等内容。所有账号安全设置和个人信息修改由管理员在管理后台统一维护。
任务列表:
帮助中心查询API:
协议政策查询API:
登录日志查询API(auth-module扩展):
编写单元测试和集成测试
验收标准:
背景: 人才用户需要接收系统通知和消息,包括薪资发放通知、考勤异常通知、系统公告等。
任务列表:
通知列表查询API(创建通知模块或扩展现有模块):
通知详情查询API:
通知标记已读API:
未读通知数查询API:
消息推送集成:
编写单元测试和集成测试
验收标准:
背景: 人才用户需要查询当天的打卡状态和历史打卡记录。当前打卡功能为前端模拟实现,待后续确定真实打卡接口逻辑后再实现后端API。
任务列表:
当天打卡状态查询API(order-module扩展):
打卡异常记录查询API(order-module扩展):
打卡提醒查询API(order-module扩展):
编写单元测试和集成测试
验收标准:
背景: 人才用户需要查看个人数据统计和报表,包括薪资统计、工作统计等。出勤统计依赖打卡数据,当前打卡功能为前端模拟实现,出勤统计相关API可延期实现。
任务列表:
个人出勤统计API(order-module扩展,可选):
个人薪资统计API(order-module扩展):
个人工作统计API(order-module扩展):
统计报表导出:
编写单元测试和集成测试
验收标准:
背景: 确保所有人才小程序API遵循统一的路径规范,并为前端提供完整的TypeScript API客户端。
任务列表:
路由路径规范修复:
/api/v1/rencai前缀API客户端生成:
错误处理统一:
API文档完善:
集成测试更新:
验收标准:
/api/v1/rencai前缀约定背景: 人才小程序的高级功能,包括生物识别登录、智能打卡提醒、数据分析洞察等,不是当前MVP必需功能,可延期到后期优化阶段实现。
优先级说明: P2优先级,非当前MVP必需功能。可在基本功能稳定后,根据用户反馈逐步添加高级功能。
任务列表:
验收标准:
背景: 项目使用@hono/zod-openapi实现OpenAPI文档自动生成,在路由定义时通过Zod Schema添加OpenAPI元数据,文档在server包中自动聚合。各故事已包含测试要求(单元测试≥80%,集成测试≥60%),无需专门的故事进行文档和测试完善。
冗余说明:
@hono/zod-openapi自动生成,路由定义时通过.openapi()方法添加文档元数据建议: 此故事作为基础设施任务已由各故事分别覆盖,无需单独实现。保持各故事的文档和测试要求即可。
状态: ✅ Ready for Review 优先级: P1 - 用户体验改进(强烈建议)
背景: 当前人才用户登录仅支持身份证号/残疾证号,用户反馈使用不方便,希望支持手机号登录,提升登录体验。
用户价值:
技术方案:
UserService.getTalentUserByIdentifier方法,支持手机号查找users2.phone查找,失败后继续身份证号/残疾证号查找users2表的phone字段(无需数据库变更)任务列表:
扩展登录服务方法 (UserService):
getTalentUserByIdentifier方法,添加手机号查找逻辑phone字段在users2表查找userType='talent'的用户更新Schema和API文档:
TalentLoginSchema的identifier字段描述为"手机号、身份证号或残疾证号"优化错误提示:
编写测试:
数据完整性要求:
users2.phone字段有值disabled_person.phone同步到users2.phone数据迁移建议:
-- 从disabled_person表同步手机号到users2表
UPDATE users2 u
SET phone = dp.phone
FROM disabled_person dp
WHERE u.person_id = dp.id
AND u.phone IS NULL
AND dp.phone IS NOT NULL;
验收标准:
详细设计文档: docs/stories/015.013.story.md
当前状态: 史诗执行阶段,3个核心故事已完成,5个核心故事待实现。
故事完成状态:
总体进度: 4/13 故事完成(31%) MVP进度: 4/9 核心故事完成(44%,排除015-04、015-08、015-11延期和015-12冗余)
最近更新: 2025-12-26 - 故事015.013已完成:人才用户手机号登录支持,扩展UserService.getTalentUserByIdentifier方法支持手机号优先查找,更新API文档和错误提示,18个集成测试全部通过。2025-12-26 - 故事015.013已创建:人才用户手机号登录支持,允许人才用户使用手机号/身份证号/残疾证号登录,提升用户体验。2025-12-25 - 故事015-03已完成:个人信息查询API、银行卡信息查询API(卡号脱敏)、证件照片查询API、所有11个集成测试通过。2025-12-25 - 故事015-02已完成:人才用户认证API、JWT登录、退出登录、获取用户信息、认证中间件、所有16个测试通过。2025-12-24 - 故事015-01已完成:UserType枚举扩展、personId字段添加、TypeORM实体和Schema更新、测试通过。
主要风险:
缓解措施:
user_type枚举,不影响现有用户类型users2表添加可为空的person_id字段,现有用户不受影响order_person表添加可为空的打卡字段,现有记录不受影响回滚计划:
user_type枚举扩展:新增的枚举值不影响原有数据,可安全保留person_id字段:如需要可删除该字段,人才用户可暂时通过其他方式关联故事经理交接说明:
请为这个人才小程序API支持史诗开发详细用户故事。关键考虑:
史诗应在保持系统兼容性的同时,为人才用户提供完整的API支持,为后续人才小程序功能实现奠定基础。