Skip to content

T3 智能整备(Demo 场景 PRD) ​

项内容
文档定位08_移动端AI场景设计.md §4 教师时间线、§10 教师模块 T3 智能整备 的场景 PRD。本场景是主动执行,不是对话能力
通用规范引用公共规范.md(常驻会话、首页洞察卡片、定时任务、输出规范);本文只写 T3 场景本身
能力来源既有 Dify 整备 Agent(space-agent SA_Prep 生产工作流,Webhook/定时触发);空间语义管理中的整备配置;课表;教室中控/BA
复用关系执行完全复用既有 Dify 整备 Agent:扫描、决策、下发、重试、通知、执行日志都在它内部完成。本项目不重写整备流程、不新建 Skill、不新建 MCP、不做设备控制。本文只定义两件事:①整备结果如何呈现在 ReAct 智能体的 chatbox;②摘要如何进入「本周 AI 运行洞察」
版本v0.1

1. 场景定义 ​

1.1 一句话 ​

课前,已配置整备的教室由既有 Dify 整备 Agent 自动执行;本项目把执行结果以统一口径呈现到教师 chatbox,并生成一条「本周 AI 运行洞察」摘要。

1.2 用户与价值 ​

用户价值
当日有课的教师到教室即可上课,不用逐台开设备;失败时知道已被接管,不用自己找人
运维失败项集中到运维侧处置,不靠教师报修
管理者课前保障有统一记录,可追溯

1.3 触发方式 ​

  • 主动执行,没有用户 query;不通过对话触发,也不通过本项目的智能体触发。
  • 触发由空间语义管理里的整备配置决定:
    • 房间配置了整备(整备开关打开,且至少一条 RW 语义)→ 有课前日程时执行;
    • 房间没配置 → 不执行,也不产生任何消息(不输出「今天没有整备项」这类噪声)。
  • 执行者是既有 Dify 整备 Agent:它自己负责扫描、决策、下发、重试。
  • 本项目不新增定时任务、不重写触发窗口与沉默期。

1.4 边界 ​

不做原因 / 归属
不接受「帮我开灯」这类对话控制属设备控制(T5);本场景不响应设备指令
不做教师追问的问答流程追问设备状态/原因属 T5 与设备查询;本场景只呈现一次执行结果
不重写触发、决策、下发、重试全部在既有 Dify 整备 Agent 内
不新建 Skill / MCP本项目只做消息呈现,不重复编排
不自动换教室,不给换教室建议失败只交运维处置
不控窗帘窗帘归 T5 案例讨论模式
不做课前巡检报告、欢迎屏巡检归 O3;欢迎屏未确认
不做微信模板消息 / 系统通知结果进常驻会话 + 洞察卡片
不把「未接入」当失败未接入是配置缺口,不是设备故障
不展示其他教室、其他教师的整备结果数据范围只在本人课程教室

1.5 职责划分 ​

环节谁负责
扫描课表、判断是否到整备时间、去重与沉默期既有 Dify 整备 Agent
读空间语义配置、LLM 决策、下发、重试既有 Dify 整备 Agent
写执行日志 / Action Log既有 Dify 整备 Agent
失败通知运维既有 Dify 整备 Agent(沿用其现有通知渠道)
结果消息呈现在 chatbox本项目(ReAct 智能体接收结果并渲染)
摘要写入「本周 AI 运行洞察」本项目(小程序壳)

2. Demo 形态 ​

通用形态见 公共规范.md。本场景只约定:

  • 结果写入该教师的常驻会话,不新建会话;同一条结果的摘要写入首页「本周 AI 运行洞察」卡片,保留 7 天。
  • 不弹系统通知;教师打开小程序后看到结果。
  • 一次执行只产生一条消息,不分段推送。
  • Demo 直接触发既有 Dify 整备工作流,用四种预置结果验证呈现:全部成功、部分失败、有未接入项、房间未配置整备。

3. Agent 输出设计 ​

3.1 输出元素 ​

元素用途约束
结论行一句话说清结果成功 / 部分失败 / 未接入 / 已就绪
结果表逐项列整备结果最多 4 行(灯光、空调、投影、幕布)
未接入标注区分「没配」和「坏了」写「未接入」,不计失败
洞察摘要首页卡片≤40 字,一卡一条
  • 本场景不用 Mermaid:四项结果用表更清楚。
  • 不输出 JSON、不用 HTML、不放编号选项(本场景没有需要用户选择的内容)。

