┌─────────────────────────────────────────────────────────────────────────────┐
│ 多设备多用户系统架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 云端服务 │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ 用户中心 │ │ 家庭组 │ │ 设备管理 │ │ 治疗记录 │ │ │
│ │ │ - 账号 │ │ - 成员 │ │ - 绑定 │ │ - 历史 │ │ │
│ │ │ - 档案 │ │ - 共享 │ │ - 权限 │ │ - 统计 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ ▲ │
│ │ HTTPS │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 手机APP (单实例) │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────────┐ │ │
│ │ │ 多设备管理 (可连接多台设备) │ │ │
│ │ │ │ │ │
│ │ │ 设备1 设备2 设备3 │ │ │
│ │ │ ┌────┐ ┌────┐ ┌────┐ │ │ │
│ │ │ │AJY │ │AJY │ │AJY │ │ │ │
│ │ │ │001 │ │002 │ │003 │ │ │ │
│ │ │ └────┘ └────┘ └────┘ │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ └─────────────┼─────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌─────────────┐ │ │ │
│ │ │ │ 蓝牙 BLE 5.0│ │ │ │
│ │ │ └─────────────┘ │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────────────────┐ │ │
│ │ │ 多用户管理 (本地 + 家庭组共享) │ │ │
│ │ │ │ │ │
│ │ │ 本地用户 家庭组成员 │ │ │
│ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │
│ │ │ │ 张三 │ │ 李四 │ │ 王五 │ │ 赵六 │ │ │ │
│ │ │ │(本人)│ │(配偶)│ │(父亲)│ │(母亲)│ │ │ │
│ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │
│ │ │ │ │ │ │
│ │ │ ▼ │ │ │
│ │ │ ┌─────────────┐ │ │ │
│ │ │ │ 家庭组共享 │ │ │ │
│ │ │ │ (邀请链接) │ │ │ │
│ │ │ └─────────────┘ │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
| 场景 | 用户角色 | 设备数量 | 用户数量 | 说明 |
|---|---|---|---|---|
| 家庭场景 | 家庭成员 | 1-3台 | 2-6人 | 一台APP管理全家设备和用户 |
| 门店场景 | 理疗师 | 多台 | 多人 | 医师管理多台设备,服务多个客户 |
| 养老院场景 | 护理人员 | 多台 | 多人 | 护理员管理多台设备,服务多位老人 |
| 个人场景 | 个人 | 1台 | 1人 | 单用户单设备基础使用 |
| 通信 | 方式 | 用途 |
|---|---|---|
| APP ↔ 设备 | 蓝牙 BLE 5.0 | 实时控制、数据传输(一对多) |
| APP ↔ 云端 | 4G/WiFi | 用户档案同步、家庭组管理、治疗记录 |
| 设备 ↔ 云端 | 无(通过APP中转) | - |
| 家庭组成员 | 云端同步 | 用户档案共享、治疗记录查看 |
// 蓝牙服务UUID
const SERVICE_UUID = '0000FFF0-0000-1000-8000-00805F9B34FB';
// 蓝牙特征值UUID
const CHARACTERISTICS = {
// 写入:APP发送命令到设备
COMMAND: '0000FFF1-0000-1000-8000-00805F9B34FB',
// 通知:设备上报数据到APP
DATA: '0000FFF2-0000-1000-8000-00805F9B34FB',
// 写入:APP发送用户档案
USER_PROFILE: '0000FFF3-0000-1000-8000-00805F9B34FB',
// 通知:设备上报穴位对照表
ACUPOINT_TABLE: '0000FFF4-0000-1000-8000-00805F9B34FB',
};
// 命令类型
enum CommandType {
// 连接认证
AUTH_REQUEST = 0x01,
AUTH_RESPONSE = 0x02,
// 用户管理
GET_USER_LIST = 0x10,
CREATE_USER = 0x11,
SELECT_USER = 0x12,
DELETE_USER = 0x13,
// 穴位定位
START_DETECTION = 0x20,
DAZHUI_POSITION = 0x21,
ACUPOINT_TABLE_SYNC = 0x22,
// 艾灸控制
START_TREATMENT = 0x30,
PAUSE_TREATMENT = 0x31,
RESUME_TREATMENT = 0x32,
END_TREATMENT = 0x33,
// 设备状态
DEVICE_STATUS = 0x40,
ERROR_REPORT = 0x41,
}
┌─────────────────────────────────────────────────────────────────────────┐
│ 设备管理流程 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【添加设备】 │
│ │
│ 1. 打开APP → 设备管理 → 添加设备 │
│ │ │
│ ▼ │
│ 2. 蓝牙扫描附近设备 │
│ ├─ 显示可用设备列表 │
│ └─ 按信号强度排序 │
│ │ │
│ ▼ │
│ 3. 选择设备 → 配对验证 │
│ ├─ 方式1: NFC感应(设备靠近手机) │
│ ├─ 方式2: 配对码(设备屏幕显示6位数字) │
│ └─ 方式3: 扫描设备二维码 │
│ │ │
│ ▼ │
│ 4. 设置设备名称和位置 │
│ ├─ 设备名称: "客厅艾灸椅"、"主卧艾灸椅" │
│ └─ 设备位置: 选择或自定义 │
│ │ │
│ ▼ │
│ 5. 设备绑定成功 → 显示在设备列表 │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【设备列表】 │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 我的设备 (3台) [+ 添加] │ │
│ ├──────────────────────────────────────────────────────────────────┤ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 🔵 客厅艾灸椅 (AJY001) [默认设备] │ │ │
│ │ │ 状态: 空闲 | 电量: 85% | 最后使用: 今天 │ │ │
│ │ │ [连接] [设置] [解绑] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ ⚪ 主卧艾灸椅 (AJY002) │ │ │
│ │ │ 状态: 使用中(张三) | 电量: 62% | 剩余: 15分钟 │ │ │
│ │ │ [查看] [设置] [解绑] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ ⚪ 父母家艾灸椅 (AJY003) │ │ │
│ │ │ 状态: 离线 | 最后使用: 3天前 │ │ │
│ │ │ [连接] [设置] [解绑] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户管理流程 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【用户来源】 │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 用户数据来源 │ │
│ │ │ │
│ │ 1. 本地创建 │ │
│ │ └─ 在当前APP上直接创建用户档案 │ │
│ │ │ │
│ │ 2. 家庭组共享 │ │
│ │ ├─ 创建家庭组,邀请成员加入 │ │
│ │ ├─ 成员接受邀请后,可共享用户档案 │ │
│ │ └─ 档案数据云端同步,多设备可见 │ │
│ │ │ │
│ │ 3. 链接分享 │ │
│ │ ├─ 生成用户档案分享链接 │ │
│ │ ├─ 接收者通过链接导入用户档案 │ │
│ │ └─ 适用于临时使用或转诊场景 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【用户列表】 │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 用户管理 (5人) [+ 创建] │ │
│ ├──────────────────────────────────────────────────────────────────┤ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 张三 (本人) [家庭组管理员] │ │ │
│ │ │ 男, 35岁 | 身高:175cm | 指纹: ✓ │ │ │
│ │ │ [编辑] [分享] [穴位对照表] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 李四 (配偶) [家庭组成员] │ │ │
│ │ │ 女, 33岁 | 身高:162cm | 指纹: ✓ │ │ │
│ │ │ [编辑] [分享] [穴位对照表] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 张父 (父亲) [家庭组成员] │ │ │
│ │ │ 男, 62岁 | 身高:170cm | 指纹: ✓ │ │ │
│ │ │ [编辑] [分享] [穴位对照表] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 张母 (母亲) [家庭组成员] │ │ │
│ │ │ 女, 60岁 | 身高:158cm | 指纹: ✓ │ │ │
│ │ │ [编辑] [分享] [穴位对照表] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 小明 (儿子) [本地创建] │ │ │
│ │ │ 男, 10岁 | 身高:140cm | 指纹: ✗ │ │ │
│ │ │ [编辑] [分享] [穴位对照表] [加入家庭组] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 家庭组管理 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【创建家庭组】 │
│ │
│ 1. 我的 → 家庭组 → 创建家庭组 │
│ │ │
│ ▼ │
│ 2. 输入家庭组名称(如"张家") │
│ │ │
│ ▼ │
│ 3. 设置家庭成员权限 │
│ ├─ 管理员: 可添加/删除成员,管理所有用户档案 │
│ ├─ 成员: 可查看和使用共享的用户档案 │
│ └─ 访客: 仅可查看部分信息 │
│ │ │
│ ▼ │
│ 4. 生成邀请链接/二维码 │
│ ├─ 链接有效期: 7天 / 30天 / 永久 │
│ ├─ 邀请人数限制: 可设置 │
│ └─ 分享方式: 微信、短信、二维码 │
│ │ │
│ ▼ │
│ 5. 被邀请者接受 → 加入家庭组 │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【家庭组共享内容】 │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 共享内容范围 │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ ✓ 用户档案(基本信息、体型数据、穴位对照表) │ │
│ │ ✓ 治疗记录(历史记录、效果评估) │ │
│ │ ✓ 设备访问权限(家庭成员可使用绑定的设备) │ │
│ │ │ │
│ │ ✗ 账号密码 │ │
│ │ ✗ 支付信息 │ │
│ │ ✗ 私密治疗记录(可标记为私密) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【家庭组界面】 │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 家庭组: 张家 [设置] │ │
│ ├──────────────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 成员 (4人) [+ 邀请成员] │ │
│ │ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 张三 (管理员) 在线 │ │ │
│ │ │ 管理权限: 全部 [设为管理员] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 李四 (成员) 在线 │ │ │
│ │ │ 共享用户: 1个 [设为管理员] [移除] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 张父 (成员) 离线 │ │ │
│ │ │ 共享用户: 1个 [设为管理员] [移除] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ 张母 (成员) 离线 │ │ │
│ │ │ 共享用户: 1个 [设为管理员] [移除] │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 共享设备 (2台) │ │
│ │ ├─ 客厅艾灸椅 (AJY001) │ │
│ │ └─ 主卧艾灸椅 (AJY002) │ │
│ │ │ │
│ │ ───────────────────────────────────────────────────────────── │ │
│ │ [邀请成员] [生成邀请链接] [解散家庭组] │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户档案分享 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【分享方式】 │
│ │
│ 方式1: 家庭组内共享 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 用户档案 → 分享 → 选择家庭组成员 → 确认 │ │
│ │ │ │
│ │ 被分享者可: │ │
│ │ ✓ 查看用户档案 │ │
│ │ ✓ 使用该用户档案进行艾灸 │ │
│ │ ✓ 查看治疗记录 │ │
│ │ ✗ 编辑用户档案 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ 方式2: 链接分享 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 用户档案 → 分享 → 生成分享链接 │ │
│ │ │ │
│ │ 设置: │ │
│ │ ├─ 有效期: 1小时 / 24小时 / 7天 │ │
│ │ ├─ 使用次数: 单次 / 多次 │ │
│ │ ├─ 权限: 仅查看 / 可使用 │ │
│ │ └─ 密码保护: 可选 │ │
│ │ │ │
│ │ 分享渠道: │ │
│ │ ├─ 微信 │ │
│ │ ├─ 短信 │ │
│ │ ├─ 邮件 │ │
│ │ └─ 二维码 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ 【接收分享】 │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 接收者点击链接: │ │
│ │ │ │
│ │ 1. 未登录 → 跳转登录/注册页面 │ │
│ │ 2. 已登录 → 显示档案预览 │ │
│ │ 3. 确认导入 → 档案添加到用户列表 │ │
│ │ │ │
│ │ 提示: 该用户档案来自张三的分享,有效期7天 │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 首次使用(创建用户档案) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 下载安装APP │
│ │ │
│ ▼ │
│ 2. 注册/登录(手机号 + 验证码 或 微信一键登录) │
│ │ │
│ ▼ │
│ 3. 开启蓝牙,搜索附近设备 │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 4. 连接设备 │ │
│ │ - APP显示设备列表 │ │
│ │ - 用户选择要连接的设备 │ │
│ │ - 设备验证连接(NFC或蓝牙配对码) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 5. 创建用户档案 │
│ ├─ 输入基本信息(姓名、性别、年龄) │
│ ├─ 输入体型数据(肩宽、身长) │
│ ├─ 输入指寸数据(选填:一寸、1.5寸、三寸) │
│ │ └─ 提供测量教程和示意图 │
│ └─ 录入指纹(在设备指纹区按压2次) │
│ │ │
│ ▼ │
│ 6. 系统生成穴位对照表 │
│ ├─ 根据体型数据计算18个穴位位置 │
│ ├─ 显示经络图预览 │
│ └─ 通过蓝牙同步到设备存储 │
│ │ │
│ ▼ │
│ 7. 完成,进入主界面 │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 日常使用(艾灸治疗) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 用户就座 │
│ │ │
│ ▼ │
│ 2. 打开APP │
│ ├─ 自动搜索已绑定设备 │
│ ├─ 显示可用设备列表(多设备场景) │
│ └─ 选择要使用的设备 │
│ │ │
│ ▼ │
│ 3. 蓝牙连接 │
│ ├─ 自动连接最近使用的设备 │
│ └─ 或手动选择其他设备 │
│ │ │
│ ▼ │
│ 4. 选择/识别用户 │
│ ├─ 方式1: 设备指纹识别 │
│ │ └─ 在指纹区按手指 → 自动识别用户 │
│ ├─ 方式2: APP用户列表选择 │
│ │ └─ 显示本地 + 家庭组共享用户列表 │
│ └─ 方式3: 扫码导入临时用户 │
│ └─ 适用于医患场景 │
│ │ │
│ ▼ │
│ 5. 设备检测大椎穴 │
│ ├─ 传感器扫描肩高 │
│ ├─ 确定大椎穴位置 │
│ └─ 上报到APP显示 │
│ │ │
│ ▼ │
│ 6. 选择治疗方案 │
│ ├─ 一键艾灸(默认方案) │
│ ├─ 专业模式(选择功效) │
│ ├─ 自定义模式(选择穴位) │
│ └─ 圣手模式(专家推荐方案) │
│ │ │
│ ▼ │
│ 7. 开始艾灸 │
│ ├─ 设备计算实际穴位坐标 │
│ ├─ 灸头移动到目标穴位 │
│ └─ APP显示实时状态 │
│ │ │
│ ▼ │
│ 8. 艾灸进行中(实时监控) │
│ ├─ 温度显示 │
│ ├─ 剩余时间 │
│ ├─ 当前穴位 │
│ └─ 暂停/继续/结束控制 │
│ │ │
│ ▼ │
│ 9. 艾灸结束 │
│ ├─ 设备自动熄火、清理 │
│ ├─ 座椅复位 │
│ └─ 治疗记录上传云端 │
│ │
└─────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────┐
│ 医师/门店场景使用流程 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 【场景说明】 │
│ - 医师/理疗师管理多台设备 │
│ - 服务多个客户 │
│ - 需要快速切换用户和设备 │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 医师登录APP(专业版账号) │
│ │ │
│ ▼ │
│ 2. 查看设备状态面板 │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ 设备状态总览 │ │
│ ├──────────────────────────────────────────────────────────────┤ │
│ │ 设备1 (1号椅) │ 空闲 │ 可用 │ │
│ │ 设备2 (2号椅) │ 使用中 │ 客户: 李先生 剩余: 15分钟 │ │
│ │ 设备3 (3号椅) │ 使用中 │ 客户: 王女士 剩余: 8分钟 │ │
│ │ 设备4 (4号椅) │ 故障 │ 温度传感器异常 │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 3. 客户就座 → 选择空闲设备 │
│ │ │
│ ▼ │
│ 4. 选择或创建客户档案 │
│ ├─ 老客户: 从用户列表选择 │
│ │ └─ 支持搜索姓名/手机号 │
│ ├─ 新客户: 快速创建档案 │
│ │ └─ 仅需基本信息,后续补充 │
│ └─ 临时客户: 使用临时模式 │
│ └─ 不保存档案,仅本次使用 │
│ │ │
│ ▼ │
│ 5. 快速选择治疗方案 │
│ ├─ 预设方案(常用组合) │
│ │ └─ 如"肩颈调理"、"腰背护理"等 │
│ ├─ 自定义方案 │
│ └─ 圣手推荐 │
│ │ │
│ ▼ │
│ 6. 开始治疗 → 监控进度 │
│ │ │
│ ▼ │
│ 7. 治疗结束 → 生成报告 │
│ ├─ 治疗详情报告 │
│ ├─ 效果评估记录 │
│ └─ 下次治疗建议 │
│ │ │
│ ▼ │
│ 8. 客户档案更新 │
│ ├─ 保存本次治疗记录 │
│ ├─ 更新客户健康档案 │
│ └─ 可分享给客户(链接或家庭组邀请) │
│ │
└─────────────────────────────────────────────────────────────────────────┘
│ │ │ │ ▼ │ │ 8. 艾灸结束 │ │ ├─ 设备自动熄火、清理 │ │ ├─ 座椅复位 │ │ └─ 治疗记录上传云端 │ │ │ └─────────────────────────────────────────────────────────────────────────┘
---
## 三、APP界面设计
### 3.1 界面结构
┌─────────────────────────────────────────────────────────────┐ │ APP 界面层级 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 启动页 │ │ │ │ - Logo + 品牌展示 │ │ │ │ - 自动检测蓝牙连接状态 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 登录/注册页 │ │ │ │ - 手机号 + 验证码登录 │ │ │ │ - 微信一键登录 │ │ │ │ - 本机一键登录 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 主界面(Tab 导航) │ │ │ │ ├─ 我的设备 │ │ │ │ ├─ 治疗记录 │ │ │ │ ├─ 穴位知识 │ │ │ │ └─ 我的 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘
### 3.2 主要页面设计
#### 3.2.1 我的设备页(主页)
┌────────────────────────────────────────┐ │ ∧ 我的设备 ⚙️ 设置 │ ├────────────────────────────────────────┤ │ │ │ ┌──────────────────────────────────┐ │ │ │ 🔵 艾灸椅-AJY001 │ │ │ │ 状态: 已连接 | 电量: 85% │ │ │ │ ──────────────────────────── │ │ │ │ 当前用户: 张三 │ │ │ │ 指纹识别 ✓ | 大椎穴已定位 ✓ │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ 选择治疗方案 │ │ │ │ │ │ │ │ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │ │ │ │ │ 🔥 │ │ 🎯 │ │ ⚙️ │ │ 👨 │ │ │ │ │ │一键│ │专业│ │自定│ │圣手│ │ │ │ │ │艾灸│ │模式│ │义模│ │模式│ │ │ │ │ └────┘ └────┘ └────┘ └────┘ │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ 我的穴位对照表 │ │ │ │ [查看经络图] [编辑档案] │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ 设备状态 │ │ │ │ 艾材余量: 8个 | 废料舱: 20% │ │ │ │ 滤芯寿命: 45% | 座椅温度: 35℃ │ │ │ └──────────────────────────────────┘ │ │ │ │ ══════════════════════════════════ │ │ │ 我的设备 │ 记录 │ 知识 │ 我的 │ │ └────────────────────────────────────────┘
#### 3.2.2 用户档案创建页
┌────────────────────────────────────────┐ │ ∧ 创建用户档案 │ ├────────────────────────────────────────┤ │ │ │ 步骤 1/3: 基本信息 │ │ ───────────────────────────────── │ │ │ │ 姓名 * [_____________] │ │ │ │ 性别 * ○ 男 ○ 女 │ │ │ │ 年龄 * [_] 岁 │ │ │ │ ┌──────────────────────────────────┐ │ │ │ [下一步] │ │ │ └──────────────────────────────────┘ │ │ │ ├────────────────────────────────────────┤ │ ∧ 创建用户档案 │ ├────────────────────────────────────────┤ │ │ │ 步骤 2/3: 体型数据 │ │ ───────────────────────────────── │ │ │ │ 肩宽 * [_] 厘米 │ │ 💡 测量方法 > │ │ │ │ 身长 * [_] 厘米 │ │ 💡 从头顶到坐骨结节距离 │ │ │ │ ┌──────────────────────────────────┐ │ │ │ 指寸数据(选填,提升精度) │ │ │ ├──────────────────────────────────┤ │ │ │ 一寸 [_] 厘米 🖐️ 测量教程 │ │ │ │ 1.5寸 [_] 厘米 ✌️ 测量教程 │ │ │ │ 三寸 [____] 厘米 🖖 测量教程 │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ [下一步] │ │ │ └──────────────────────────────────┘ │ │ │ ├────────────────────────────────────────┤ │ ∧ 创建用户档案 │ ├────────────────────────────────────────┤ │ │ │ 步骤 3/3: 录入指纹 │ │ ───────────────────────────────── │ │ │ │ ┌──────────────────────────────────┐ │ │ │ │ │ │ │ 请在设备指纹区按压 │ │ │ │ │ │ │ │ ┌─────┐ │ │ │ │ │ 👆 │ │ │ │ │ │ 指纹 │ │ │ │ │ └─────┘ │ │ │ │ │ │ │ │ 已录入: 0/2 次 │ │ │ │ │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ [跳过] [完成] │ │ │ └──────────────────────────────────┘ │ │ │ └────────────────────────────────────────┘
#### 3.2.3 治疗进行页
┌────────────────────────────────────────┐ │ ∧ 艾灸治疗中 ✕ │ ├────────────────────────────────────────┤ │ │ │ ┌──────────────────────────────────┐ │ │ │ │ │ │ │ ┌─────────────────┐ │ │ │ │ │ │ │ │ │ │ │ [经络图] │ │ │ │ │ │ │ │ │ │ │ │ 大椎穴 ● ←当前 │ │ │ │ │ │ 身柱穴 ○ │ │ │ │ │ │ 至阳穴 ○ │ │ │ │ │ │ │ │ │ │ │ └─────────────────┘ │ │ │ │ │ │ │ └──────────────────────────────────┘ │ │ │ │ 当前穴位: 大椎穴 │ │ ───────────────────────────────── │ │ │ │ 温度: 38℃ ━━━━━━━━━○━━━━ 目标: 38℃│ │ │ │ 剩余时间: 05:30 │ │ ┌──────────────────────────────────┐ │ │ │ ████████████████░░░░░░░░░░░░░ │ │ │ │ 30分钟 / 总计 │ │ │ └──────────────────────────────────┘ │ │ │ │ 手法: 温和灸 │ │ │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │ │ ⏸️ │ │ ▶️ │ │ ⏹️ │ │ │ │ 暂停 │ │ 继续 │ │ 结束 │ │ │ └────────┘ └────────┘ └────────┘ │ │ │ │ ══════════════════════════════════ │ │ │ 我的设备 │ 记录 │ 知识 │ 我的 │ │ └────────────────────────────────────────┘
#### 3.2.4 穴位对照表页
┌────────────────────────────────────────┐ │ ∧ 我的穴位对照表 │ ├────────────────────────────────────────┤ │ │ │ 用户: 张三 | 置信度: 95% │ │ ───────────────────────────────── │ │ │ │ ┌──────────────────────────────────┐ │ │ │ │ │ │ │ ┌─────────────────┐ │ │ │ │ │ │ │ │ │ │ │ [人体背部图] │ │ │ │ │ │ │ │ │ │ │ │ ○ 大椎穴(基准)│ │ │ │ │ │ ○ 身柱穴 │ │ │ │ │ │ ○ 至阳穴 │ │ │ │ │ │ ○ 命门穴 │ │ │ │ │ │ ○ 腰阳关穴 │ │ │ │ │ │ │ │ │ │ │ │ 点击穴位查看详情│ │ │ │ │ │ │ │ │ │ │ └─────────────────┘ │ │ │ │ │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ 穴位列表 (18个) │ │ │ ├──────────────────────────────────┤ │ │ │ 大椎穴 │ 0cm │ 驱寒、祛湿 │ │ │ │ 身柱穴 │ -6.3cm │ 止咳平喘 │ │ │ │ 至阳穴 │ -14.7cm│ 宽胸理气 │ │ │ │ ... │ ... │ ... │ │ │ └──────────────────────────────────┘ │ │ │ │ ┌──────────────────────────────────┐ │ │ │ [重新测量指寸] [编辑体型数据] │ │ │ └──────────────────────────────────┘ │ │ │ └────────────────────────────────────────┘
---
## 四、蓝牙交互协议详解
### 4.1 连接流程
┌─────────────────────────────────────────────────────────────┐ │ 蓝牙连接流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ APP 设备 │ │ │ │ │ │ │──── 1. 扫描设备 ──────────────▶│ │ │ │ │ │ │ │◀─── 2. 广播设备信息 ──────────│ │ │ │ (名称、UUID、RSSI) │ │ │ │ │ │ │ │──── 3. 连接请求 ─────────────▶│ │ │ │ │ │ │ │◀─── 4. 连接确认 ─────────────│ │ │ │ │ │ │ │──── 5. 发现服务 ─────────────▶│ │ │ │ │ │ │ │◀─── 6. 返回服务列表 ─────────│ │ │ │ │ │ │ │──── 7. 订阅通知特征 ─────────▶│ │ │ │ │ │ │ │──── 8. 认证请求 ─────────────▶│ │ │ │ (用户ID + Token) │ │ │ │ │ │ │ │◀─── 9. 认证结果 ─────────────│ │ │ │ │ │ │ │ ✓ 连接成功 │ │ │ │ └─────────────────────────────────────────────────────────────┘
### 4.2 数据包格式
typescript // 蓝牙数据包格式 interface BLEPacket { header: number; // 包头 0xAA length: number; // 数据长度 command: CommandType;// 命令类型 payload: Uint8Array; // 数据负载 checksum: number; // 校验和 footer: number; // 包尾 0x55 }
// 示例:开始治疗命令 const startTreatmentPacket: BLEPacket = { header: 0xAA, length: 10, command: CommandType.START_TREATMENT, payload: new Uint8Array([
// 用户ID (4字节)
0x00, 0x00, 0x00, 0x01,
// 方案ID (4字节)
0x00, 0x00, 0x00, 0x01,
// 大椎穴X坐标 (2字节, 单位mm)
0x00, 0x00
]), checksum: 0xXX, footer: 0x55 };
### 4.3 关键交互时序
#### 4.3.1 用户选择与穴位定位
┌─────────────────────────────────────────────────────────────┐ │ 用户选择与穴位定位时序 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ APP 设备 │ │ │ │ │ │ │──── GET_USER_LIST ───────────▶│ │ │ │ │ │ │ │◀─── 用户列表 ────────────────│ │ │ │ [张三, 李四, 王五] │ │ │ │ │ │ │ │ [用户选择"张三"] │ │ │ │ │ │ │ │──── SELECT_USER(id=张三) ────▶│ │ │ │ │ │ │ │ │── 加载张三的穴位对照表 │ │ │ │ │ │ │──── START_DETECTION ─────────▶│ │ │ │ │ │ │ │ │── 传感器扫描肩高 │ │ │ │ │ │ │◀─── DAZHUI_POSITION ─────────│ │ │ │ {x: 0, y: 150mm} │ │ │ │ │ │ │ │ [APP显示经络图] │ │ │ │ [标记大椎穴位置] │ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────┘
#### 4.3.2 开始治疗
┌─────────────────────────────────────────────────────────────┐ │ 开始治疗时序 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ APP 设备 │ │ │ │ │ │ │ [用户选择"一键艾灸"] │ │ │ │ │ │ │ │──── START_TREATMENT ─────────▶│ │ │ │ { │ │ │ │ userId: "张三", │ │ │ │ dazhuiPos: {x,y}, │ │ │ │ acupoints: [ │ │ │ │ "dazhui", │ │ │ │ "shenzhu", │ │ │ │ ... │ │ │ │ ] │ │ │ │ } │ │ │ │ │ │ │ │ │── 计算实际穴位坐标 │ │ │ │── 启动自动上料 │ │ │ │── 自动点火 │ │ │ │ │ │ │◀─── DEVICE_STATUS ───────────│ │ │ │ { │ │ │ │ status: "running", │ │ │ │ currentAcupoint: "dazhui",│ │ │ │ temperature: 38, │ │ │ │ remainingTime: 1800 │ │ │ │ } │ │ │ │ │ │ │ │ [APP更新显示] │ │ │ │ │ │ │ │◀─── DEVICE_STATUS (定时上报) │ (每5秒) │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────┘
---
## 五、离线模式设计
### 5.1 离线能力
由于蓝牙直连设备,APP支持离线使用:
| 功能 | 离线可用 | 说明 |
|------|---------|------|
| 连接设备 | ✓ | 蓝牙直连,无需网络 |
| 用户管理 | ✓ | 用户档案存储在本地 |
| 穴位对照表 | ✓ | 本地计算和存储 |
| 艾灸治疗 | ✓ | 全流程离线操作 |
| 治疗记录同步 | ✗ | 需要网络上传云端 |
| 圣手模式 | ✗ | 需要网络获取专家方案 |
### 5.2 数据同步策略
typescript // 数据同步优先级 enum SyncPriority { IMMEDIATE = 'immediate', // 立即同步:用户档案、穴位对照表 DELAYED = 'delayed', // 延迟同步:治疗记录 ON_DEMAND = 'on_demand', // 按需同步:统计数据 }
// 同步策略 const SYNC_STRATEGY = { // 有网络时:立即上传 online: {
userprofile: SyncPriority.IMMEDIATE,
treatmentRecord: SyncPriority.IMMEDIATE,
acupointTable: SyncPriority.IMMEDIATE,
}, // 无网络时:本地存储,网络恢复后同步 offline: {
userProfile: 'local_only',
treatmentRecord: 'queue_for_sync',
acupointTable: 'local_only',
} };
---
## 六、安全设计
### 6.1 蓝牙安全
typescript // 蓝牙配对流程 interface BLESecurity { // 1. 设备绑定(首次) bonding: {
method: 'numeric_comparison'; // 数字比较配对
displayCode: string; // APP和设备显示相同6位数字
userConfirm: boolean; // 用户确认数字一致
};
// 2. 后续连接(自动) autoConnect: {
method: 'bonded_device'; // 已绑定设备
encryption: 'LESC'; // LE安全连接
};
// 3. 数据加密 encryption: {
algorithm: 'AES-CCM';
keySize: 128;
}; }
### 6.2 用户数据安全
- 用户档案加密存储在本地
- 云端数据传输使用 HTTPS
- 敏感数据(指纹)不上传云端
---
## 七、异常处理
### 7.1 蓝牙断连处理
typescript // 蓝牙断连处理流程 async function handleBLEDisconnection() { // 1. 检测断连 // 2. 尝试重连(3次) // 3. 重连失败 → 提示用户 // 4. 设备自动熄火(安全机制) }
### 7.2 设备故障上报
typescript interface DeviceError { code: string; message: string; action: 'retry' | 'contact_support' | 'restart_device'; }
const ERROR_CODES = { E001: { message: '温度传感器故障', action: 'contact_support' }, E002: { message: '艾材不足', action: 'retry' }, E003: { message: '废料舱已满', action: 'retry' }, E004: { message: '点火失败', action: 'retry' }, E005: { message: '滤芯需更换', action: 'contact_support' }, }; ```