文件
jw-beauty/docs/design/03-云函数API接口清单.md

9.0 KiB

云函数 API 接口清单

基于 软件系统说明.docx 整理。本文档用于把已知云函数职责推进到“接口草案”层,便于后续继续拆成真实路由和字段定义。

本文档仍然遵循一个原则:不把文档未确认的 URL、字段值、错误码和业务规则写成既定事实。以下内容中的“建议”是为了便于继续设计,不代表已定方案。

已确认云端职责

文档已确认云函数负责:

  • 用户认证(微信登录)
  • 设备绑定/解绑
  • 订阅管理
  • 护理记录同步
  • 设备注册(动态获取 DeviceSecret
  • 试用订阅管理
  • 数据统计

设计目标

当前阶段,这份接口文档的目标不是给出最终 API,而是统一以下边界:

  • 哪些接口是一定需要的
  • 每类接口由谁调用
  • 每类接口最少要交换哪些信息
  • 每类接口执行时会影响哪些业务对象

调用方划分

当前系统至少存在四类调用方:

  • 小程序
  • 管理后台
  • 设备或设备接入链路
  • 云内部任务或异步处理链路

建议接口分组

1. 认证接口

至少需要:

  • 微信登录
  • Token 校验或续期
  • 当前用户信息查询

2. 设备接口

至少需要:

  • 设备绑定
  • 设备解绑
  • 当前绑定设备查询
  • 设备详情查询

3. 订阅接口

至少需要:

  • 当前订阅状态查询
  • 试用订阅发放
  • 订阅列表查询
  • 订阅创建或续期

4. 护理记录接口

至少需要:

  • 护理记录上传
  • 护理记录列表查询
  • 单条护理记录详情查询

5. 设备注册与 IoT 接口

至少需要:

  • 设备注册
  • DeviceSecret 下发
  • 设备状态同步或查询

6. 统计接口

至少需要:

  • 用户统计
  • 设备统计
  • 治疗统计
  • 订阅统计

接口命名草案

下表中的“接口标识”仅用于当前设计阶段统一讨论,不代表最终路由。

分组 接口标识 主要调用方 文档是否确认需要 说明
认证 auth.wx_login 小程序 微信登录换取系统身份
认证 auth.refresh_token 小程序 间接确认 Token 续期
认证 auth.get_profile 小程序 间接确认 获取当前用户基础信息
设备 device.bind 小程序 绑定设备
设备 device.unbind 小程序 / 后台 解绑设备
设备 device.get_current_binding 小程序 间接确认 查询当前绑定设备
设备 device.get_detail 小程序 / 后台 间接确认 查询设备详情
订阅 subscription.get_current 小程序 间接确认 查询当前订阅状态
订阅 subscription.grant_trial 云内部任务 / 小程序链路 发放 7 天试用
订阅 subscription.list 后台 间接确认 查询订阅列表
订阅 subscription.create_or_renew 后台 创建或续期订阅
护理记录 record.sync 小程序 / 设备链路 同步护理记录
护理记录 record.list 小程序 / 后台 间接确认 查询护理记录列表
护理记录 record.detail 小程序 / 后台 间接确认 查询护理记录详情
IoT iot.register_device 设备链路 / 云内部任务 注册设备
IoT iot.issue_device_secret 设备链路 / 云内部任务 下发 DeviceSecret
IoT iot.get_device_status 后台 / 云内部任务 间接确认 查询设备状态
统计 stats.user_overview 后台 用户统计
统计 stats.device_overview 后台 设备统计
统计 stats.treatment_overview 后台 治疗统计
统计 stats.subscription_overview 后台 订阅统计

统一接口契约建议

后续细化每个接口时,建议统一补齐以下字段:

  • 接口标识
  • 调用方
  • 请求方式
  • 路由
  • 鉴权要求
  • 幂等要求
  • 请求参数
  • 返回结构
  • 错误码
  • 侧效应
  • 依赖数据表

建议统一响应包络

当前文档没有确认具体返回格式,但为了后续接口设计一致,建议统一采用一个最小响应包络。

字段 是否建议保留 说明
code 业务结果码
message 成功或失败说明
data 业务数据
request_id 建议 便于日志追踪

各接口组的最小信息集合

认证接口

auth.wx_login

最小目标:

  • 接收小程序登录凭证
  • 识别或创建用户身份
  • 返回系统可识别的登录态

至少需要定义:

  • 输入凭证类型
  • 返回 token 结构
  • 是否同时返回用户资料和订阅状态

可能影响的对象:

  • users
  • 登录态或会话存储

auth.refresh_token

最小目标:

  • 延长有效登录态或重新签发 token

至少需要定义:

  • 续期条件
  • 旧 token 处理方式
  • 是否支持滑动过期

设备接口

device.bind

最小目标:

  • 建立用户与设备的绑定关系

至少需要定义:

  • 设备标识来源
  • 是否依赖扫码
  • 是否要求设备在线
  • 绑定成功后的试用发放关系

可能影响的对象:

  • devices
  • bindings
  • subscriptions
  • operation_logs

device.unbind

最小目标:

  • 解除当前用户与设备的有效绑定关系

至少需要定义:

  • 谁可发起解绑
  • 解绑是否影响订阅归属
  • 历史绑定如何保留

device.get_current_binding

最小目标:

  • 返回当前用户的绑定设备摘要

至少需要定义:

  • 是否允许无绑定返回空对象
  • 返回摘要字段范围

订阅接口

subscription.get_current

最小目标:

  • 返回当前用户或当前设备的有效订阅状态

至少需要定义:

  • 查询口径是按用户还是按设备
  • 返回是否包含试用信息

subscription.grant_trial

最小目标:

  • 在满足条件时发放 7 天试用

至少需要定义:

  • 触发时机
  • 幂等规则
  • 发放对象

subscription.create_or_renew

最小目标:

  • 后台创建或续期订阅

至少需要定义:

  • 是否存在订单概念
  • 生效时间规则
  • 是否允许覆盖现有有效期

护理记录接口

record.sync

最小目标:

  • 接收一次护理记录并落入后续处理链路

至少需要定义:

  • 上传主体
  • 请求是完整记录还是过程数据
  • 幂等键
  • 同步成功与异步入库成功的关系

可能影响的对象:

  • sessions
  • treatment_records
  • pd_data
  • operation_logs
  • CMQ 或其他异步链路

record.list

最小目标:

  • 查询治疗记录列表

至少需要定义:

  • 小程序和后台是否共用同一查询能力
  • 过滤条件
  • 排序字段

IoT 接口

iot.register_device

最小目标:

  • 为设备建立平台侧可识别身份

至少需要定义:

  • 调用方
  • 调用时机
  • 注册成功后的返回值

iot.issue_device_secret

最小目标:

  • 为设备签发或返回 DeviceSecret

至少需要定义:

  • 签发条件
  • 是否只可获取一次
  • 返回方式与安全控制

统计接口

统计接口当前只确认“后台需要”,最先要补的是统计口径:

  • 时间范围
  • 去重规则
  • 试用与正式订阅是否分开统计
  • 设备在线数是否为实时值

建议接口字段模板

后续继续细化某个接口时,可直接套用以下模板:

项目 内容
接口标识 待定义
调用方 待定义
请求方式 待定义
路由 待定义
鉴权要求 待定义
幂等要求 待定义
请求参数 待定义
返回结构 待定义
错误码 待定义
侧效应 待定义
依赖数据表 待定义

最先需要定下来的横切规则

在继续细化具体接口前,建议先统一这几项横切规则:

  • 统一响应包络
  • 统一错误码风格
  • 统一分页结构
  • 统一时间字段格式
  • 统一幂等键规则
  • 统一日志追踪字段,如 request_id

关键接口待确认问题

微信登录

  • 小程序提交给云端的是 code 还是其他凭证
  • 云端返回自有 token 还是复用微信态
  • Token 7 天有效期是否支持续期

设备绑定

  • 绑定是否必须基于扫码
  • 绑定时是否校验设备在线状态
  • 重复绑定、换绑、解绑是否有限制

试用订阅

  • 发放时机是否严格绑定在首次绑定成功后
  • 试用对象是用户还是设备
  • 到期后是否自动降级为不可治疗

护理记录同步

  • 上传主体是小程序还是设备侧
  • 同步是实时提交还是治疗结束后提交
  • 异步写入与接口返回成功的关系

设备注册

  • 调用方是生产工具、设备首次上线,还是小程序触发
  • DeviceSecret 是否只签发一次

当前结论

当前说明已经足够把云函数职责推进到“接口草案”层,但还不能直接生成真实 API。最优先要继续细化的是 auth.wx_logindevice.bindsubscription.get_currentsubscription.grant_trialrecord.sync 这五个核心接口。