Skip to content

M8 人流密度(Demo 场景 PRD) ​

项内容
文档定位08_移动端AI场景设计.md §10 中反引号标记的 demo 模块的场景 PRD。本文是 M8;模板见 公共规范.md §8
通用 demo 规范前端形态、系统提示词边界、定时任务方式、数据与输出规范见 公共规范.md;本文只写 M8 场景本身
能力来源02_人流密度与空间洞察.md(数据源、点位映射、空间类型口径)
版本v0.1

1. 场景定义 ​

1.1 一句话 ​

管理者按需问「现在哪里人多、会不会超容、会不会堵」,Agent 给实时人数、密度分级、趋势峰值、超容与突增提示,并给分流、新风、安保建议(只建议,不控制)。

1.2 用户与价值 ​

项内容
用户管理者(demo 账号 M1001)
价值不翻看板、不逐个点摄像头,一句话拿到「哪挤、为什么、要不要现在处理」
频次按需,无定时推送

1.3 触发方式 ​

  • 被动问答,没有定时任务。
  • 典型 query:
    • 「现在 3 楼哪些区域人多?」
    • 「报告厅散场会不会堵?」
    • 「今天上午人流高峰什么时候?」
    • 「哪个区域人数突然变多?」
    • 「302 现在坐了多少人?会不会坐不下?」
  • 首次未说明范围时,默认「当前楼栋、实时」,并在回复中写明口径,让用户追问换楼层/换时段。

1.4 边界 ​

不做原因
不做定时任务、主动推送M8 是被动问答;超容/突增的主动预警归 O1/O9,并与信息发布联动
不做真实平面热力图需要平面图叠加和前端渲染,聊天区只能出 Markdown + Mermaid;demo 用「楼层面分布柱状图 + 密度分级表」表达,历史热力待确认
不控制设备新风、照明、信息屏、门禁只给建议,执行由规则引擎/BA 完成
不做个人识别与轨迹不人脸识别、不存人脸图、不按人追踪
不统计停车/充电车辆归 S2,车位 ≠ 人数
不用 WiFi/蓝牙探针、不用 CO₂ 反推人数精度与归属不可靠(见 02 §1)
不跨空间类型排名教室看占用率、通道看密度,口径不同,混排会得出错误结论
不承诺精确人数摄像头计数误差约 ±10%~20%,对外只给分级和趋势

1.5 前置条件:点位-空间映射配置 ​

M8 的所有指标都建立在「点位 → 空间」映射上。没有这张表,摄像头和闸机的人数无法落到房间、楼层,本场景不成立。

1.5.1 配置字段 ​

字段说明示例
point_id数据源点位 IDCAM-3F-301 / GATE-1F-E01
source_type数据源类型camera / turnstile / parking
space_code绑定的空间编码,未映射时为空A-3F-302
space_name空间名称302 案例讨论室
space_type空间类型classroom / discussion / study / auditorium / canteen / corridor / office / interview / lounge
coverage该点位覆盖的物理范围室内全画面 / 3F 东侧走廊
area_m2覆盖面积(㎡)65
capacity设计容量(人);通道类可空40
effective_from / effective_to生效期,to 为空表示长期2026-09-01 / —
owner配置维护人/班组弱电
status状态active / inactive / pending

1.5.2 映射规则 ​

  1. 一个点位只绑一个主空间(跨空间覆盖时拆点位);一个空间可绑多个点位(多摄像头、摄像头 + 闸机)。
  2. 同空间多点位不直接相加:由空间级 combine_mode 决定——重叠覆盖取 max,互补覆盖取 weighted(权重按覆盖面积配置,和为 1)。模型不自行选择,MCP 按配置算。
  3. 未映射 / 已过有效期 / status≠active 的点位进「待配置」清单,看板与回答都标「待配置」,显式列出,不计入合计,不静默丢弃。
  4. 空间主数据存在但没有有效点位,该空间同样标「待配置」,不显示为 0。
  5. 变更走后台维护页并保留版本;demo 用样例点位表 + 模拟数据把机制跑通,正式建设替换真实点位。

1.5.3 样例点位表(demo) ​

