107 lines
3.7 KiB
Markdown
107 lines
3.7 KiB
Markdown
|
|
# 微信小程序(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` 或硬编码。
|