2
0
Эх сурвалжийг харах

docs(epic-017): 新增故事017.011 - 人才小程序登录界面支持手机号登录提示

功能说明:
- 更新登录页面UI文案,提示支持手机号/身份证号/残疾证号登录
- 纯UI文案更新,无逻辑变更,零风险
- 依赖故事015.013(后端已支持)和017.002(登录页面已实现)

UI更新内容:
- 输入框标签: "身份证号/残疾证号" → "手机号/身份证号/残疾证号"
- 输入框placeholder和验证提示同步更新
- 错误提示保持通用性: "账号或密码错误"

用户体验提升:
- 手机号放在首位,最常用最容易记忆
- 符合主流APP登录习惯
- 用户无需翻看证件即可登录

🤖 Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 3 долоо хоног өмнө
parent
commit
90beb930cd

+ 39 - 32
docs/prd/epic-017-talent-mini-program-implementation.md

@@ -4,15 +4,16 @@
 在mini-talent项目中完整实现人才小程序的所有页面功能,基于史诗015已创建的API模块基础,为残疾人用户提供个人信息管理、考勤记录、就业信息查询等完整的服务体验,并创建rencai mini ui包提供可复用的UI组件。
 
 ## 状态更新(2025-12-26)
-- **依赖状态**:史诗015已完成3/8核心故事(38%),核心API就绪
+- **依赖状态**:史诗015已完成4/13核心故事(31%),核心API就绪,包含手机号登录支持
 - **启动建议**:史诗017可以立即开始,与史诗015并行开发
 - **调整说明**:参照史诗011(用人方小程序)的成功模式,采用相同的架构和开发规范
-- **🔴 重要发现**:缺少管理后台用户管理功能,导致人才用户无法登录!已补充故事017.009(P0阻塞性任务)
-- **故事拆分**:史诗拆分为9个故事,便于逐步开发和测试
+- **🆕 新增故事017.011**:更新人才小程序登录界面,提示支持手机号登录(纯UI文案更新)
+- **故事拆分**:史诗拆分为11个故事,便于逐步开发和测试
 - **整体进度**:
   - ✅ 故事017.001已完成 (rencai mini ui包基础框架搭建)
   - ✅ 故事017.002已完成 (登录与首页实现)
   - ✅ 故事017.009已完成 (管理后台用户管理功能完善 - P0阻塞性任务)
+  - ⏳ 故事017.011待开始 (登录界面支持手机号登录提示 - P1用户体验改进)
   - ⏳ 故事017.003-017.008、017.010待开始
 
 ## 史诗描述
@@ -279,41 +280,47 @@
 
 **注意**: 故事017.009为P0优先级阻塞性任务,必须在性能优化之前完成,否则人才用户无法登录小程序。
 
-### 故事017.009:管理后台用户管理功能完善 🔴 P0 - 阻塞性任务
-**状态**: ✅ Approved (清晰度评分: 10/10)
+### 故事017.009:管理后台用户管理功能完善 ✅ 已完成
+**状态**: ✅ Done
 **优先级**: P0 - 阻塞性任务(人才登录必需)
-**背景:** 史诗015已完成人才用户认证API,支持通过`personId`关联残疾人记录。但管理后台的用户管理页面缺少创建人才用户的功能,导致残疾人无法登录人才小程序。
-
-**问题分析:**
-- 后端API已支持: `CreateUserDto`/`UpdateUserDto`包含`userType`和`personId`字段
-- 数据库已支持: `users2`表包含`userType`字段(支持admin/employer/talent)和`personId`字段
-- 残疾人选择器已存在: `@d8d/allin-disability-person-management-ui/components/DisabledPersonSelector`
-- **前端组件缺失**: `UserManagement`组件缺少`userType`和`personId`字段
 
-**详细设计文档**: [docs/stories/017.009.story.md](../stories/017.009.story.md)
+### 故事017.011:人才小程序登录界面支持手机号登录提示 🆕
+**状态**: ✅ Approved
+**优先级**: P1 - 用户体验改进
+**背景:** 依赖故事015.013(后端已支持手机号登录)和故事017.002(登录页面已实现),需要更新登录界面UI文案,提示用户可以使用手机号登录。
 
-**任务列表:**
-1. 创建`DisabledPersonSelectorWrapper`组件,封装残疾人选择器
-2. 在`UserManagement`组件中添加`userType`下拉选择器
-3. 实现条件渲染:当`userType='talent'`时显示残疾人选择器
-4. 更新表单Schema和默认值,支持`userType`和`personId`字段
-5. 优化用户体验:添加表单验证、错误提示、加载状态
-6. 用户列表添加"用户类型"和"关联残疾人"列
-7. 编写测试:组件测试、集成测试、E2E测试
-8. 更新文档和史诗进度
-
-**验收标准:**
-- [ ] 管理员可以在用户管理页面创建人才用户
-- [ ] 选择用户类型为"人才用户"时,显示残疾人选择器
-- [ ] 创建人才用户成功后,`users2`记录包含正确的`userType='talent'`和`personId`
-- [ ] 创建的人才用户可以使用身份证号/残疾证号登录人才小程序
-- [ ] 用户列表正确显示用户类型和关联的残疾人信息
-- [ ] 所有测试通过(组件测试、集成测试、E2E测试、类型检查)
-- [ ] 现有功能不受影响(admin和employer用户创建流程)
+**问题分析:**
+- 后端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.010:性能优化与测试完善 ⏳ 待开始
 **状态**: ⏳ Pending