point_idsource_typespace_codespace_namespace_typecoveragearea_m2capacityeffective_from/toownerstatus
CAM-3F-301cameraA-3F-301301 阶梯教室classroom室内全画面1801002026-09-01 / —弱电active
CAM-3F-302cameraA-3F-302302 案例讨论室discussion室内全画面65402026-09-01 / —弱电active
CAM-3F-303cameraA-3F-303303 研讨室discussion室内全画面40302026-09-01 / —弱电active
CAM-3F-PUB-AcameraA-3F-PUB3F 公共区corridor电梯厅120—2026-09-01 / —弱电active
CAM-3F-PUB-BcameraA-3F-PUB3F 公共区corridor中庭 + 东侧走廊240—2026-09-01 / —弱电active
CAM-3F-305camera—(未绑定)——3F 东侧走廊北段80—2026-09-01 / —弱电pending
CAM-AUD-01cameraA-1F-AUD报告厅auditorium观众席全画面4002002026-09-01 / —弱电active
CAM-AUD-FOYERcameraA-1F-AUD-FOYER报告厅前厅corridor前厅 + 东侧通道120—2026-09-01 / —弱电active

注:3F 公共区两路摄像头在电梯厅入口重叠约 40 ㎡,直接相加会把同一批人算两遍;空间级规则配 max,取两路中的较大值。面积按并集 320 ㎡ 计(120 + 240 − 40)。

1.5.4 空间组合规则 ​

space_codecombine_mode说明
A-3F-PUBmax两路重叠,取最大值
A-1F-AUDmax单路,等价于原值
其他空间max(默认)只有显式配 weighted 才加权

1.5.5 demo 如何跑通 ​

启动时加载样例点位表与空间主数据,每个点位模拟实时人数(含断连、未映射两种异常);MCP 按 space_code 聚合、按 combine_mode 去重、按空间类型算指标与分级;回答同时给出「已映射合计」和「待配置/暂无」清单,证明没有静默丢弃。

1.5.6 通道/出口档案 ​

点位表只解决「哪个点位的人数归到哪个空间」;通道宽度、出口数量、通行能力属于通道/出口档案,不在点位表里,由业务系统维护,用于流量判断与散场预判(见 §10)。没有这份档案时,M8 只能给当前密度,不能给「会不会堵」的定量结论。

1.6 数据源边界 ​

数据源提供什么用途限制
闸机进/出计数、刷卡记录出入口人数、楼层净流入校验只覆盖出入口,不能直接当房间人数
摄像头 AI 人数统计区域/画面人数房间、区域、通道的当前人数与历史有遮挡和误差,断连时为空
预约 / 课表 / 活动计划人数、时段未来值、解释突增、散场预判计划值,不是实测
停车 / 充电车位、进出不归 M8归 S2
WiFi / 蓝牙探针终端数不采用MAC 随机化、跨层归属不清
CO₂ 反推人数浓度不采用精度不可靠,只作环境指标
人脸识别 / 人脸图—不做隐私边界

1.7 空间类型决定口径 ​

空间类型主口径分级依据当前人数怎么用
阶梯教室 / 教室占用率 = 人数 ÷ 容量舒适 <80%,接近容量 80–100%,超容 >100%看是否坐满、是否影响上课
案例讨论室 / 研讨室 / 面试间占用率 = 人数 ÷ 容量同上看是否接近满员、有无备选
自习区座位占用率 = 人数 ÷ 座位数同上(容量按座位数配)看座位是否紧张
报告厅 / 食堂当前占用率 + 峰值当前按占用率;结论看峰值和散场看峰值是否超容、散场是否拥堵
公共通道 / 大堂 / 交流区密度 = 人数 ÷ 面积(人/㎡)舒适 <0.5,接近容量 0.5–1.0,超容 >1.0不看占用率,看密度与峰值
  • 阈值按空间类型配置,由业务系统或 MCP 计算并返回 density_level / flow_level,模型不自己判。
  • 同类空间可横向比较;跨类型不排名,只给趋势。 例如不能把 302 的 95% 占用率和公共区的 0.18 人/㎡ 放在一张榜上比。
  • 通道类容量可空;容量为空时只算密度,不算占用率。

2. Demo 形态 ​

通用形态见 公共规范.md(小程序悬浮球打开 DeerFlow 聊天区、单会话、Markdown + Mermaid)。

本场景只约定:

  • 登录管理者账号,点悬浮球,在常驻会话直接提问;追问沿用上一轮范围,如先问「3 楼」再问「那 4 楼呢」。
  • 回复由「结论段 + 空间表 + 最多 2 张 Mermaid + 提示 + 建议」组成,不出现自定义业务卡片;热力用「楼层面人数分布柱状图 + 密度分级表」表达,不做平面图叠加。
  • 结果不写首页洞察卡片(M8 不是 L4 主动服务)。

