微信小程序:主动整备交互设计需求 (Active Prep Card v4 - Final)
1. 背景与目标
在“主动整备 (Active Prep)”场景下,系统需向预定人推送即时卡片。设计需符合“人未到,环境已就绪”的愿景,同时提供手动调节入口。
2. 消息下发与链路策略 (Notification & Routing)
2.1 链路术语定义
- 外层通知 (Outer Notification):指在微信服务号/小程序消息中下发的"消息卡片"。其作用是主动触达用户。
- 落地页路由 (Landing Page Route):用户通过消息卡片跳转,应直接路由至 空间运营页面 (index.html)。若环境为 Chatbot 内部跳转,则直接通过消息气泡联动唤起该页面的组件。
2.2 推送渠道
- 服务号/企业微信推送:系统通过专属服务号发送整备通知卡片。
- 消息交互流:用户进入小程序 Chatbox 后,该通知卡片会自动呈现在对话流的最新位置。
3. 视觉规范
- Header: 统一为 “智能空间助手”。
- 操作项顺序: 统一采用 “ [ 正向操作 ] [ 负向/纠偏操作 ] ”(例如: “ [ 🛠️ 深度调节 ] [ 🚫 取消备场 ] ”)。
- 字体规范: 调节页内的分段标题(风速、模式、扫风等预留项)统一采用粗体 (Bold)。
- 动态交互: 确认型卡片点击后需支持原位状态转换。
4. 场景原型 (Prototypes)
场景 A:自动执行告知 (AUTO_EXECUTE)
触发逻辑:
text
+-------------------------------------------+
| [🤖 智能空间助手] [••• | ◎] |
+-------------------------------------------+
| |
| ✨ **环境已为您提前备场** |
| |
| ------------------------------------- |
| **A-101 大会议室** (4F) |
| 🕒 10:00 - 11:30 (**15 min后开始**) |
| ------------------------------------- |
| |
| 🌡️ 环境:**制冷运行中** (目标 24℃) |
| 当前室温 28℃,整备预计需 15 分钟 |
| |
| [ 🛠️ 深度调节 ] [ 🚫 取消备场 ] |
| |
+-------------------------------------------+场景 B:待确认开启 (PRE_CONFIRM)
触发逻辑:
text
(1) 初始态:等待确认
+-------------------------------------------+
| ❓ **建议为您提前调节环境** |
| ------------------------------------- |
| **B-202 研讨室** (2F) |
| 🕒 14:00 - 15:00 (**12 min后开始**) |
| ------------------------------------- |
| ❄️ 开启空调并冷至 **24℃**? |
| [ ✅ 立即开启 ] [ 取消备场 ] |
+-------------------------------------------+
(2) 点击“立即开启”后:原位转换
+-------------------------------------------+
| ✅ **整备指令已下发** |
| ------------------------------------- |
| **B-202 研讨室** (2F) |
| 🕒 14:00 - 15:00 |
| ------------------------------------- |
| 🌡️ 环境:**正在调节中...** |
| [ 🛠️ 深度调节* ] [ 🚫 取消备场 ] |
+-------------------------------------------+
*说明:点击“立即开启”后,按钮原位转为“深度调节”,并保持与 AUTO 模式一致的按钮顺序。
(3) 5分钟无响应:超时置灰
*逻辑:若 5min 内点击未触发,卡片全量**置灰 (Grayscale)** 且所有按钮进入 **禁用 (Disabled)** 状态。卡片顶端辅助说明:`[整备建议已过期]`。NOTE
关于环境状态展示的说明: 卡片中展示的“当前室温”与“预估整备时长”为触发瞬间的快照数据 (Snapshot Reference),旨在建立用户心理预期。由于算法偏差或物理设备状态波动(如:到达不了目标值),前端不强制要求实时更新该数值,以减少因数值反复波动带来的干扰。
5. 空间控制面板 (index.html 视觉对正)
核心原则:面板由空间逻辑映射纯数据驱动渲染,管理员无需预设面板样式。详见 SA_空间控制面板设计.md。
5.1 一级面板:极简列表
点击「深度调节」后进入空间控制面板,按语义数据类型逐行渲染:
text
+---------------------------------------------------+
| [ < 返回 ] A-101 空间控制 [ × ] |
+---------------------------------------------------+
| |
| ===== 可操作能力 ===== |
| |
| 空调开关 ● 开 > |
| 运行模式 制冷 > |
| 设定温度 24°C > |
| 灯光开关 ● 开 > |
| 灯光亮度 80% > |
| 窗帘位置 50% > |
| |
| ===== 环境感知 ===== |
| |
| 室内温度 28°C |
| 室内湿度 65% |
| 二氧化碳 450ppm |
| |
+---------------------------------------------------+
| [ 关闭 ] |
+---------------------------------------------------+行类型规则:
| 数据类型 | 左显示 | 值来源 | 右组件 | 点击行为 |
|---|---|---|---|---|
bool | icon + 名称 | value(true → ●开 / false → ○关) | switch 开关 | 直接切换 |
enum | icon + 名称 | value(当前选项文字) | 选项文字 + > | → 二级面板 |
number | icon + 名称 | value + unit(如 24°C、80%) | 数值 + 单位 + > | → 二级面板 |
ro | icon + 名称 | 自控平台实时上报值 + 单位 | 数值 + 单位 | 仅展示 |
取数说明:icon 取自
mapping.semantic_key关联的标准语义库icon字段;number 的unit来自自控平台逻辑点位定义(M3 前端 Mock 预设,P2 接入真实字段);bool 映射规则为true → 开 / false → 关。详见 SA_空间控制面板设计.md §1.1。
5.2 二级面板:语义详情交互
点击一级面板中的 > 箭头,进入对应二级面板。
5.2.1 通用 number 组件(纯滑块)
text
+-------------------------------------------+
| [ < 返回 ] 设定温度 [ × ] |
+-------------------------------------------+
| |
| 目标温度 (滑动调节) |
| |
| ───────────────●──────────────── |
| 16 24 30 |
| |
| 24°C |
| |
+-------------------------------------------+
| [ 保存应用到现场 ] |
+-------------------------------------------+- 量程
range和步长step继承自空间逻辑映射 - 无快捷预设标签
5.2.2 通用 enum 组件(选项列表)
text
+-------------------------------------------+
| [ < 返回 ] 运行模式 [ × ] |
+-------------------------------------------+
| |
| 当前: 制冷 |
| |
| ○ 自动 |
| ● 制冷 |
| ○ 制热 |
| ○ 送风 |
| |
+-------------------------------------------+
| [ 保存应用到现场 ] |
+-------------------------------------------+6. 对话反馈逻辑 (Bot Feedback Logic)
为确保用户操作有明确回响,需根据场景下发即时文本消息:
- 取消备场 (场景 A-自动型): “已为您取消 [房间名] 的环境预整备,关联设备已关闭。”
- 取消备场 (场景 B-确认型): “已为您取消 [房间名] 的环境预整备计划。”
- 深度调节保存:
- 逻辑说明: 仅当用户实际修改了温度数值(当前值
进入页面时的初始值)并点击“保存应用”时,触发反馈。 - 话术内容: “设定温度已更新为 [数值]℃,正在同步至现场设备。”
- 不触发场景: 用户进入页面后未改动数值直接保存,或点击“返回/取消”,不发送任何新消息。
- 逻辑说明: 仅当用户实际修改了温度数值(当前值
7. 开发对接说明
- 日志留痕: 用户点击所有按钮均需记录
Action_Log。 - AppLink 参数: 通知卡片中的 [查看详情] 按钮需携带
room_id和action_type,确保直达后能准确渲染对应卡片或页面。