3.2 通用规则 ​

  • 只呈现既有 Agent 的执行结果,不做二次判断:不重新判成败、不重新下发、不补发通知。
  • 结论先行:先写「已整备 / 部分失败 / 未接入」,再列表格。
  • 空值 ≠ 0;设备当前值缺失写「暂无」,不写「正常」。
  • 教师侧不出现设备语义 key、错误码、设备地址,也不出现「换教室」及其同义表达。
  • 未接入 ≠ 失败,单独标注,不计入失败数。
  • 房间未配置整备时不产生任何消息。

3.3 示例①:全部成功 ​

系统(既有整备 Agent 执行完成)

A 楼 302 已整备完成:灯光、空调、投影、幕布 4 项就绪,09:00《公司金融》可正常开始。

整备项目标结果
灯光开启 · 讲课模式已开启
空调开启 · 24℃已开启,当前 24℃
投影开启 · HDMI 1已开启
幕布降下已降下

3.4 示例②:部分失败 ​

系统(既有整备 Agent 执行完成)

A 楼 302 已整备,3 项就绪、1 项失败:投影未开启,已通知运维。

整备项目标结果
灯光开启 · 讲课模式已开启
空调开启 · 24℃已开启,当前 24℃
投影开启 · HDMI 1失败
幕布降下已降下

运维已收到失败项,将在课前处理;课程可正常开始。

3.5 示例③:有未接入项 ​

系统(既有整备 Agent 执行完成)

A 楼 302 已整备,3 项就绪:幕布未接入中控,未执行,不计入失败。

整备项目标结果
灯光开启 · 讲课模式已开启
空调开启 · 24℃已开启,当前 24℃
投影开启 · HDMI 1已开启
幕布降下未接入

3.6 示例④:房间未配置整备 ​

不产生任何消息,也不生成洞察卡片。执行日志里记一条:「A 楼 302 未配置整备,跳过」。教师侧无感。

3.7 关于教师追问 ​

本场景不设追问示例。整备是主动执行、结果一次性呈现;教师问「投影为什么没开」「帮我开一下投影」属于设备状态查询与设备控制(T5),由那个场景回答,本文不承担。


4. 结果接入契约 ​

4.1 执行结果字段 ​

既有 Dify 整备 Agent 每次执行完成后,向本项目提交一份结果。字段建议如下(以实际工作流为准,缺字段按 §4.5 降级):

字段类型必填说明
prep_idstring是本次整备唯一 ID,用于去重
executed_atstring是执行时间,YYYY-MM-DD HH:mm
course.course_id / course_namestring是课程
course.start_time / end_timestring是起止时间
room.room_id / room_namestring是教室
actions[]array是每条 name、target、result、error_message
actions[].resultenum是success / failed / not_connected / skipped
planned_summarystring否既有 Agent 生成的概要,可作结论行素材
failed_countint是失败项数;0 表示无失败
notification_idstring否失败通知编号;无失败为 null

4.2 字段到消息元素的映射 ​

消息元素取值
结论行room_name + actions 汇总 + failed_count
结果表actions[](name / target / result)
「已通知运维」notification_id 非空时追加一句
未接入标注result=not_connected 的项
已就绪actions 全是 success 且无变更动作时,按 planned_summary 输出「当前环境已就绪」

4.3 洞察卡片 ​

项规则
数量一次执行一条卡片
摘要{教室} 整备完成 或 {教室} 整备:{N} 项就绪、{M} 项失败,≤40 字
保留7 天,超期自动移出
点击回到会话看完整结果
未配置不生成卡片

4.4 去重与幂等 ​

  • 以 prep_id 去重:同一 prep_id 重复回调只呈现一次。
  • 同一课程 + 同一教室的重复回调(重试、重放)合并为一条,不追加第二条消息。
  • 不按时间窗口猜是否重复。

4.5 异常与降级 ​

情况处理
回调超时 / 失败不向教师呈现错误;记日志,由既有 Agent 重试
room_name 缺失用 room_id 兜底;仍缺失写「暂无」
actions 为空按 planned_summary 输出「当前环境已就绪」
failed_count > 0 但 notification_id 为空写「失败项已记录」,不写「已通知运维」
result 出现未知枚举按原值展示,不擅自归为成功或失败

5. 呈现规则 ​

5.1 只呈现,不重算 ​

本项目对既有 Agent 的结论只做排版与降级,不判断对错、不改变结论、不尝试修复失败项。

5.2 消息结构固定 ​