注(演示脚本):问「现在 3 楼哪些区域人多?」→ 看实时表与分级 → 追问「报告厅散场会不会堵?」→ 看散场预判与建议。


3. Agent 输出设计 ​

3.1 输出元素 ​

元素用途
Markdown 文字结论、口径、原因、建议
Markdown 表格空间清单(空间/人数/容量/占用率/密度/等级/更新时间)
Mermaid xychart-beta(bar)楼层面人数分布,最多 8 个空间
Mermaid xychart-beta(line)时段趋势、散场曲线
Markdown 链接「查看人流看板」跳转

一次回复最多 2 张图;不输出 JSON、不用 HTML、不输出快捷按钮。

3.2 实时查询(主场景) ​

示例(2026-11-04 10:42,3F):

用户

现在 3 楼哪些区域人多?

Agent

3F 当前已映射空间合计 186 人(10:42)。301 阶梯教室 92 人、占用率 92%,302 案例讨论室 38 人、95%,都接近容量;3F 公共区 56 人、密度 0.18 人/㎡,舒适。303 研讨室摄像头断连,暂无数据;东侧走廊点位未映射,待配置。

空间当前人数容量占用率密度(人/㎡)等级更新时间
301 阶梯教室9210092%0.51接近容量10:42
302 案例讨论室384095%0.58接近容量10:42
3F 公共区56——0.18舒适10:42
303 研讨室暂无30——数据不可用—
3F 东侧走廊待配置———待配置—
合计186————10:42

说明:

  • 合计只含 3 个已映射且有数据的空间(92 + 38 + 56 = 186),303 和东侧走廊不计入;公共区两路摄像头取 max,不是 48 + 56,直接相加会多算重叠区。
  • 表格按楼层/空间编码排列,不按等级排名;柱状图只表示人数分布,不表示利用率高低。
  • 建议:301、302 均接近满员,课间在 3F 电梯厅引导分批进出,避免两间同时散课叠加;303 修好摄像头后再纳入观察;公共区舒适,无需调整新风。

3.3 时段趋势与峰值 ​

示例:

用户

今天上午 3F 人流高峰什么时候?

Agent

上午有两个高峰:08:50–09:05 入场,约 210 人;10:20–10:30 课间流动,约 200 人。10:42 回落到 186 人,11:00 后开始离楼。

口径:3F 已映射空间合计,不含 303 与未映射走廊;09:00 峰值对应 08:50 前后的入场,10:30 峰值对应课间流动。历史和实时必须同口径才能比较。

3.4 散场预判(有日历) ​

示例(16:50):

用户

报告厅散场会不会堵?

Agent

会短时超容。报告厅 17:00 结束(讲座,报名 180 人),当前 175 人(今日峰值 180)、占用率 87.5%。按同类讲座历史曲线,约 80% 的人在结束后 5 分钟内离场,预计 140 人集中进入 120 ㎡ 前厅(按 1.0 人/㎡ 运营密度阈值折合容量 120 人),瞬时密度约 1.17 人/㎡,超过超容阈值。

建议:

  1. 提前 5 分钟开东侧门并广播分两批离场,单批约 70 人、密度约 0.58 人/㎡,回到接近容量。
  2. 前厅加派 2 名安保,重点看东侧通道汇入口。
  3. 信息屏切到「东侧通道」引导画面。

注:计算链由业务系统/MCP 完成,Agent 只展示结果:175 × 80% = 140 人;140 ÷ 120 ㎡ ≈ 1.17 人/㎡;分两批 70 ÷ 120 ≈ 0.58 人/㎡。本例的 1.0 人/㎡ 是运营密度阈值,不是消防疏散通行能力;正式项目应同时取通道档案的 capacity_ppm,用「离场流率 vs 通行能力」判断瓶颈。历史曲线来自模拟样本,正式项目用真实散场数据。

3.5 散场预判(无日历/无历史) ​

  • 没有活动日历或历史散场数据时,只给当前值,不硬预测。
  • 示例:「报告厅当前 175 人、容量 200、占用率 87.5%(16:50)。该时段没有活动日历,也没有可用的历史散场曲线,无法判断结束时间和集中离场人数。建议现场确认活动结束时间后再看通道。」
  • 有日历但无历史曲线时:可给结束时间,但不给离场人数与密度,写「缺历史散场样本,只能按结束时间提醒」。
  • 有历史但无日历时:可给「若散场,约 N 人」,但必须标「假设」,并说明结束时间未知。
  • 没有实时流量接口时:只给当前人数/密度,不给流率,也不做「会不会堵」的定量判断。

