Files
Wx_WxCheck_Prod/openspec/specs/wechat-miniapp/spec.md

107 lines
3.7 KiB
Markdown
Raw Normal View History

# 微信小程序CommunicationRecords规范
## Purpose
本能力描述小程序端的主要用户流程、页面职责以及与后端 API 的交互约定。
## Requirements
### Requirement: 协议勾选门槛
系统 SHALL 要求用户在登录前勾选用户协议(隐私合规前置)。
实现位置:`pages/logs/logs.js`
#### Scenario: 未勾选协议尝试登录
- **WHEN** 用户未勾选协议并触发登录流程
- **THEN** 小程序提示“请先勾选用户协议”
### Requirement: 登录流程(微信 code → 后端 Login
系统 SHALL 使用 `wx.login()` 获取 `code` 并调用后端登录接口。
接口:`POST /api/Login/Login`
行为:
- 登录成功时SHALL 将 `openid(UserKey)` 写入本地缓存 `openid`,并同步到 `app.globalData`
- 若用户资料未完善(缺少 `UserName/WeChatName/PhoneNumber`SHALL 进入注册/完善资料流程。
#### Scenario: 已注册用户直接进入聊天页
- **WHEN** 登录接口返回完整用户信息
- **THEN** 小程序跳转到 `pages/chat/chat`
#### Scenario: 未注册用户提示完善信息
- **WHEN** 登录接口成功但返回的用户信息不完整
- **THEN** 小程序提示需要完善资料并展示注册表单
### Requirement: 注册/完善资料流程
系统 SHALL 提供表单采集姓名、手机号、昵称与头像,并调用后端注册接口更新用户资料。
接口:`POST /api/Login/Register`
实现位置:`pages/logs/logs.js`
行为:
- 注册接口成功后SHALL 触发头像上传(`/api/Check/UploadFile`)并更新页面头像。
#### Scenario: 正常注册
- **WHEN** 用户提交有效姓名与手机号
- **THEN** 小程序完成注册并进入聊天页
### Requirement: 头像上传
系统 SHALL 允许用户选择头像并上传到服务器,后端返回永久 URL 后用于展示。
接口:`POST /api/Check/UploadFile`
实现位置:`pages/logs/logs.js``pages/chat/chat.js`
#### Scenario: 上传成功
- **WHEN** 上传接口返回 `success: true`
- **THEN** 小程序使用返回的 `url` 更新头像展示
### Requirement: 聊天页加载历史会话
系统 SHALL 在进入聊天页时请求历史会话并渲染。
接口:`POST /api/Check/GetConversationsByPage`
实现位置:`pages/chat/chat.js``loadHistory` / `GetConversations`
#### Scenario: 首次进入加载第一页
- **WHEN** 进入聊天页
- **THEN** 请求第一页Page=1, PageSize=20并展示
### Requirement: 发送消息
系统 SHALL 通过后端新增会话接口发送消息。
接口:`POST /api/Check/AddConversation`
实现位置:`pages/chat/chat.js`
#### Scenario: 文本发送成功
- **WHEN** 用户发送文本消息
- **THEN** 小程序调用新增会话接口并更新列表
### Requirement: 编辑与删除消息
系统 SHALL 支持对会话进行更新与软删除。
接口:
- `POST /api/Check/UpdateConversation`
- `POST /api/Check/DeleteConversation`
实现位置:`pages/chat/chat.js`
#### Scenario: 删除消息
- **WHEN** 用户删除某条消息
- **THEN** 小程序调用删除接口并从列表移除/刷新
## Configuration
### Requirement: API 根地址
系统 SHOULD 通过 `utils/config.js` 统一管理 `baseUrl`,并在请求中使用 `${config.baseUrl}` 拼接接口路径。
#### Scenario: 环境切换
- **WHEN** 小程序环境为 develop/trial/release
- **THEN** 选择对应 `baseUrl`
## Known Limitations
- `utils/config.js` 当前强制返回 `release`,实际不会随 `envVersion` 切换。
- 存在硬编码域名请求(例如注册/登录/上传头像部分),未统一走 `config.baseUrl`
- `app.js` 中的 `globalData.baseUrl` 为占位配置,实际请求主要依赖 `utils/config.js` 或硬编码。