结论行 → 结果表(≤4 行)→ 失败说明(如有)。一条消息发完,不分段、不中途追问。

5.3 教师侧不展示 ​

设备语义 key、错误码、中控协议、设备地址、其他教室的结果、换教室建议。

5.4 留痕 ​

呈现即留痕:保存 prep_id、课程、教室、结果与消息映射关系,便于后续按课程追溯。


6. 定时任务配置 ​

本项目不新增定时任务。

项值
本项目是否建定时任务否
触发与执行既有 Dify 整备 Agent(Webhook / 定时扫描由它自身配置)
本项目职责接收结果 → 渲染消息 → 写洞察卡片
Demo 触发方式在既有 Dify 工作流里手动触发一次,观察呈现结果

与 公共规范.md §4「主动服务由 DeerFlow 定时任务触发」的差异:本场景的执行器是既有 Dify Agent,本项目不重复建任务。若后续要统一到 DeerFlow 调度,再迁移。


7. 权限与数据范围 ​

角色可见可执行数据范围
教师本人课程的整备结果、失败项名称只读本人课程对应教室
运维负责区域的失败项与执行明细只读;处置走运维工具负责楼栋 / 楼层
管理者授权范围的整备汇总只读授权范围
其他角色无无无
  • 结果按「课程教师 + 教室」路由,不广播。
  • 教师侧只看到整备项与结果,不暴露错误码与设备地址。

8. 验收要点 ​

#验收项标准
1配置驱动配置了整备的房间有课前日程 → 有结果;未配置 → 不产生任何消息
2全部成功四项均成功,输出「已整备完成」+ 结果表,与执行结果一致
3部分失败失败项标注清楚,教师看到「已通知运维」,不出现换教室建议
4未接入标「未接入」,不计入失败,不硬开
5无配置不产生噪声不输出「今天没有整备项」之类的消息
6一条消息一次执行只产生一条消息,不分段推送
7幂等同一 prep_id 重复回调只呈现一次
8洞察卡片一卡一条、≤40 字、保留 7 天、点击回到会话
9信息边界不出现设备语义 key、错误码、设备地址、其他教室
10无对话控制回复中不出现设备控制动作,也不引导教师「让 AI 开设备」

9. 已确认与待确认 ​

9.1 已确认 ​

#事项结论
1执行主体复用既有 Dify 整备 Agent,本项目不重写流程
2触发口径由空间语义管理中的整备配置决定:有配置才执行,没有就不执行
3本项目范围只做结果呈现 + 洞察卡片,不做 Skill / MCP / 设备控制
4呈现位置教师常驻会话 + 首页「本周 AI 运行洞察」(保留 7 天)
5失败处理只通知运维,教师侧只显示「已通知运维」
6追问本场景不设追问;追问归 T5 与设备查询
7未接入以空间语义配置为准,缺失标「未接入」,不算失败

9.2 待确认 ​

  1. 既有 Dify 整备 Agent 的实际输出字段是否与 §4.1 一致?回调方式是 Webhook、消息队列还是轮询?
  2. 「配置了整备」的判定口径:整备开关 + RW 语义,还是只要求存在 RW 语义?
  3. 失败通知运维目前走哪个渠道?是否要统一到本项目的运维助手会话?
  4. 洞察卡片摘要由本项目生成,还是直接取 Agent 的 planned_summary?
  5. 投影 / 幕布是否接入中控?会否长期显示「未接入」?
  6. 设备回读是否可得?决定写「已开启」还是「已下发」。
  7. 课表变更 / 换教室时,既有 Agent 的行为与新教室补整备策略。
  8. 寒暑假、单双周、调停课、补课如何排除。
  9. 同一教室连堂课是否只整备一次,由谁去重。
  10. 未接入项是否在首次发现时通知运维,还是只进配置缺口清单。

10. 关联文档 ​

文档关联内容
08_移动端AI场景设计.md §4、§10、§11、§12T3 场景来源、教师时间线、跨系统兜底
公共规范.md §2.7、§4、§5、§6洞察卡片、主动服务展示方式、数据规范、输出规范
07_课程系统-课表同步与实时引导.md §2.2、§3.3课表字段、教室端「环境随课走」
T1-到校前简报.md同属主动服务,呈现方式保持一致
space-agent SA_主动整备_Agent设计.md既有整备 Agent 的决策与执行设计(本文只消费其输出,不改其流程)

注:上述文档与本文不一致时,以本文为准,回写更新对应文档。

内部方案材料,请勿外传