-**背景:** 依赖故事017.001-017.009完成的所有功能,进行性能优化和测试完善,确保人才小程序达到生产环境质量标准。
+**背景:** 依赖故事017.001-017.009和017.011完成的所有功能,进行性能优化和测试完善,确保人才小程序达到生产环境质量标准。
 
 **任务列表:**
 1. **性能优化**:

+ 205 - 0
docs/stories/017.011.story.md

@@ -0,0 +1,205 @@
+# 故事017.011:人才小程序登录界面支持手机号登录提示
+
+## Status
+
+Approved
+
+## Story
+
+**作为** 人才用户,
+**我想要** 登录界面提示我可以使用手机号登录,
+**以便** 我知道可以使用更方便的手机号进行登录,而不需要翻看证件。
+
+## Acceptance Criteria
+
+1. 登录页面的输入框标签更新为"手机号/身份证号/残疾证号"
+2. 登录页面的输入框placeholder更新为"请输入手机号/身份证号/残疾证号"
+3. 表单验证提示更新为"请输入手机号/身份证号/残疾证号"
+4. 登录错误提示统一为"账号或密码错误"
+5. 页面注释和文档更新,说明支持三种登录方式
+6. 保持现有登录功能完全正常,仅更新UI文案
+
+## Tasks / Subtasks
+
+- [ ] 任务1:更新登录页面组件UI文案 (AC: 1, 2, 3)
+  - [ ] 1.1 更新`mini-ui-packages/rencai-auth-ui/src/pages/LoginPage/LoginPage.tsx`
+  - [ ] 1.2 修改输入框标签: "身份证号/残疾证号" → "手机号/身份证号/残疾证号"
+  - [ ] 1.3 修改输入框placeholder: "请输入身份证号或残疾证号" → "请输入手机号/身份证号/残疾证号"
+  - [ ] 1.4 修改表单验证提示: "请输入身份证号或残疾证号" → "请输入手机号/身份证号/残疾证号"
+  - [ ] 1.5 更新组件注释,说明支持三种登录方式
+
+- [ ] 任务2:更新认证Hook的错误提示 (AC: 4)
+  - [ ] 2.1 更新`mini-ui-packages/rencai-auth-ui/src/hooks/useAuth.tsx`
+  - [ ] 2.2 确认错误提示为"账号或密码错误"或"登录失败,请检查账号和密码"
+  - [ ] 2.3 移除具体的"身份证号"提示,保持通用性
+
+- [ ] 任务3:更新API客户端类型定义文档 (AC: 5)
+  - [ ] 3.1 检查`mini-ui-packages/rencai-auth-ui/src/api/index.ts`
+  - [ ] 3.2 更新相关注释,说明identifier支持三种格式
+  - [ ] 3.3 确认类型定义正确(RPC类型应已自动更新)
+
+- [ ] 任务4:验证登录功能正常 (AC: 6)
+  - [ ] 4.1 手动测试: 使用手机号+密码登录成功
+  - [ ] 4.2 手动测试: 使用身份证号+密码登录成功
+  - [ ] 4.3 手动测试: 使用残疾证号+密码登录成功
+  - [ ] 4.4 验证错误提示显示正确
+  - [ ] 4.5 确认所有现有功能不受影响
+
+- [ ] 任务5:更新故事文档 (AC: 5)
+  - [ ] 5.1 在故事017.002的Dev Agent Record中添加UI更新说明
+  - [ ] 5.2 更新史诗017的PRD文档,标记故事017.011为进行中
+  - [ ] 5.3 添加本故事的实现记录
+
+## Dev Notes
+
+### 现有实现分析
+
+**当前登录页面位置**: `mini-ui-packages/rencai-auth-ui/src/pages/LoginPage/LoginPage.tsx`
+
+**当前UI文案** (需要更新):
+```tsx
+// 第8行: 组件注释
+* 支持身份证号/残疾证号 + 密码登录
+
+// 第20行: 表单验证提示
+Taro.showToast({ title: '请输入身份证号或残疾证号', icon: 'none' })
+
+// 第76行: 输入框标签
+<Text className="text-sm text-gray-600 block mb-2">身份证号/残疾证号</Text>
+
+// 第80行: 输入框placeholder
+placeholder="请输入身份证号或残疾证号"
+```
+
+**需要更新的位置**:
+1. 组件注释 (第8行)
+2. 表单验证提示 (第20行)
+3. 输入框标签 (第76行)
+4. 输入框placeholder (第80行)
+
+**认证Hook错误提示**: `mini-ui-packages/rencai-auth-ui/src/hooks/useAuth.tsx:166`
+```tsx
+// 当前文案
+title: error.message || '登录失败,请检查身份证号和密码',
+
+// 需要更新为(保持通用性)
+title: error.message || '登录失败,请检查账号和密码',
+```
+
+### 实现方案
+
+**方案: 纯UI文案更新,无逻辑变更**
+
+优势:
+- ✅ 零风险,仅更新文案显示
+- ✅ 无需修改API调用逻辑
+- ✅ 向后兼容,后端已支持三种登录方式(故事015.013)
+- ✅ 用户立即感知到登录便利性提升
+
+### 技术细节
+
+**文件修改清单**:
+1. `mini-ui-packages/rencai-auth-ui/src/pages/LoginPage/LoginPage.tsx`
+   - 更新4处UI文案
+   - 无需修改逻辑代码
+
+2. `mini-ui-packages/rencai-auth-ui/src/hooks/useAuth.tsx`
+   - 更新1处错误提示文案
+   - 无需修改逻辑代码
+
+**文案更新对照表**:
+
+| 位置 | 当前文案 | 更新后文案 |
+|------|----------|-----------|
+| 组件注释 | 支持身份证号/残疾证号 + 密码登录 | 支持手机号/身份证号/残疾证号 + 密码登录 |
+| 输入框标签 | 身份证号/残疾证号 | 手机号/身份证号/残疾证号 |
+| 输入框placeholder | 请输入身份证号或残疾证号 | 请输入手机号/身份证号/残疾证号 |
+| 表单验证提示 | 请输入身份证号或残疾证号 | 请输入手机号/身份证号/残疾证号 |
+| 错误提示 | 登录失败,请检查身份证号和密码 | 登录失败,请检查账号和密码 |
+
+### 用户体验考虑
+
+**为什么手机号放在前面**:
+- 手机号最常用,最容易记忆
+- 符合主流APP登录习惯
+- 提升用户第一感知
+
+**文案长度考虑**:
+- 当前文案: "身份证号/残疾证号" (9个字符)
+- 更新后: "手机号/身份证号/残疾证号" (13个字符)
+- 在移动端显示仍然清晰可读
+
+### 测试验证
+
+**手动测试场景**:
+1. **手机号登录**: 输入已注册的手机号+正确密码 → 登录成功
+2. **身份证号登录**: 输入身份证号+正确密码 → 登录成功
+3. **残疾证号登录**: 输入残疾证号+正确密码 → 登录成功
+4. **空输入**: 点击登录 → 显示"请输入手机号/身份证号/残疾证号"
+5. **密码错误**: 输入正确账号+错误密码 → 显示"账号或密码错误"
+6. **账号不存在**: 输入未注册的账号 → 显示"账号或密码错误"
+
+**回归测试**:
+- 确认登录成功后跳转到首页正常
+- 确认token存储正常
+- 确认用户信息显示正常
+- 确认底部TabBar导航正常
+
+### 依赖关系
+
+**依赖故事**:
+- 故事015.013(人才用户手机号登录支持) - 已完成 ✅
+- 故事017.002(登录与首页实现) - 已完成 ✅
+
+**后续故事影响**:
+- 无后续故事依赖
+- 纯UI更新,不影响其他功能
+
+### 风险与注意事项
+
+**风险1: 文案过长导致布局问题**
+- **影响**: 移动端显示可能换行或超出
+- **缓解**: 测试不同手机屏幕尺寸,确认显示正常
+- **优先级**: P1
+
+**风险2: 用户对"手机号"登录有疑问**
+- **影响**: 用户不知道自己的手机号是否已注册
+- **缓解**: 考虑添加"忘记账号?"功能(后续优化)
+- **优先级**: P2(后续优化)
+
+**风险3: 现有功能受影响**
+- **影响**: 登录功能异常
+- **缓解**: 仅更新文案,不修改逻辑,回归测试
+- **优先级**: P0(必须验证)
+
+### 不包含在本故事中的工作
+
+- ❌ 不修改登录逻辑代码
+- ❌ 不添加新的输入验证规则
+- ❌ 不修改API调用方式
+- ❌ 不添加"忘记账号"功能(后续优化)
+- ❌ 不添加手机号注册功能(管理员后台创建)
+
+## Change Log
+
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-12-26 | 1.0 | 创建故事文档 | James |
+
+## Dev Agent Record
+
+### Agent Model Used
+
+_待实现时填写_
+
+### Debug Log References
+
+_待实现时填写_
+
+### Completion Notes List
+
+_待实现时填写_
+
+### File List
+
+_待实现时填写_