3.6 突增提示 ​

示例:

用户

哪个区域人数突然变多?

Agent

15:20 报告厅 5 分钟内从 20 增至 180(+160,+800%),超过突增阈值(5 分钟 +100 人或 +50%,且人数 ≥80)。日历显示 15:30 有讲座入场,属预期突增,不是异常。当前 180/200(90%,接近容量),建议入口分流、加派 1 名安保。

  • 有日历:说明「预期突增/非预期」,并引用活动名称与开始时间。
  • 无日历:标「原因待核实」,不武断判为异常;给出现场确认建议。
  • 阈值由配置给出,MCP 返回事件等级,模型不自己设阈值。

3.7 异常与降级 ​

情况输出
点位未映射 / 已失效该空间标「待配置」,列入清单,不计入合计
摄像头断连该空间「暂无」,不写 0,不画进柱状图
同空间多摄像头重叠按 combine_mode 去重,回复注明「已去重,取最大值/加权」
人数误差 ±10%~20%对外用「舒适/接近容量/超容」分级和趋势,不承诺精确人数
未来值来自课表/预约明确写「计划值,非实测」;调停课、缺席会使实际偏离
突增误报结合活动日历解释;无日历标「待核实」
历史样本不足只给当前值,不做趋势和散场预测
无实时流量接口只给人数/密度分级,注明「流量数据不可用」,不做拥堵判断
无通道/出口通行能力不给定量散场预测,只给当前密度和定性建议
阈值档案缺失用空间类型默认值,标注「默认阈值,未经甲方确认」
MCP 失败回「暂无数据」,不编造、不按 0 处理

3.8 口径说明(随回复附一句) ​

  • 占用率 = 当前人数 ÷ 设计容量;密度 = 当前人数 ÷ 覆盖面积;都由 MCP 算好,带 updated_at。
  • 房间类阈值:<80% 舒适、80–100% 接近容量、>100% 超容;通道类:<0.5、0.5–1.0、>1.0 人/㎡。demo 用默认值,生产按空间类型配置。
  • 合计只汇总「已映射且有数据」的空间;同空间多点位先去重再汇总。不同更新时间的数字不放在同一句里比较。

3.9 输出模板(开发参考) ​

本节给 Skill 组装输出用,业务评审可跳过。

实时查询:

结构固定:结论段({范围}当前已映射空间合计 {N} 人,{时间};{最挤的 1–2 个};{异常空间})→ 空间表 → 柱状图(只画有数据的空间)→ 待配置/暂无说明 → 建议(≤3 条)。

时段趋势与峰值:

结构固定:结论段({范围}上午高峰在 {时段},约 {峰值} 人;次高峰 {时段})→ 折线图 → 峰值与课表/活动的对应关系 → 口径说明。

散场预判:

结构固定:结论(会/不会短时超容)→ 依据(结束时间、当前人数/占用率、历史散场比例、通道面积/通行能力)→ 数字(预计 X 分钟后 Y 人离场,密度约 Z 人/㎡)→ 建议(分流/安保/信息屏)。


4. MCP 设计 ​

4.1 query_crowd_realtime ​

项内容
作用查指定范围的当前人数、密度与分级
入参scope_type(space|floor|building)、scope_id(空间编码/楼层/楼栋)、space_types(可选,数组)、include_pending(bool,默认 true)

返回:

字段类型说明
scopeobjectscope_type、scope_id、scope_name
updated_atstring数据更新时间
total_peopleint/null已映射且有数据空间的合计;无法汇总时为空
total_basisstring合计口径,如「已映射 3 个空间,未含待配置」
data_qualityenumhigh / medium / low
spacesarray空间数组,字段见下
pending_spacesarray待配置/暂无清单:space_code、space_name、reason(unmapped/expired/offline)、last_seen

spaces[] 字段:

