Story 5.12: 小程序手机号获取集成
Status
Draft
Story
As a 出行用户
I want 能够通过微信小程序一键获取我的手机号
so that 快速完成订单联系信息填写
Acceptance Criteria
- 支持微信小程序
getPhoneNumber 功能调用
- 实现手机号解密API接口,接收小程序加密数据
- 将获取的手机号保存到用户信息中
- 订单确认页面显示已获取的手机号状态
- 支持手机号获取失败的重试机制
- 确保手机号数据安全性和隐私保护
- 手机号获取成功后自动填充到订单联系信息
- 支持手机号验证状态显示
Tasks / Subtasks
Dev Notes
技术栈信息
- 前端框架: Taro + React 小程序框架 [Source: architecture/tech-stack.md#L13]
- 后端框架: Hono + TypeORM [Source: architecture/tech-stack.md#L12, L16]
- 数据库: PostgreSQL 17 [Source: architecture/tech-stack.md#L15]
项目结构
- 小程序项目:
mini/ 目录 [Source: architecture/source-tree.md#L11]
- API服务器:
packages/server/ 目录 [Source: architecture/source-tree.md#L62]
- 路由文件位置:
packages/server/src/api/auth/phone-decrypt/ [Source: architecture/source-tree.md#L72-L80]
数据模型
- 用户实体: 已存在
phone 字段 [Source: packages/server/src/modules/users/user.entity.ts#L17-L18]
- 现有用户字段:
id, username, email, password, phone, avatarFileId, roles [Source: architecture/data-model-schema-changes.md#L13-L18]
API设计规范
- 非通用CRUD路由: 使用业务操作路由模式 [Source: architecture/non-generic-crud-standards.md#L206-L295]
- 路由文件组织: 单一文件聚合模式 [Source: architecture/non-generic-crud-standards.md#L426-L464]
- 错误处理: 统一错误响应格式 [Source: architecture/non-generic-crud-standards.md#L359-L380]
- 权限控制: 使用
authMiddleware [Source: architecture/non-generic-crud-standards.md#L381-L398]
Schema设计规范
- 请求Schema: 使用Zod schema定义 [Source: architecture/non-generic-crud-standards.md#L297-L318]
- 响应Schema: 标准化响应格式 [Source: architecture/non-generic-crud-standards.md#L335-L354]
- 参数验证: 使用
z.coerce 处理类型转换 [Source: architecture/non-generic-crud-standards.md#L299-L302]
安全要求
- 认证: JWT Bearer Token [Source: architecture/api-design-integration.md#L9-L11]
- 数据解密: 微信SDK提供的手机号解密机制
- 隐私保护: 使用数据库标准安全措施
测试
- 测试框架: Vitest + Testing Library [Source: architecture/coding-standards.md#L15]
- 测试位置:
web/tests/integration/server/api/auth/phone-decrypt/ [Source: architecture/source-tree.md#L147]
- 测试类型: 集成测试验证API功能 [Source: architecture/non-generic-crud-standards.md#L417-L421]
Testing
测试标准
- 测试文件位置:
web/tests/integration/server/api/auth/phone-decrypt/
- 测试框架: Vitest + hono/testing
- 测试模式: 集成测试验证完整的API流程
- Mock策略: 使用
vi.mocked() mock微信SDK [Source: architecture/non-generic-crud-standards.md#L559-L572]
测试要求
- 验证手机号解密成功场景
- 测试解密失败的错误处理
- 验证用户手机号更新功能
- 测试权限控制和认证验证
- 验证重试机制和错误提示
Change Log
| Date |
Version |
Description |
Author |
| 2025-10-25 |
1.0 |
创建故事文档 |
Bob (Scrum Master) |
Dev Agent Record
Agent Model Used
Debug Log References
Completion Notes List
File List
QA Results