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