字段类型说明
space_code / space_namestring空间编码与名称
space_typeenumclassroom / discussion / study / auditorium / canteen / corridor / office / interview / lounge
floorstring楼层
peopleint/null当前人数;断连为空
capacityint/null设计容量,通道类可空
area_m2number覆盖面积
occupancy_ratenumber/null占用率(0–100),通道类为空
densitynumber/null人/㎡
density_levelenumcomfortable / near_capacity / over_capacity / unavailable
flow_in_ppmnumber/null实时流入率(人/min),业务系统返回;无接口时 null
flow_out_ppmnumber/null实时流出率(人/min),业务系统返回
net_flow_ppmnumber/null净流入率(人/min),流入 − 流出
flow_levelenum/nullcomfortable / near_capacity / over_capacity / unavailable
flow_basisenummeasured / derived / unavailable
threshold_versionstring阈值档案版本,用于解释「为什么判这个等级」
mapping_statusenummapped / unmapped
data_qualityenumhigh / medium / low / unavailable
source_typesarraycamera / turnstile
combine_modeenummax / weighted / single
updated_atstring该空间数据更新时间
notestring去重、断连等说明

注(计算位置):人数聚合、去重、占用率、密度、流量、分级、阈值比较全部由业务系统或 MCP 指标服务算好;Agent 不使用「人数 ÷ 面积」「人数 ÷ 时间」自行推算,也不自行判断是否超阈值。

4.2 query_crowd_history ​

项内容
作用查时段趋势、峰值与峰值时段
入参scope_type、scope_id、space_codes(可选)、start、end(ISO 时间)、granularity(5/15/30/60 分钟)、metric(people|density)

返回:

字段类型说明
updated_atstring数据更新时间
granularityint采样粒度(分钟)
data_qualityenumhigh / medium / low
spacesarray每空间:space_code、space_name、capacity、area_m2、mapping_status、data_quality、series(ts、people、density_level)、peak(ts、people、density_level)、peak_periods(start、end、people)

注:序列中的空值保留为 null,不补 0;有效样本覆盖不足时标「样本不足」,不补点。

4.3 query_space_calendar ​

项内容
作用查课程/预约/活动,用于解释突增与散场预判
入参space_codes(数组)或 floor、start、end

返回:

