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

3.7 KiB
Raw Blame 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/PhoneNumberSHALL 进入注册/完善资料流程。

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.jspages/chat/chat.js

Scenario: 上传成功

  • WHEN 上传接口返回 success: true
  • THEN 小程序使用返回的 url 更新头像展示

Requirement: 聊天页加载历史会话

系统 SHALL 在进入聊天页时请求历史会话并渲染。

接口:POST /api/Check/GetConversationsByPage

实现位置:pages/chat/chat.jsloadHistory / 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 或硬编码。