字段类型说明
updated_atstring数据更新时间
data_qualityenumhigh / medium / low
eventsarrayevent_id、space_code、space_name、title、start、end、expected_people、source(course/booking/activity)、status、`updated_at

注:expected_people 是计划值,不是实测;无日历时返回空数组,不推断。

4.4 query_crowd_events(可选) ​

项内容
作用查超容/突增/断连事件
入参scope_type、scope_id、start、end、event_types(over_capacity/surge/sensor_offline)、min_level

返回:events[] 含 event_id、space_code、space_name、type、level、started_at、ended_at、peak_people、threshold、calendar_event_id、status、mapping_status、data_quality、updated_at。

4.5 query_crowd_flow ​

项内容
作用查单位时间内的流入、流出、净流与流量分级,用于拥堵、突增、散场判断
入参scope_type(space|floor|building)、scope_id、space_codes(可选)、window_min(1 / 5 / 15,默认 5)

返回:

字段类型说明
updated_atstring数据更新时间
window_minint统计窗口(分钟)
spacesarray每个空间/通道的流量结果,字段见下
data_qualityenumhigh / medium / low

spaces[] 字段:

字段类型说明
space_code / space_namestring空间编码与名称
flow_in_ppmnumber/null流入率(人/min)
flow_out_ppmnumber/null流出率(人/min)
net_flow_ppmnumber/null净流入率(人/min)
flow_levelenumcomfortable / near_capacity / over_capacity / unavailable
capacity_ppmnumber/null通道/出口通行能力(人/min),来自通道档案
basisenummeasured / derived / unavailable
threshold_versionstring阈值档案版本
data_qualityenumhigh / medium / low / unavailable

注:流量不在 Agent 里算。 有越线计数或闸机进出计数时,业务系统直接返回 basis=measured;只有区域人数序列时,由业务系统或 MCP 指标服务按时间差分估算,basis=derived,回复必须标「估算值」;两者都没有时返回 unavailable,M8 不做流量判断,只做人数/密度分级。

4.6 通用约定 ​

  • 所有工具返回 updated_at;人数聚合、密度、流量、分级与阈值比较在业务系统或 MCP 内完成,模型只解读。
  • 人数为空返回 null,不返回 0;空数组表示「无数据」,不是「没人」。
  • 同一空间多点位在 MCP 内按 combine_mode 去重后再返回,模型不做聚合。
  • 工具不返回摄像头原始画面、人脸特征、个人轨迹。

5. Skill 设计 ​

5.1 职责 ​

把「解析范围 → 实时 → 按需取历史/日历 → 判断分级与突增 → 组装输出」这套固定流程写死,保证每次回复结构一致、数字都有来源。

5.2 流程 ​

5.3 提示词草稿 ​

你是上海交通大学新院区 IBMS 的管理者助手。用户会问人流密度、趋势和散场拥堵,你要给出可执行的建议。

输入:
- 管理者 ID:从对话上下文取(demo 固定 M1001)
- 数据范围:全院

步骤:
1. 解析范围:空间/楼层/楼栋,时间默认当前;没说范围时按当前楼栋并写明。
2. 调 query_crowd_realtime 取当前人数、容量、面积、occupancy_rate、density、density_level、flow_level、mapping_status、data_quality、updated_at。
3. 问流量/拥堵:调 query_crowd_flow 取 flow_in_ppm、flow_out_ppm、net_flow_ppm、flow_level、capacity_ppm、basis;流量、阈值、分级都直接用返回值,不自己算。
4. 问趋势/峰值:调 query_crowd_history,按 30 分钟粒度给折线。
5. 问散场/未来/突增:调 query_space_calendar 取结束时间和计划人数;再结合实时流量和历史散场曲线。
6. 分级只用工具返回的 density_level / flow_level,不自己算、不自己定阈值。
7. 组装:结论 → 空间表 → 最多 2 张图 → 待配置/暂无说明 → 建议(≤3 条)。

输出要求:
- 只用 Markdown 和 Mermaid,不输出 JSON、不用 HTML。
- 空值写「暂无」,不写 0;待配置空间单列,不计入合计。
- 同空间多点位按工具结果去重,不自行相加。
- 不跨空间类型排名;教室看占用率、通道看密度,只给趋势。
- 流量、阈值、分级只用工具返回值;不用人数÷面积、人数÷时间自行推算;工具无流量时写「暂无流量数据」,不做拥堵判断。
- 人数有 ±10%~20% 误差,用分级和趋势表达,不承诺精确。
- 未来值写「计划值,非实测」。
- 日历和历史都缺时,明确说只能给当前值,不硬预测;只缺一项时说明假设与缺口。
- 建议只给分流、新风、安保、信息屏引导,不控制设备。
- Few-shot:把本文 §3.2(实时)和 §3.4(散场预判)的示例原文放入 skill。

5.4 工具调用顺序与失败策略 ​

步骤调用失败时
1query_crowd_realtime回「暂无数据」,不编造;不继续猜
2query_crowd_flow只给人数/密度,注明「流量数据不可用」,不做拥堵判断
3query_crowd_history只给当前值,注明「趋势暂不可用」
4query_space_calendar只给当前值,注明「无活动日历,无法预判散场」
5query_crowd_events跳过突增段,不影响主结论
6组装回复—

注:实时是主数据,必须成功;历史、日历、事件都是增强,失败时降级而不是编造。

5.5 追问绕过 Skill ​

  • 「那 4 楼呢?」「302 呢?」「看 9 点到 10 点」这类追问,直接调对应工具换参数,不重跑整套 Skill;换范围沿用上一轮时间口径,换时段沿用上一轮空间口径,并在回复中写明。

6. 定时任务配置 ​

无。

M8 是被动问答,不配置 DeerFlow 定时任务。超容/突增的主动预警归 O1 交接班、O9 夜间巡检/告警值班,并与信息发布屏联动;M8 只负责用户提问时的查询与解释,不在这里新增定时任务。


7. 权限与数据范围 ​

  • 管理者账号 M1001,数据范围「全院」;demo 不做按楼/部门的权限切分。
  • 只返回空间/楼层/楼栋维度的聚合人数与分级,不返回个人身份、刷卡记录、个人轨迹。
  • 不返回摄像头原始画面、截图、人脸图;只返回统计值。
  • 空值与 0 严格区分:断连写「暂无」,未映射写「待配置」,都不写 0。
  • 生产环境按角色 + 数据范围鉴权;越权范围直接拒绝并说明原因。

8. 验收要点 ​

#验收项标准
1映射缺失未映射点位和空间在回复中标「待配置」,列入清单,不计入合计,不静默丢弃
2空值处理摄像头断连显示「暂无」,不显示 0,不画进柱状图;合计不含该空间
3类型口径通道只给密度和峰值,不给占用率;房间给占用率
4跨类型不排名回复和图表都不出现跨类型利用率排名,只给分布或趋势
5散场预判(有日历)给出结束时间、离场人数、通道密度和分流建议,数字能对上
6散场预判(无日历/历史)明确写「只能给当前值」,不编造结束时间、离场人数或密度
7图表数量一次回复最多 2 张 Mermaid;柱状最多 8 个空间
8分级来源等级来自 MCP 的 density_level,模型不改阈值、不自行判定
9去重同空间多摄像头按 combine_mode 去重,公共区不出现 48+56=104
10不承诺精确回复用分级/趋势表达,注明人数误差约 ±10%~20%,不承诺精确计数
11更新时间每个数字带 updated_at,不同时间的数字不混在一句里比较
12流量来源流量数字来自 query_crowd_flow 或业务系统接口,Agent 不自算;basis=derived 时标「估算值」
13阈值来源阈值与等级来自业务系统/MCP,回复带 threshold_version;默认阈值标注「未经甲方确认」
14拥堵判断有流量和通行能力才给定量拥堵结论;缺任一项时只给密度分级,不给「会不会堵」的数字

9. 已确认与待确认 ​

9.1 已确认 ​

#事项结论
1交互形态被动问答,无定时任务
2前置条件必须先有点位-空间映射配置,否则场景不成立
3数据源人数用闸机 + 摄像头;预约/课表只作计划值与时段解释;不用探针、CO₂、人脸
4分级舒适 / 接近容量 / 超容三档,阈值由配置给出,业务系统或 MCP 计算
5热力表达demo 用分布柱状图 + 分级表,不做平面热力图
6权限全院聚合,不返回个人与摄像头画面;demo 固定 M1001
7计算位置人数聚合、去重、密度/流量、分级、阈值比较由业务系统或 MCP 完成,Agent 只解读
8流量口径实时流量由业务系统提供;无越线计数时由指标服务差分估算并标「估算值」;都没有则不做流量判断
9阈值分层状态阈值(占用率/密度)与流量阈值(人/min)分开定义,不互相替代

9.2 待确认 ​

  1. 正式点表与覆盖范围由谁提供?摄像头/闸机点位清单何时可用?
  2. 每个空间的面积、设计容量、座位数是否有准确台账?通道面积怎么算?
  3. 同空间多点位的去重规则:哪些空间重叠、哪些互补?weighted 权重谁来配?
  4. 分级阈值(80%/100%、0.5/1.0 人/㎡)是否由甲方确认?是否按空间细分?
  5. 实时刷新频率是多少?MCP 缓存多久?超过多久算「数据过期」?
  6. 活动日历/课表能否实时同步?调停课、临时活动是否推送?
  7. 历史散场曲线是否有足够样本?没有时是否接受「只给当前值」?
  8. 是否需要历史热力图/平面图叠加?若需要,前端由谁实现?
  9. 业务系统是否已有实时流量接口?摄像头是否支持越线/方向计数?若只有区域人数,是否接受差分估算并标「估算值」?
  10. 通道/出口的宽度、数量、通行能力(人/min)由谁提供、按什么标准配置?
  11. 状态阈值和流量阈值由谁定义、多久评审一次?默认阈值是否需甲方书面确认?
  12. 消防疏散安全是否明确不纳入 M8?(建议归消防/安保系统,M8 只做运营拥堵提示)

10. 对业务系统的要求 ​

注:本节是 M8 能否成立的前提。M8 不在 Agent 里算人数、密度、流量或阈值;业务系统(或 MCP 指标服务)必须先定义指标、维护参数、提供查询。没有这些接口,M8 只能降级为「查人数 + 看密度」。

10.1 必须定义的阈值 ​

类别阈值单位粒度用途
状态实时人数人空间/点位展示、合计;不直接分级
状态人数上限人空间/区域容量缺失时的替代分级;有容量时优先用占用率
状态密度阈值人/㎡空间/通道/空间类型舒适/接近容量/超容
状态占用率阈值%房间/座位区舒适/接近容量/超容
流量流入率阈值人/min出入口/通道入场拥堵、突增
流量流出率阈值人/min出口/通道散场拥堵
流量净流入率阈值人/min楼层/区域人员积聚风险
流量突变阈值Δ人/Δmin 或 %空间/区域突增事件
通行通道/出口通行能力人/min(或 人/min·m)通道/出口拥堵判定的分母
散场散场曲线累计离场 %空间/活动类型预测离场人数与时间窗

要求:

  • 状态阈值和流量阈值必须分开定义,不能用「人数上限」代替「流量阈值」。
  • 阈值按空间类型给默认值,允许按单个空间/通道覆盖。
  • 每条阈值带 threshold_version、生效期、维护人。
  • 消防疏散安全阈值不在此列,由消防/安保系统按规范负责;M8 的阈值只用于运营拥堵提示。

10.2 必须提供的查询 ​

查询必须返回用途
实时状态people、capacity、area_m2、occupancy_rate、density、density_level、updated_at、data_qualityquery_crowd_realtime
实时流量flow_in_ppm、flow_out_ppm、net_flow_ppm、flow_level、window_min、basis、updated_atquery_crowd_flow
阈值档案各空间/通道的阈值、默认值/覆盖值、threshold_version、生效期解释分级与验收
通道/出口档案width_m、exit_count、capacity_ppm、source散场与拥堵判断
空间主数据space_code、space_name、space_type、area_m2、capacity/seats、floor密度/占用率
点位映射point_id、source_type、space_code、coverage、status人数归属
历史序列people/density/flow 的时序、峰值、峰值时段趋势与散场曲线
日历event_id、space_code、start、end、expected_people散场预判
事件over_capacity / surge / sensor_offline 及阈值、等级突增与异常解释

10.3 实时流量到底谁算 ​

明确三条:

  1. 业务系统有流量接口:直接返回 flow_in_ppm / flow_out_ppm / net_flow_ppm,basis=measured。MCP 只透传、聚合、单位换算,Agent 只读。
  2. 业务系统只有区域人数:由业务系统或 MCP 指标服务按时间差分估算,basis=derived,并返回 window_min。回复必须标「估算值」,不能把估算值说成实测。
  3. 两者都没有:返回 basis=unavailable,M8 不做流量判断,只给人数/密度分级;不允许 Agent 用人数 ÷ 时间临时推算流量。

补充:

  • 流量窗口建议支持 1 / 5 / 15 分钟,默认 5 分钟。
  • 越线/方向计数比区域人数差分可靠;如果甲方要求准确流量,需在摄像机选型或安装位置阶段就明确。
  • 流量和人数必须同口径、同时间窗,否则不能放在一句话里比较。

10.4 配置与维护责任 ​

配置项谁维护频率缺失时
空间面积/容量/座位数空间管理/资产建设期 + 变更只给人数,不算密度/占用率
通道宽度/出口数/通行能力基建/消防/运维一次性 + 改造不做定量散场预测
状态/流量阈值档案运营/学院/消防初次 + 定期评审用空间类型默认值并标注
点位-空间映射弱电/IoT建设期 + 变更标「待配置」,不计入合计
活动日历教务/活动系统实时无法预判结束时间
历史散场曲线数据平台运营后积累只给当前值

10.5 降级规则 ​

缺失M8 的输出
无流量接口/无流量数据只给人数、密度分级,不判断「会不会堵」
无通道/出口通行能力不给定量散场预测,只给当前密度和定性建议
无历史散场曲线只给活动结束时间提醒,不给离场人数/密度
无阈值档案用空间类型默认值,标注「默认阈值,未经甲方确认」
无活动日历不预测散场,只给当前状态
无点位映射标「待配置」,不显示为 0

10.6 接口契约 ​

  • 所有指标由业务系统/MCP 算好,Agent 不做除法、不做阈值比较。
  • 返回 updated_at、data_quality、mapping_status、threshold_version、basis。
  • 空值返回 null,不返回 0;失败返回错误码和原因,不返回猜测值。
  • 阈值变更后旧回答不可追溯时,需在回答中带版本号。

11. 关联文档 ​

文档关联内容
02_人流密度与空间洞察.md §1–§5数据源边界、点位-空间映射、空间类型口径、对话示例、隐私约束
08_移动端AI场景设计.md §7、§10M8 场景来源、管理者时间线、demo 模块定义
公共规范.md前端形态、常驻会话、智能体边界、输出规范、场景 PRD 模板
prd/M7-空间洞察.md同目录写法;空间类型口径与「不跨类型排名」保持一致
01_能源类AI能力-现状与自有发挥.md新风/无人关停的联动阈值归能源篇,M8 只引用
prd/ 中 S2、O1、O9停车归 S2;主动预警归 O1/O9,M8 不重复

注:上述文档与本文保持一致。如有差异,以本文为准,回写更新对应文档。

内部方案材料,请勿外传