原始飞书文档:【AI工单】6月一键工单方案作者:龚菲
【AI工单】6月一键工单方案
| 文档 | 负责产品 | 研发 | 测试 | 说明 | ||
|---|---|---|---|---|---|---|
| [【AI工单】一键工单草稿](https://ufpohmwnol.feishu.cn/wiki/CQfuwqk0JixAAGkatPIcCplhnQe) | 龚菲 | - | - | 26/5/27 | V1.0 | |
| [【AI工单】6月一键工单方案](https://ufpohmwnol.feishu.cn/wiki/NGeewQRoTiyvtzkdzdRc7m4gn5g) | 龚菲 | 周邓、肖凯、胡东旭 | 陈晓梦 | 26/6/1 | V2.0 | |
| [【AI工单】6月资产语义底座](https://ufpohmwnol.feishu.cn/wiki/D2yjwMKMIiWGpdkE8xZcfYt0nue) | 龚菲 | 周邓、肖凯、胡东旭 | 陈晓梦 | 26/6/2 | V1.0 | |
| [【AI工单】7月多模态输入、多轮交互、组件优化、工单防重](https://ufpohmwnol.feishu.cn/wiki/Vg4Lwuxymi7H0PkCG2kca2u5n7e) | 龚菲 | 周邓、肖凯、胡东旭 | 陈晓梦 | 26/6/2 | V1.0 |
一、 项目背景与核心目标
当前移动端业务中台的工单(报修、保洁、IT申请等)表单庞大且层级复杂。一线员工和现场运维人员在手机小屏幕上“找入口 -> 选节点 -> 敲长文本”体验极差,导致工单提交意愿低、现场信息流失严重。
本次工单智能体核心目标:打造一个基于大模型的移动端原生 AI 助手,实现“一句话极速建单”,不涉及处理工单、分析工单。
- 降门槛:用户只需用自然语言(语音/文字)描述诉求,AI 自动完成“意图理解 -> 找准工单 -> 填好表单”的全链路。
- 防幻觉:构建坚固的“后端安检引擎”,确保大模型生成的脏数据绝对无法污染底层业务数据库。
- 低运维:各类底层业务组件自动生成 AI 提示词(Prompt)并且支持运维人员按实际项目情况修改。实现新加一个工单流程,业务人员自己在后台“配一下”AI就能认,不用改AIagent整体流程。
- 通用性:本次一键工单,并非只针对固定几个工单进行创建。由于项目上流程、字段会自由更改配置。因此产品化的AI工单智能体需支持灵活根据配置发起各类工单。由于是面向B端的用户,且前端交互支持手动切换流程类型、字段内容。因此对AI幻觉程度的容忍稍高于C端的科技馆智能助手。
二、业务调研
目前项目统计数据
- 数据说明:
- 以下是目前真实项目中截止2026/5/25、5/26的工单数据,已剔除测试数据和无真实发起数量的工单数据。(也即是说,有些工单内置了,但是没人使用,所以在这也不做统计)
- 环秀湖和相城妇幼由于项目环境无法登录所以不做统计,当代美术馆、独墅湖尚未交付不做统计。
- 数据统计创建工单时可编辑的字段组件。隐藏、只读字段组件均已过滤。
[嵌入电子表格] token: QacDs1V2VhL0mGtodiqcN7mWnib(原始数据在飞书文档中)
业务数据统计分析
概览
手动发起数量
- 剔除系统自动生成的“巡检(20229)”、“保养(61)”工单后,剩余的维修(16093)、运送(70351)、访客预约(16783)、保洁(1047) 绝大多数均为手动发起。
- 这些手动发起的工单,组件极其复杂。以“维修”为例,用户不仅要手打“报修描述(MultilineText)”,还要手动点选“报修位置(Location)”、“报修设备(Asset/Device)”、“专业类型(Select)”、“紧急程度(Select)”。这在移动端现场操作时,是极大的阻力。
核心组件
- 盘点所有表单,最高频出现的组件是:文本/语音描述 (Text/Voice)、空间位置 (Location)、现场图片 (Pictures)、单项选择 (SelectAssemble)。
- 只要我们的 AI 攻克了提取描述、 映射位置、判断选项这三个卡点,就能覆盖 80% 以上的手动建单场景。
多模态(图+文)是刚需:
- 几乎所有的“维修”、“保洁”表单中都包含图片组件。虽然本期 PRD 聚焦自然语言 (NLP) 文本填槽,但数据证明,下期规划“图片 OCR 解析/现场拍照识别”是非常符合业务实际的 P0级需求。
业务重点
P0 级:维修 (Repair) & 保洁 (Cleaning)
- 工单量:维修 (16,000+);保洁 (1,000+)
- 入选理由:最典型的“现象描述型”场景。员工在现场遇到设备坏了或地面脏了,极度渴望通过“一句话+拍个照”解决。
- AI 提效点:AI 可精准从语音中提取故障/保洁说明,并在后台将大白话映射为空间位置,推理出紧急程度。
P1 级:访客预约 (Visit)
- 工单量:巨大 (16,700+)
- 入选理由:属于“信息录入型”场景,包含大量结构化数据(姓名、手机号、车牌号、到访时间、同行人数)。
- AI 提效点:大模型在提取此类标准实体时准确率极高。用户只需复制粘贴一段微信聊天记录文字,或发语音:“明天上午十点,张三来拜访,车牌苏E12345,两个人”,AI 瞬间即可填满 5-6 个表单组件。
P2 级:运送 (Transport)
- 工单量:极高 (70,000+)
- 入选理由:虽然单量最大,但运送单通常由专业调度人员或特定科室发起,操作可能已经高度熟练或模板化。
- AI 提效点:后期可支持指令型语音:“把A区病历送到B区化验室,让李师傅去”,AI 自动提取 =起始/目的点 和后勤人员。起始地点均为部门的数据,因此下次把部门、成员向量知识库化。
优先级低:巡检 (Inspection) & 保养 (Maintenance)
- 理由:数据显示这部分几乎 100% 为“系统自动发起”,由定时任务触发。不属于用户在移动端手动发起建单的场景,暂无需 AI 介入创建节点,因此优先级低。
重点业务-维修
分析数据源太湖工单数据(500条 109条报修2.0;391条报修数据;不含测试数据))体育中心(500条)博览中心(500条)艺术中心(500条)【中环妇幼(禧华)】报修(500条)苏州湾(500条)
用户填写常见行为
分类 示例 [位置]+[对象]+[故障]+[电话] 24病区报修: 20床呼叫铃坏了 8153 [位置]+[对象]+[故障] 门诊大厅的空调温度太高 需要更换[数量][规格]氧气瓶 需要更换一瓶4升矮胖的氧气瓶 [对象]+[故障] 水龙头不出水 组件填写率
| 字段 | 太湖 | 体育中心 | 博览中心 | 艺术中心 | 中环妇幼 | 苏州湾 | 综合填写率 | 说明 |
|---|---|---|---|---|---|---|---|---|
| 问题描述 | 100%* | 100%* | 100%* | 100%* | 100%* | 100%* | =100% | 均为必填项 |
| 位置信息 | 35% | 40% | 45% | 30% | 5% | 100%* | ≈42.5% | 体育中心、博览中心位置填写相对规范 |
| 设备/对象 | 10% | 25% | 20% | 15% | 60% | 100%* | ≈38.3% | 苏州湾主要针对展项,设备名称填写率高;太湖工单常省略 |
| 分类/类型 | 45% | 100%* | 100%* | 100%* | 0% | 100%* | ≈74.1% | 体育/博览/艺术中心有下拉选择,填写率高;妇幼无此字段 |
| 优先级 | 10% | 100%* | 100%* | 100%* | 95% | 100%* | 84.1% | 妇幼和苏州湾大量使用“紧急”“重要”,其他项目较少 |
| 现场图片 | <1% | 5% | 2% | 1% | -图片导出数据失败,无法计算数量 | 100%* | ≈21.8% | 除非必选,用户较少上传图片,多在复杂漏水、破损工单中出现 |
常见报修问题类型与故障对象
- 所有项目报修工单数据总统计
高频问题类型 常见对象 常见故障描述 总占比 空调故障 分体空调、中央空调、新风系统、空调面板、空调遥控器 “空调不制冷”
“空调漏水”
“空调太热/太冷”
“空调出热风”
“空调有异响”≈18% 卫生间/水暖设施 水龙头、台盆、马桶、小便池、花洒、地漏、感应器 “水龙头不出水/漏水/摇晃”
“马桶堵塞/漏水/盖坏”
“小便池不出水”
“地漏堵塞”≈15% 照明/灯具 顶灯、筒灯、地灯、灯带、灯牌、射灯 “灯不亮”
“灯闪烁”
“灯罩脱落”
“灯带脱落”
“地灯塌陷”≈12% 门/窗/锁/闭门器 门、门把手、门锁、闭门器、卷帘门、纱窗 “门把手掉了/坏了”
“门关不上”
“锁打不开”
“闭门器损坏”
“纱窗坏了”≈10% 地面/地胶/盖板/地砖 地胶、地砖、地沟盖板、台阶、地面盖板 “地胶翘起/脱落”
“地砖破损/塌陷”
“盖板下沉/翘起”
“地面拱起”≈10% 电子设备/互动屏幕 闸机、电子屏幕、触摸屏、互动展项 “屏幕黑屏/白屏”
“触摸失灵”
“无响应”
“闸机无法扫码”≈8% 医疗设备/氧气 中心吸氧接头、吸引器、氧气瓶 “接头松动”
“吸引器报警”
“需要更换氧气瓶”≈5% 漏水/渗水 空调管道、屋顶、消防栓、卫生间管道 “管道漏水”
“屋顶渗水”
“消防栓漏水”
“天花板上水”≈5% 墙面/吊顶/装饰 墙皮、天花板、吊顶、石材、踢脚线 “墙皮脱落”
“天花板脱落/漏水”
“吊顶开裂”
“踢脚线脱落”≈5% 呼叫/报警系统 床头呼叫铃、卫生间报警铃、按钮 “呼叫铃坏了/不响”
“卫生间一直报警”
“屏幕不显示”≈3% 家具/设备 床栏、陪护椅、轮椅、抽屉、柜子、输液杆、床帘、挂钩 “床栏坏了”
“陪护椅坏了”
“抽屉打不开”
“输液杆掉了”≈3% 电力/插座 插座、开关、电闸、设备带、拖线板 “插座没电”
“跳闸了”
“设备带没有电”≈3% 其他(指示牌、消火栓玻璃、桌椅、窗帘等) 指示牌、消火栓玻璃、座椅、窗帘、舞台木板 “指示牌脱落”
“消火栓玻璃破裂”
“座椅扶手脱落”
“窗帘掉落”≈3% - 各个项目问题类型详情
项目 高频问题类型 常见对象 常见故障描述 占比 太湖 空调故障 分体空调、中央空调、新风系统、空调面板、空调遥控器 “空调不制冷”
“空调漏水”
“空调太热了 / 太冷了”
“空调出热风”
“空调按钮按不了”
“空调有异响”35% 综合维修(门/窗/锁/家具等) 门、门把手、门锁、窗、纱窗、床栏、陪护椅、轮椅、抽屉、柜子、垃圾桶、输液杆、床帘、挂钩 “门把手掉了 / 坏了”
“门关不上 / 打不开”
“床栏坏了 / 掉了”
“陪护椅坏了”
“抽屉坏了 / 打不开”
“纱窗坏了”
“输液杆坏了 / 挂钩掉了”25% 水电/管道问题 水龙头、台盆、马桶、下水道、水管、水箱、地漏 “水龙头不出水”
“水龙头漏水”
“马桶水箱漏水”
“下水道堵了”
“台盆下塞坏了”
“开水间积水”20% 医疗设备更换 4L氧气瓶(矮胖 / 细长 / 高瘦)
抢救室氧气瓶“需要更换一个4升矮胖的氧气瓶”
“换一个高瘦的4升氧气瓶”
“需要两瓶4升氧气”10% 呼叫/报警系统 床头呼叫铃、卫生间报警铃、屏幕、按钮 “20床呼叫铃坏了”
“卫生间一直报警”
“床头铃屏幕不显示”
“床头铃声音太小”5% 电力/插座/灯 插座、开关、灯、设备带、电闸、拖线板 “插座没电 / 不通电”
“灯不亮 / 一闪一闪”
“设备带没有电”
“跳闸了”5% 体育中心 卫生间/淋浴设施 水龙头、花洒、毛巾架、地漏、马桶、小便池、感应器 “水龙头水控失效”
“花洒头掉落”
“毛巾架脱落”
“地漏堵塞”
“小便池感应器失灵”30% 电子设备/网络/闸机 闸机、电子屏幕、手环机、售票系统、刷卡机、网络设备 “闸机无法扫码”
“屏幕不亮/缺屏”
“网络卡顿/延迟”
“闸机玻璃破裂”
“手环机无法使用”20% 地面/地胶/地砖 地胶、地砖、台阶、地面盖板 “地胶翘起/脱落”
“地胶导致摔伤”
“地面拱起”
“地砖破损”15% 照明/灯具 顶灯、地灯、灯带、灯牌、筒灯 “灯不亮”
“灯闪烁”
“灯牌掉落”
“灯罩脱落”12% 门/窗/锁/闭门器 玻璃门、门锁、闭门器、门把手、卷帘门 “玻璃门关不上”
“门把手松动”
“闭门器脱落”
“锁舌损坏”10% 漏水/渗水 空调管道、屋顶、卫生间管道 “空调机房漏水”
“屋顶漏水”
“管道渗水”8% 其他(窗帘/指示牌/桌椅) 窗帘、指示牌、桌椅、消火栓玻璃 “窗帘掉落”
“指示牌脱落”
“消火栓玻璃破裂”5% 博览中心 卫生间设施 马桶、小便池、台盆、水龙头、感应器、按压器、蹲便器 “马桶堵塞/漏水”
“小便池不出水”
“台盆下水管漏水”
“按压器脱落”
“水龙头不出水”35% 照明/灯具 筒灯、地灯、顶灯、灯带、灯箱、指示灯 “灯不亮”
“灯闪烁”
“地灯塌陷/玻璃碎”
“顶灯灯罩脱落”20% 地面/盖板/地砖 地沟盖板、电缆沟盖板、地砖、台阶 “盖板下沉/翘起”
“地砖破损/塌陷”
“盖板变形”
“地面金属盖板脱落”15% 门/门把手/闭门器 不锈钢门、卷帘门、木门、门把手、闭门器、门吸 “门把手松动/脱落”
“卷帘门无法升降”
“闭门器损坏”
“门锁打不开”12% 漏水/渗水 空调管道、消防栓、屋顶、排水管 “消防栓漏水”
“空调管道漏水”
“屋顶渗水”
“排水管漏水”10% 指示牌/广告牌/装饰 消防指示牌、安全出口指示灯、广告牌、墙面装饰 “指示牌脱落”
“广告牌脱胶”
“墙面瓷砖脱落”
“踢脚线脱落”5% 电梯/货梯 货梯按键、电梯门、电梯面板 “货梯按键失灵”
“电梯门开关故障”
“电梯面板不亮”3% 艺术中心 卫生间设施 马桶、台盆、水龙头、小便斗、洗手液盒、门把手 “马桶盖坏了”
“马桶一直流水”
“水龙头不出水”
“台盆下水管漏水”
“洗手液盒漏液”25% 照明/灯具 顶灯、筒灯、灯带、地灯、射灯、灯箱 “灯不亮”
“灯闪烁”
“灯带脱落”
“射灯不亮”20% 墙面/吊顶/装饰 墙皮、天花板、吊顶、装饰板、石材、踢脚线 “墙皮脱落”
“天花板漏水”
“吊顶开裂/破损”
“石材松动”
“踢脚线脱落”18% 门/门锁/闭门器 玻璃门、木门、防火门、门把手、闭门器、锁芯 “门把手脱落”
“门关不上”
“闭门器损坏”
“门锁打不开”12% 漏水/渗水 空调管道、屋顶、卫生间管道、消防栓 “空调管道漏水”
“屋顶漏水”
“卫生间渗水”10% 电子屏幕/显示设备 电子屏、广告机、显示器、电梯广告机 “屏幕黑屏/白屏”
“显示器无信号”
“需要更新内容”8% 座椅/家具/舞台设施 座椅、化妆台、沙发、桌子、舞台地板 “座椅扶手脱落”
“椅子松动”
“舞台木板破损”5% 空调/暖通 空调、风机盘管、通风口 “空调漏水”
“空调不制冷”
“风机盘管异响”2% 苏州湾 互动屏幕/触控装置 感知苏州、时序之羽、音画互译、心流万象、竹简丛林、未来园艺师、AR互动、身舞跃动 “黑屏”
“无响应”
“触摸失灵”
“画面卡顿”
“无法启动”45% 投影/光影装置 时空视窗、虫洞旅程、联觉画廊、数字画廊 “投影不显示”
“画面偏移”
“亮度不足”
“颜色异常”15% 机械互动装置 脑波仪、机器狗、机械鲲、智能绘画家、合成制片人 “脑波仪不工作”
“机器狗不动”
“机械臂卡住”
“装置异响”15% 展陈设施/标识 立牌、踢脚线、安全指示灯、矿棉板、踢脚线 “立牌倾斜”
“踢脚线脱落”
“指示灯不亮”
“矿棉板破损”10% 公共服务设施 卫生间(三楼南边女厕)、咖啡馆、电梯、货梯 “卫生间灯不亮”
“咖啡馆水龙头坏”
“货梯门故障”10% 电力/照明 应急照明集中电源、走廊屏幕、顶灯 “应急电源故障”
“走廊屏幕黑屏”
“顶灯不亮”5% 中环妇幼 医疗设备/气体 中心吸氧接头、吸引器、床旁设备带 “中心吸氧接头松动”
“吸引下限报警”
“接头漏气”30% 水暖/卫浴 水龙头、马桶、台盆 “水龙头摇晃”
“水龙头漏水”
“马桶堵塞”20% 建筑/装修 天花板、窗帘、木质鞋柜、床 “天花板脱落”
“窗帘掉落”
“木质鞋柜破损”
“床栏坏”25% 呼叫/报警 床头呼叫铃、卫生间报警铃 “呼叫铃不响”
“报警铃误报”10% 电力/照明 灯、插座、开关 “灯不亮”
“插座没电”10% 空调/暖通 空调、新风系统 “空调漏水”
“空调不制冷”5% 统计分析:
- 组件中,报修对象大都为填写项,少部分为资产的单选项,无物联设备项。因此如果需要rag向量知识库,需构建资产向量知识库。物联rag知识库的优先级极低。向量知识库的优先级为:空间向量知识库>资产向量知识库>部门向量知识库>>人员向量知识库>物设备向量知识库。
- 常见报修对象很多不会被物联设备接入,也很少会被资产纳入,比如什么天花板、门窗。需要运维人员根据常见的报修对象,手动创建一些资产,并且把一类物品作为一个资产,比如说难以给每个门都建一个资产。
- 报修描述信息密度极高,几乎所有其他字段的信息都隐含其中。如果不是必填项,用户懒得填写其它字段,报修设备、报修位置、专业类型 等字段填写率极低(<15%),哪怕报修设备是填写组件,填的人都很少。图片上传如果不是必填项,上传率也很低。
- 空调故障和水暖/卫生间设施是全部项目中最常见的两类问题,
- 照明灯具、门锁门窗、地面地胶、电子设备四类问题紧随其后,合计占比约40%。
- 不同类型项目差异明显:医院类以空调、医疗设备、氧气更换为主;体育场馆以卫生间、电子闸机、地面为主;会展以卫生间、照明、盖板为主;艺术中心以卫生间、墙面吊顶、照明为主;科技馆以互动屏幕、投影、机械装置为主。
重点业务-保洁
分析数据源太湖保洁工单数据(500条)
用户填写常见行为
- 典型结构:[病区/楼号] + [床号/房间] + [需要打扫/拆床/拖地]
- 示例:“18病区31床32床需要拆床”、“2113卫生间需要拖一下”
用户填写字段率
字段名 填写率 说明 保洁说明 100% 必填字段,每条工单都有文字描述,内容长度从几个字到一两句话不等 保洁位置 ≈30% 可选字段,约三分之一的工单填写了具体位置(如“7号楼 / 9F”),其余为空 典型工单案例
| 编号 | 保洁说明 | 保洁位置 | 类型 | 典型性 |
|---|---|---|---|---|
| BIZ202605141629409A4FAG | “18病区31床32床需要拆床 电话8137” | 7号楼 / 7F | 拆床清洁 | 高频模式 |
| BIZ20260514225530M7EAIS | “2113卫生间需要拖一下” | 7号楼 / 10F | 卫生间清洁 | 高频模式 |
| BIZ20260509095658L1ZTX4 | “6号楼40号客梯里有血,电话:8880” | 6号楼 / 1F | 特殊污渍 | 紧急+有电话 |
| BIZ202605051954491S53EV | “7号楼25号客梯有人吐了需要打扫 6833” | 7号楼 / 1F | 特殊污渍 | 紧急+有电话 |
| BIZ20260511171134BWFC0W | “20病区处置室需要更换黄色垃圾袋” | 7号楼 / 9F | 垃圾清理 | 物资需求 |
| BIZ20260515075907LN5LRX | “大肠癌诊治中心冰箱旁边需要打扫,电话:8684” | 门诊楼 / 3F | 零星清洁 | 指定位置+电话 |
| BIZ20260527112916TJ2IDR | “门诊药房门口有人吐了 需要拖地” | 门诊楼 / 1F | 特殊污渍 | 紧急 |
| BIZ202605271159135D04DA | “5病区6床要消毒,电话:8010” | 5号楼 / 10F | 消毒 | 特殊保洁 |
| BIZ20260526183256DB34XH | “19病区32床需要打扫。” | 7号楼 / 8F | 房间清洁 | 简略 |
三、 核心用户场景
用户交互概览流程图

场景 1:快速一键工单
- 动作:员工老王路过三楼男厕所,发现水管爆了。他点开 App 首页悬浮球,按住语音键说:“三楼男厕所水管爆了,到处都是水,赶紧叫人来修,十万火急!”
- 系统响应:AI 准确识别其为【机电报修单】,自动提取出“三楼男厕”去rag空间向量知识库,匹配底层空间 ID,提取出“紧急程度:特急”,提取报修描述,生成一张草稿卡片。老王瞄一眼,如果有提取错误或为空的字段,老王可以在组件上手动更改或添加,没错就点击【提交工单】,创建工单到流程引擎。暂不支持AI来做提交工单这一最后操作,需人手动点击提交工单才可提交。如果是发起人、发起时间等系统自动填充,不需要给AI,而是系统自动填充。
场景 2:多轮交互与局部修改
- 动作:老王对生成的草稿说:“不对,位置改成二楼会议室,设备选一下那个格力精密空调。”
- 系统响应:AI 结合历史记忆,将旧的草稿卡片“半透明置灰”(作为历史快照锁定),并在下方吐出一张按最新要求修改好的全新卡片,确认后提交。AI需至少支持三轮内对话的交互修改。如果AI中途回答了其它问题,那就的工单卡片不会自动置灰,是需要创建新的工单卡片,旧的卡片才置灰。

场景 3:实施人员的配置AI工单,提高AI建单准确率
- 动作:业务部门今天刚在流程引擎里上架了一个新的流程工单。实施人员打开【工单 AI 配置】页面,便捷更改对字段的说明,从而相当于调整了AI的prompt提示词,针对性增强AI对字段的理解能力。
- 系统响应:系统自动将新表单解析为 AI 可读的结构。实施人员只需根据需要,给字段更改默认提示说明(如:“提取来访人姓名”),该工单便具备了能被AI处理的能力。
四、整体系统架构
架构概述
为了实现上述场景,我们摒弃了“把大模型当全能神”的危险做法,采用 “后端清洗+ AI 提取 + 后端实体对齐+后端安检” 的架构:
Dify Agent
- 拦截闲聊与未开放功能。结合用户权限,判断用户是要报修、保洁还是投诉,精准锁定目标工单 ID。
- 结合用户的历史输入和后端给的工单清洗后的组件相关信息,进行词槽填取,提取规则按照组件里关于组件的描述进行。并把提取后的结果返回给后端进行实体对齐与检查。
后端动态降维清洗
- 痛点:底层表单包含海量配置(只读、隐藏、校验正则、API 地址),直接喂给 AI 会导致 Token 爆炸。
- 解法:后端代码根据配置与默认规则自动过滤无用字段,将复杂的 42 种组件,强制归类降维为 6 种 AI 题型(填空题、单选题、多选题、提取原文题等),并自动拼接好指导提示词(Instruction),生成极简试卷发给 AI。
后端实体对齐
- RAG 向量映射:AI 提取了“三楼男厕”,后端带着这句话去【空间向量库】搜索,命中后将官方真实 ID(如 loc_8891)悄悄塞入前端。
- 动态接口模糊查询:AI 提取了人名“张三”,后端去调用第三方接口核实此人是否存在。AI 只做语言提取,所有真实 ID 转换全由中台完成。
后端安检
- 防止选项捏造:AI 选的选项不在下拉框里?AI填写的内容不在字符要求范围内?不符则后端直接强制清空拦截。
整体架构概览流程图

局部流程图-前端卡片交互

局部流程图-工单AI配置页面

局部流程图-工单列表匹配

局部流程图-后端脱水清洗

局部流程图-后端实体对齐与安检
五、 研发功能点拆解
- 为了将方案落地,各团队需认领以下核心模块:
前端研发
- 全局悬浮球底座:支持物理拖拽、状态记忆;支持文字/语音切换、长按录音波形动效。
- 意图前置胶囊:输入框上方的分类标签(如:工单创建),选中后自动为输入文本拼接前缀。
- 高保真动态草稿卡片:基于 JSON 动态渲染表单;支持红框必填实时校验拦截;支持旧卡片“快照化置灰失效”;支持提交工单。
- 工单 AI 配置:支持配置流程和流程内组件的AI启禁用、流程和流程内组件的说明字段编辑。
| 序号 | 开发端 | 功能类型 | 功能点 | 开发排期 | 当前是否完成 |
|---|---|---|---|---|---|
| 1 | 移动端 | 悬浮球 | 支持物理拖拽、屏幕边缘互斥 | 6月 | |
| 2 | 实现冷热启动的位置状态记忆 | 6月 | |||
| 3 | 交互内页 | 意图前置选择器 (含隐式传参拼接) | 6月 | ||
| 5 | 文本输入 (监听变化切换发送按钮) | 6月 | |||
| 6 | 语音输入ASR (长按录音、上滑取消动效) | 6月改7月 | |||
| 聊天瀑布流渲染 (用户气泡、AI 气泡、加载状态) | 6月 | ||||
| 7 | 对话与思考打断终止逻辑 | 6月 | √ | ||
| 8 | 图片上传-自动化适配图片组件 | 7月 | |||
| 9 | 录音上传-自动化适配音频组件 | 7月 | |||
| 10 | 文字转语音tts | 7月 | |||
| 11 | 思考安抚话术 | 7月 | √ | ||
| 12 | 工单卡片 | 工单切换流程选择 | 6月 | ||
| 13 | 渲染42个工单组件 | 6月 | |||
| 14 | 组件必填性校验 | 6月 | |||
| 15 | 废弃卡片逻辑 | 6月 | |||
| 16 | 提交流程工单API 对接与 Loading 弹窗 | 6月 | |||
| 17 | 提交成功后卡片固化,提供跳转查看工单详情链路 | 6月 | |||
| 18 | 报修单特供:故障设备 AI 建议 (知识库关联展示) | 7月 | |||
| 19 | Web后台配置 | 工单 AI 配置 | 流程搜索框 | 6月 | √ |
| 20 | 流程AI启禁用 | 6月 | √ | ||
| 21 | 流程工单业务描述编辑 | 6月 | √ | ||
| 22 | 流程组件AI启禁用 | 6月 | √ | ||
| 23 | 流程组件描述编辑 | 6月 | √ | ||
| 24 | 全局配置取消、保存 | 6月 | √ | ||
| 25 | 向量知识库 | 资产向量知识库配置页面 | 6月 | √ |
后端研发
- AI 词槽增强配置后台:提供一个简单的增删改查后台,供实施人员配置各个流程是否开启 AI、以及各个字段的自定义提示词。
- Schema 降维清洗引擎:编写算法,把复杂的底层组件过滤、拍平、打上标签(select_single, entity_multi 等)。
- 实体对齐引擎:对接 RAG 向量知识库(空间、
物联设备、资产设备);对接业务系统的第三方 URL(做人名、部门的模糊搜索与 ID 回填)。
| 开发端 | 功能类型 | 功能点 | 开发排期 | 当前是否完成 |
|---|---|---|---|---|
| 1 | 工单AI配置后台 | 流程引擎数据同步 | 6月 | √ |
| 2 | 流程列表检索 | 6月 | √ | |
| 3 | 流程级配置(AI启停开关、业务描述编辑与存储,含系统默认描述注入) | 6月 | √ | |
| 4 | 字段级配置(AI启停开关、自定义提取描述编辑,含系统默认描述注入) | 6月 | √ | |
| 5 | 全局保存/取消配置接口 | 6月 | √ | |
| 6 | 意图识别与工单匹配 | 获取用户有权发起的工单列表,结合AI配置筛选候选工单集 | 6月转7、8月 | |
| 7 | 调用大模型进行工单匹配(含前置意图标签路由) | 6月 | √ | |
| 8 | 降维清洗 | 读取原始工单Schema + AI配置,过滤禁用字段 | 6月 | √ |
| 9 | 组件归类打标签,根据组件标签类型,组装将给AI的数据结构 | 6月 | √ | |
| 10 | 大模型词槽填充 | 调用大模型API提取词槽,返回JSON格式 | 6月 | √ |
| 11 | 实体对齐与安检 | 基础输入型及静态选项型字段的合法性校验(范围截断、选项匹配) | 6月 | √ |
| 12 | 对接RAG空间向量库进行相似度检索与ID回填 | 6月 | √ | |
| 13 | 对接RAG资产向量库进行相似度检索与ID回填 | 6月 | ||
| 16 | 对接第三方URL接口进行模糊查询与ID回填 | 7月 | ||
| 17 | 合并安检后结果到完整工单数据,输出给前端渲染 | 6月 | ||
| 18 | 工单提交 | 接收完整工单数据,调用流程引擎创建接口及失败重试 | 6月 | |
| 19 | AI去重 | AI智能去重 | 7月 | |
| 20 | 多模态输入 | 图片上传-自动化适配图片组件 | 7月 | |
| 21 | 录音上传-自动化适配音频组件 | 7月 | ||
| 22 | 图片OCR | 7月 | ||
| 23 | 运维知识库辅助 | 报修工单故障原因推测与维修建议(知识库检索) | 7月 | |
| 24 | 工单查询与统计 | 自然语言查询工单(ChatBI) | 7月 |
六、功能prd详细说明
效果demo
[视频附件] 20260508150709_rec_.mp4(原始文件保留在飞书文档中)
移动端交互
悬浮球
支持物理拖拽、屏幕边缘互斥:
在小程序的首页常驻一个AI助手悬浮球,支持支持物理拖拽、边界排斥、关闭。
悬浮球仅在首页出现,其他深层业务页面不展示。
支持全屏幕拖拽,贴边排斥,让图标始终不会被遮挡。效果可以参考如下豆包
[视频附件] 20260508192152_rec_.mp4(原始文件保留在飞书文档中)
冷热启动的位置状态记忆
- 本次打开过程中,切换页面不会重置刷新位置或开关状态
- 用户重新打开APP时,重置刷新悬浮球位置或开关状态
内页样式
点击悬浮球,由下至上弹出一个全屏的“AI对话面板”。中间显示AI的头像,下面显示打招呼的语句。支持点击返回页面关闭页面。
意图前置选择器:输入框上方提供横向滑动的胶囊按钮组。
组件单选,可为空。点击则选中,再次点击则取消选中。默认为空,每次进入ai内页都会恢复成默认为空的状态,不需要记住上次的选项。
当用户选中某个选项(如 工单创建),并在输入框输入“空调坏了”点击发送时。
- 前端 UI 显示:用户气泡内仅显示文字“空调坏了”(保持界面清爽)。
- 实际 API 传参:前端在发送给后端的数据中,自动强行将文本拼接为:【工单创建】空调坏了。以增加AI意图识别识别的准确度。
目前前端内置三个滑块,分别为工单创建、会议预定、设备控制。传给AI时就在消息前面固定先加对应的【工单创建】、【会议预定】、【设备控制】
- 文本输入:默认展现文本输入框。只要输入框内有任何字符,最右侧的麦克风图标立即无缝变为发送图标。
语音输入与ASR
- 语音模式切换:点击最右侧麦克风,文本框隐藏,变为“请按住说话”按钮。
- 长按该按钮触发系统录音,屏幕中央弹出半透明的高斯模糊遮罩,展示波形动画。
- 语音录入中:用户按住并向屏幕上方滑动超过一定位置,遮罩与提醒文字变色。此时松手,直接丢弃录音文件,不发送请求。该部分的交互,前端请参考科技馆移动端,包括如果ASR没识别到语音,需要弹出的提示弹窗。
- ASR模型,走本地化部署,后端提供API。(研发评测后给出)
图片上传:相机上传按钮先留个icon口子,五月开发暂不涉及,六月开发再详细设计图片ocr与图片音频相关的字段。
AI思考状态:AI思考时,显示动态思考icon即可。不需要像科技馆C端ai一样思考安抚等待话术。
[视频附件] 20260509104204_rec_.mp4(原始文件保留在飞书文档中)
- 对话与思考打断终止逻辑:AI思考时用户如果再次输入,则旧有的思考被打断终止,气泡前端固定显示:“抱歉, 该问题的思考已中止。如果需要重新开始或补充信息,随时可以继续提问哦” 并且直接思考并回答最新的回答。如果AI是正在输出中时被打断,那流式输出直接中断,AI开始思考并回复新问题。交互可参考科技馆移动端.

工单卡片
渲染42个工单组件
- 根据 AI 返回的数组,前端按序渲染组件(单行文本、多行文本区、下拉框等)。前端根据后端下发的 defaultPerm (权限标) 进行差异化渲染,创建流程隐藏的组件不需要渲染。只读、编辑、必填组件均需要渲染。组件的交互逻辑复用目前流程引擎最新工单。组件与组件之间用存在一定透明度的横线划分,不需要留灰色分隔块。
组件必填性校验
- 如果缺失必填,默认的提示词则用红色标注。
实时校验卡片必填项,只要卡片内任意一个必填项是空的,底部的【提交工单】按钮立即变成灰色,且文字变为【缺失必填字段】。用户补充完最后一个必填项时,按钮变为主题色激活。- 【6/18】与研发讨论,去掉缺失必填字段的按钮,只保留作废和提交工单按钮。点击提交工单按钮后,再进行缺失的校验。
工单切换流程选择
如果用户点击卡片顶部的工单类型那个区域,则卡片出现灰色蒙版,弹出选择流程的弹窗。**【6/3 新增】**注意,卡片工单名称前端请做字数校验,如果流程名称太长了,用...省略号显示。多少长度省略见UI或前端根据效果自由裁定。
单选,必选,默认选中当前工单卡片的流程。支持上下滑动显示全流程。
流程的选项为该登录用户可以创建的工单流程。本次默认所有用户可以创建的流程,该用户都可通过AI来创建。
用户点击叉、或点击出弹窗外的其它任何区域,则弹窗默认关闭。
点击确定则选择选中的流程作为工单模版。
- 如果当前选择的流程就已经是当前模版的类型,则前端不需要把该信息传递给后端,卡片不会刷新更改。
- 如果当前选择的流程是非当前模版,之前也未被选过。则下拉框立即置灰,卡片出现加载中的动态icon。前端将之前的对话 + 当前旧卡片的数据 + 新目标工单的类型发给后端,请求 AI 重新提取映射。
- 如果当前选择的流程在本次与AI交流时,曾经创建过,则切换流程类型就直接显示之前的工单草稿。因此需要暂时存储记录下工单草稿的信息。
原地重绘:拿到新数据后,直接覆盖当前工单卡片,不是在聊天流最下方生成一个新卡片。
废弃卡片
唯一存活原则:聊天流中,永远只能有一张可编辑可提交的工单卡片。
置灰触发时机:
用户通过发送新的一句话,让 AI 修改了草稿,AI 生成了一张新卡片。【下期再做】- 用户主动点击了旧卡片左下角的 【作废】 按钮。
置灰效果:
【6/3 更改】作废后,卡片默认收起,下图右侧样式。卡片名称更改成历史版本 再显示已作废的图标。点击展开,则打开废弃卡片详情。展开的文本更改为收起两百万左右手个字,点击则回归收起状态。- **【6/18 更改】**收起与展开暂时不做,置灰只是蒙一层蒙版、去掉作废和提交按钮、打一个已作废的标签
- 卡片置灰不可编辑,用详情的样式呈现。不再有作废或提交的按钮。

提交工单卡片
- 用户点击【确认提交】,则工单弹出正在提交中的提示弹窗,如果提交失败或者超过10s还没有返回结果,则弹出失败提醒弹窗。提示弹窗显示3s淡出,笼罩消失,工单可以重新编辑提交。
- 提交成功后,原来的工单卡片换成提交成功的组件,右下角出现查看工单的跳转链接,点击则将跳转到对应的这个工单详情页面。
web与后端
前文概要
- 目前工单有两种,一种是流程引擎工单(流程引擎自由配置更改),一种是业务工单(比如物资出入库、资产盘点之类工单,表单前端固定写死,流程节点可自由更改)。本次针对流程引擎工单进行方案设计,暂不涉及业务工单。
- 当表单组件高度动态化,且大量依赖第三方 API(URL 获取数据)时,大模型不可能把成千上万的第三方数据全部读入上下文,或让甲方为每个细碎的下拉框都去建向量数据库,这个运维成本是毁灭性的。所以部分核心的实体库,将建立向量知识库,其他的将使用模糊检索进行匹配。
| 选择组件特征分类 | 识别依据 | AI 处理策略 | 后端处理策略 |
|---|---|---|---|
| 静态枚举型 | isHub: true 且存在完整的 options 数组。 | 传入 options,让 AI 做“严格单选/多选题”。 | 无需补全,AI 选什么后端直接存什么。需核查确保AI的选项是可选的。 |
| 核心实体型 (需要建向量库) | formOnlyType 为 Location (空间), Asset (资产), Device (设备) 等系统核心高频实体。 | 屏蔽 URL。让 AI 仅根据原话做“文本截取题”(原封不动提取描述)。 | 后端拿 AI 截取的中文,去核心向量库 (RAG) 反查底层 ID并回填。 |
| URL且非核心实体型 | isHub不存在且存在URL的外部选项 或用户、部门组件组件等等,如下图整理所示。 | 屏蔽 URL。让 AI 仅根据原话做“文本截取题”(原封不动提取描述)。 | 后端拿 AI 截取的中文,直接带着认证头请求该 URL 接口做模糊搜索 (Like/Search),取 Top-1 匹配项回填 ID。 |
- 下面是目前比较复杂的选择类组件,以及划分的组件类型
| 组件 | 组件formOnlyType | 组件类型 | 本期做不做 |
|---|---|---|---|
| 空间位置 | Location | 核心实体型,选取会议预定的空间向量知识库 | √ |
| 资产名称 | Asset | 核心实体型,需新建向量知识库 同步资产库 | √ |
| 级联单选 | Cascade | isHub==true 且 dataFrom == 2 则是动态URL型 反之则是静态枚举型,会给出options | √ |
| 级联多选 | MultiCascade | isHub==true 且 dataFrom == 2 则是动态URL型 反之则是静态枚举型,会给出options | √ |
| 单项选择 | SelectAssemble | isHub==true 且 dataFrom == 2 则是动态URL型 反之则是静态枚举型,会给出options | √ |
| 多项选择 | MultiSelectAssemble | isHub==true 且 dataFrom == 2 则是动态URL型 反之则是静态枚举型,会给出options | √ |
| 单用户 | SingleUser | 固定URL 后期考虑构建向量知识库 | 下期做 |
| 多用户 | MultiUser | 固定URL 后期考虑构建向量知识库 | 下期做 |
| 单部门 | SingleDepartment | 固定URL 后期考虑构建向量知识库 | 下期做 |
| 多部门 | MultiDepartment | 固定URL 后期考虑构建向量知识库 | 下期做 |
| 备品备件 | SpareParts | 固定URL 数据源物资 | 下期做 |
| 打印耗材 | PrintingConsumables | 固定URL 数据源物资 | 下期做 |
| 巡回运送点 | TransportRoutes | URL | 下期做 |
| 巡检点 | InspectionObjects | URL | 下期做 |
| 巡更点 | Patrolpoint | URL | 下期做 |
| 保养点 | MaintenanceObjects | URL | 下期做 |
| 保洁位置 | CleaningObjects | URL | 下期做 |
| 后勤人员 | LogisticsPersonnel | URL | 下期做 |
| 展品巡检 | ExhibitInspectionObjects | URL | 下期做 |
| 展品保养 | ExhibitMaintenanceObjects | URL | 下期做 |
| 设备名称 | Device | 选取设备控制的向量知识库 | 下期做 |
总流程、时序图
具体逻辑
工单AI配置页面
经过第一次评审讨论并结合孙老师的建议。考虑到AI幻觉问题,和AI难以理解字段的问题,本方案新增对字段的解释说明。在此简单归为以下逻辑。
- 增加一个针对流程引擎创建阶段可发起组件的配置页面【工单AI配置页面】(6/1新增)页面标识符WorkOrderAIConfig,嵌在空间智能、设备控制等页面所在的那个应用里。该页面支持对每个流程工单、以及每个工单中的每个组件进行解释说明的填写以及开关是否AI的配置。
- 配置页将给每个类型(内置类型)的工单、以及每个类型的工单组件设置默认的解释说明字段,可编辑更改。解释说明字段将会被引用到【可发起工单列表】中的表单说明字段,以及clean_scheme中的instruction字段中。
- 新增一个勾选加入流程的设计【5/27 新增】

引入流程工单

从流程引擎映入流程工单
- 点击引入流程的按钮,弹出引入流程工单的弹窗。数据来源为流程引擎中的流程数据。注意,业务流程不显示、比如物资盘点之类的,只显示表单流程为流程引擎表单的。不限制是否需要在工作台显示,不限制该流程目前是否被启用禁用。已经被添加到工单AI配置页面里的工单,不再显示在这个弹窗。

- 查询:支持按照业务类型、流程名称、流程标识符查询流程数据。
- 勾选:多选,默认为空,支持多选勾选想要引用的流程,勾选后再点击确定引入,则流程会被添加到工单AI配置列表。
- 关闭弹窗:点击取消或者右上角的x图标,则清空勾选,关闭弹窗。下次再打开弹窗,还是全新的弹窗。
- 清空所选组件:显示满足筛选条件的数量,当前已经选中的数量,清空所选的操作按钮。
- 显示字段:工单名称(对应流程引擎中流程名称)、工单标识符(对应流程引擎中流程标识符)、业务类型(对应流程引擎中的业务类型)、流程状态(对应流程引擎中的激活、停用状态)
- 流程引擎自动同步,如果是已经被添加进来的组件,每次流程引擎编辑、删除该流程,均同步更改工单数据到工单AI配置页面。如果流程引擎中该工单被删除,那这个工单AI配置页面这个对应的工单就也被删除。
- 【26/6/26 补充】后端要实现这个效果,就需要一直同步流程引擎的主版本,因为每次编辑更改,都会创建一个新的版本。如果每次只固定引入某个版本的工单,没办法实现流程引擎那的编辑更改同步到工单ai配置页面的效果。并且不该是最新版本,因为流程引擎那可以切换版本,只有主版本是可以发起的。综上,同步主版本的工单流程。
- 【26/6/1新增】效果提示:点击确定引入的按钮后,显示提示弹窗“已成功引入 X 条工单数据,失败 Y 条”
流程工单列表

在左侧显示目前已同步接入的流程的流程类型。比如如果有维修的工单,那左边显示全部、维修。如果有维修、保洁类工单,那左侧显示全部、维修、保洁。
流程搜索框
- 流程名称:文本输入,非必填,默认为空,支持检索流程的名称
- 流程标识符:文本输入,非必填,默认为空,支持检索流程的标识符(注意不是ID)
- 流程状态(激活、挂起):单选,必选,默认选全部。选型有全部、激活、挂起。对应流程引擎里流程的激活和挂起。
- AI状态:单选,必选,默认选全部。选型有全部、启用、禁用。对应列表里的AI状态。
列表字段
流程类型:对应流程引擎中流程的业务类型
流程名称:对应流程引擎中流程的名称
流程标识符:对应流程引擎中流程的流程标识符。注意不是流程id
流程状态:对应流程引擎中流程的流程启禁用状态,字段名为激活或挂起
【6/15 新增】工单防重检测:详情见7月的prd
AI状态:AI的状态。新引入流程后,默认为启用。启用前面显示绿色小圆圈,禁用显示灰色小圆圈。
【6/15 新增】同步异常:
- 每次系统自动定时同步或者手动点击数据同步。
- 如果同步成功,则自动按照最新的数据,去更改工单信息,列表里的同步异常字段为空。
- 如果同步失败,则同步异常字段需要显示同步失败的原因。该字段每次仅记录最新的一条数据。
- 如果失败的报错是该流程在流程引擎已被删除,则AI状态自动禁用。其他的报错,不要把AI状态自动禁用了。【这个禁用做不做都行】
操作列:
- 配置:点击配置按钮,弹出该工单AI配置的右抽屉弹窗
- 重新同步:点击重新同步,则查询流程引擎中的最新数据,对该工单进行同步,同步成功弹出提示弹窗:同步更新成功。失败则~~显示:同步更新失败,请检查服务。~~显示报错的原因
- 启禁用:AI状态为启用的流程,该按钮为红色禁用。点击则把AI状态的启用变成禁用。如果AI状态已经为禁用的,该按钮为绿色启用击则把AI状态变成启用。单条或批量启禁用,提示文本如下所示。

- 删除:点击则删除工单。
批量操作按钮:包含批量删除、批量启用、批量禁用。
删除流程工单
- 单独删除:点击操作列表里的删除的按钮,弹出删除的提示弹窗
- 提示文本:**“**您正在移除流程 {工单名称}({工单标识符})。此操作将导致AI无法创建该工单,现有关于该工单的指令配置也将清空不再保存。”
- 批量删除:勾选列表前面的多选框,再与批量操作里的批量删除按钮配合使用,则弹出批量删除的提示弹窗
- 提示文本:“您正在批量移除 {勾选数量} 条流程此操作将导致AI无法创建这些工单,现有关于这些工单的指令配置也将清空不再保存。”
- 点击确认移除,则移除工单AI配置中的该流程,AI也无法发起该工单。点击取消则关闭弹窗不删除。
配置AI工单
- 点击配置按钮,弹出该工单AI配置的右抽屉弹窗如下图所示。

工单配置
- 显示流程工单的名称(注意不是类型,是名称)、是否允许AI智能发起、工单业务描述。
- 是否允许AI智能发起:和外面那个AI状态保持一致。如果在列表里这个是开的,那这个就是开的。如果这个是关的,那这个就是关掉。在这个配置页面后需要点保存,才会真的启用生效(通过详情页启禁用后保存的,操作后也显示那个启禁用成功提示弹窗)。开启的流程and允许被该用户发起的流程工单,将进入【可发起工单列表】。关闭的流程不会进入【可发起工单列表】。
- 工单业务描述,支持对该工单进行描述,辅助AI判断用户想要发起什么工单最合适。该字段从流程引擎同步工单描述字段。支持编辑更改。
字段组件配置
- 显示该流程工单清洗过滤过后的组件,组件允许AI发起的按钮默认均为开,开启过后的字段组件,才会喂给AI允许AI去提取词槽。
- 显示字段组件的名称、【6.4 编辑更改】显示组件TypeName 即组件在流程引擎中的名称即可
组件的唯一标识符(formOnlyType)、组件的TagType(后端按照本文档规则,单独写的类别字段)、组件是选填还是必填的样式。 - 字段组件的AI词槽提取指令:默认为空,暂不设置默认选项,文本输入限制1000字。
保存:点击保存则保存该配置,点击取消,则不保存本轮配置
判断可发起工单

- 权限判断,根据流程配置中该用户是否可发起该流程、AI配置中该流程是否被AI启用,判断该用户有权限创建的工单列表,输出【可发起工单列表】。该列表至少需要包含如下字段:表单名称、表单说明、业务类型、流程ID。
- AI结合可发起工单列表判断该用户想创建什么类型工单。本次不需要额外判断是不是列表为空、是不是有这个工单只是用户没权限、只要【可发起工单列表】没有可匹配中的工单,AI就文本解释类似说明:抱歉,您暂不能创建类该类工单哦。如有需要,请联系管理员进行升级。不需要渲染卡片组件。
- 本期暂不需要意图澄清
场景一:用户的【可发起工单列表】有 [保洁工单, 运送工单]
用户:我的电脑死机了,来修一下电脑。
Agent模型发现提供的列表里没有 IT 报修
AI: 抱歉,我未能找到与‘电脑修理’相关的工单表单,或者您当前没有该工单的发起权限。您可以换个说法,或手动前往大厅查找。
场景二:用户的【可发起工单列表】有 [机电报修, 弱电报修, 资产报修]
用户:东西坏了
Agent模型发现提供的列表里有多个符合可能的报修工单,默认选择了一个进行字段清洗-提取词槽-卡片渲染。因为前端卡片上提供了 [切换工单类型] 的下拉框,即使系统猜错了,只要能渲染出一张表单,用户自己也可以在卡片头部进行纠正切换。可能选错这比什么都没有让用户干等要好一万倍。[视频附件] 20260514160338_rec_.mp4(原始文件保留在飞书文档中)
字段清洗

数据源:由于我们只需要创建节点的数据,并且创建节点的编辑、可读、隐藏、必填在表单数据直接显示了,所以我们只需要处理表单数据即可,流程数据不需要给AI处理。
第一步:字段过滤
- defaultPerm为H\R的字段过滤、formOnlyType为图片、文件、手写签名、语音录入、分栏布局、明细、关联流程、说明、标题的组件过滤。在工单流程AI配置页面禁用的字段也不传给AI
- 相当于只需要从工单AI配置列表中取启用的字段数据。
第二步:组件精简
- 执行逻辑:前后端沟通,给AI传数据时省略一些不需要它理解,不需要它编辑的字段。以此确保AItoken消耗可控、AI的输出回复不会被干扰。
- 比如说如下图,右边AI理解起来会简单很多(只是举个例子,可能字段不对缺了。)
前后端需要分基础输入型、选项型、url型这三类,规范各个组件给AI的规范。
1.单行文本、多行文本、富文本、数字、金额、评分、日期、日期时间、时间组件 需要知道id、formOnlyType、组件名称、组件在AI工单配置里的提示词
2.单项选择、级联单选(且是手动添加静态选项的)、多项选择、级联多选(且是手动添加静态选项的)、单用户、单部门、空间位置、设备名称、资产名称、后勤人员(配置了单用户)、单项选择(配置了url)、级联单选(配置了url)、多用户、多部门、巡回运送点、巡检点、巡更点、保养点、保洁位置、展品巡检、展品保养、备品备件、打印耗材、后勤人员(配置了多用户)、 多项选择(配置了url)、级联多选(配置了url)需要知道id、formOnlyType、组件名称、组件在AI工单配置里的提示词、选项来源(是静态的,还是url,如果是url是哪个)、静态枚举值(如果有的话)、这个选项是单选还是多选
| 类型 | TagType | 精简规范 |
|---|---|---|
| 基础输入型 | text:单行文本、多行文本、富文本 | id、formOnlyType、TagType、name、instruction、minLength、maxLength、content |
| number:数字、金额、评分 | ||
| date:日期、日期时间、时间 | ||
| 静态选项型 | select_single:单项选择、级联单选(且是手动添加静态选项的) | id、formOnlyType、name、TagType、instruction、Options、selected_option |
| select_multi: 多项选择、级联多选(且是手动添加静态选项的) | ||
| 动态实体提取型 | entity_single:单用户、单部门、空间位置、设备名称、资产名称、后勤人员(配置了单用户)、单项选择(配置了url)、级联单选(配置了url) | id、formOnlyType、name、TagType、instruction、enty_extract |
| entity_multi:多用户、多部门、巡回运送点、巡检点、巡更点、保养点、保洁位置、展品巡检、展品保养、备品备件、打印耗材、后勤人员(配置了多用户)、 多项选择(配置了url)、级联多选(配置了url) |
词槽填充校验

AI语义理解与词槽填充
- 遇到 基础输入型,可进行语义提炼总结。
- 遇到 静态选项型,必须且只能从给定的 options 数组中挑选一模一样的字眼输出。
- 遇到 动态实体提取型,提取原话短语实体名称到enty_extract字段。
- 尽量可以可以填的话填值,如果确定无法提取或根据一般情况填值,则给值missing标记。
Json判断
- 判断 Json格式是否合规,不合规则将clean_scheme的字段值填missing。以此之后实现前端至少可以渲染出来一张空工单卡片。
- Json合规后,则对不同类型的组件进行不同后端操作流程判断。
静态选项型
- 判断AI给到值是否在options里,不在的话填missing。在的话保留该值。
基础输入型
- 判断AI提取的值是否在数值范围内,不在的话强制截断。比如说字AI输出文本400字,这组件限输入300字,则截断到300字。数据的话如果超过,默认为最大的,如果小于,默认为最小的。时间同理。如若数值范围为空,则不做校验。
动态实体提取型
核心向量知识库
Rag向量知识库触发条件:formOnlyType 属于 ["Location", "Asset", "Device"]。
执行动作:
- 调用内部的向量数据库。
- 使用大模型的提取词(如“一号冷水主机”)进行余弦相似度检索。
- 命中规则:如果 Score > 0.85,提取最匹配的一项,将其标准的 ID、标准中文名存入卡片 JSON 中。
- 未命中:如果 Score < 0.85 或 AI 没提取出来,value标为missing。
非向量知识库
- 将enty_extract值作为查询参数,查询URL地址中对应的实体名称。模糊匹配,选取最符合的一个。如果没有匹配中的,则标missing。
判断当前字段均已填值(合适的值或missing)
将输出的字段结果融合之前没喂给AI的组件,解析成前端可以理解的工单流程需要的记录数据。并渲染卡片。
资产向量知识库
【AI工单】6月资产语义底座## 暂不做
工单默认提示词【本期不做】
原设计如下,现更改为,默认显示流程引擎中该工单的说明字段,支持更改配置。
| 业务类型 | 默认业务描述 |
|---|---|
| 维修:Repair | 工单描述:用于处理各类硬件设备、设施系统、IT网络等发生故障、损坏或运行异常时的修复请求。 触发场景:用户提到“坏了、漏水、不通电、断网、异响、蓝屏、停机”及要求“派人来修”等恢复功能的诉求时,路由至此类型。 |
| 访客预约:Visit | 工单描述:用于外部人员来访前的身份登记、车牌录入、权限申请与通行码发放审批。 触发场景:用户提到“明天有人来、帮客户登记一下、外部人员进场、申请个通行证/车位”等涉及人员出入授权的诉求时,路由至此类型。 |
| 保洁:Cleaning | 工单描述:用于处理公共区域、办公空间、卫生间等物理环境的卫生打扫、垃圾清运与消杀除味任务。 触发场景:用户提到“太脏了、有积水、垃圾满了、打扫一下、派个阿姨、有异味、拖个地”等环境卫生诉求时,路由至此类型。 |
| 运送:Transport | 工单描述:用于安排专人将物品、标本、物资、文件等从 A 点安全护送/搬运至 B 点。 触发场景:用户提到“送个东西、搬点物资、把XX带到XX去、派个小车拉一下、护送”等位置转移诉求时,路由至此类型。 |
| 巡检:Inspection | 工单描述:用于安排人员按照既定路线或标准,对特定设备、点位或环境进行日常状态检查与数据记录(正常/异常)。 触发场景:用户提到“查房、去看看、查表、巡视一圈、检查运行状态、抄水表/电表”等预防性检查诉求时,路由至此类型。如果是发现坏了要求修,则应归为维修,而非巡检。 |
| 保养:Maintenance | 工单描述:用于对仍在正常运行的资产/设备进行定期的维护、润滑、深度清洁或更换易损件,以延长使用寿命。 触发场景:用户提到“做个保养、加点油、换滤网、年度维护、清洗空调内机”等非故障性的系统维护诉求时,路由至此类型。如果是发现坏了要求更换零件,则应归为维修,而非保养。 |
| 投诉:Complaint | 工单描述:用于收集和处理用户对后勤服务质量、工作人员态度、环境管理、餐饮卫生等引起不满的反馈。 触发场景:用户提到“态度差、不满意、饭菜难吃、一直没人管、乱收费、要投诉”等带有负面情绪的意见反馈时,路由至此类型。纯粹报修设备不属于投诉。 |
| 巡更:Patrol | 工单描述:用于安保人员按照规定时间打卡关键安全点位,进行防盗、防火、防隐患的专项治安巡逻。 触发场景:用户提到“保安巡视、打卡、查夜、安全巡逻、防盗检查”等涉及安防治安的定时打卡诉求时,路由至此类型。 |
工单字段配置
数据源:为了防止冗余信息干扰实施人员的视线(同时也为了防止无用字段被喂给大模型),前端在此区域的字段列表经过严格的过滤。
- 权限过滤:系统读取该工单底层流程的数据,仅展示 defaultPerm为 E或 ER的组件。
- 组件类型黑名单过滤:前端内置黑名单列表。若组件的 formOnlyType 属于以下类型,直接隐藏:分栏布局(ColumnLayout)、说明(Notes)、标题(Title)、图片(Pictures)、文件(Files)、手写签名(Signature)、计算公式(CalculationFormula)、关联流程(RelatedFlow)、网页(URL)、语音录入(Voice)、明细(Detail)
字段基础信息区:显示字段名称、字段formOnlyType、字段【tagtype请参考本文档3.3.3字段清洗【AI工单】一键工单草稿】、权限标签(选填(E)、必填(ER))

允许 AI 提取开关:默认为开。
- 开启态:该字段将被纳入后端的 Clean_Schema,在用户进行自然语言交互时,大模型会尝试为其提取并填充内容。
- 关闭态:开关变灰。下方的【AI 词槽提取指令】文本框将变为半灰、不可编辑状态。
- 后端联动:当开关关闭时,后端在组装发给大模型的 Schema 时会将该字段剔除,大模型将完全看不到此题。在前端生成的最终工单草稿中,此字段的值必然为空。
AI 词槽提取指令
组件类型:多行文本框。
交互逻辑:
- 支持配置人员手动修改为自定义的提示词。
- 该提示词极其重要,它将作为大模型的局部 Prompt。可通过编写类似 “请提取用户原话中对态度的描述,如果只提到了慢,也归为态度差” 等业务规则,来精准干预大模型的提取结果,减少出现幻觉。
默认值:系统根据该字段的formOnlyType和TagType,将自动回显/注入内置的通用默认提示词(参见下表)。
字段默认提示词
以下是旧设计,目前简化设计,暂时显示为空的样式。
| 组件 | 组件formOnlyType | TagType | 组件instruction | 组件原始代码参考 |
|---|---|---|---|---|
| 单行文本 | Text | text | 请精准提炼用户原话中关于“{name}”的核心名词或短语,并填入 content 属性中。如未提及请将content置空。若minLength、maxLength两者均存在且 > 0,则填入的文本字数严格限制在 {minLength} 到 {maxLength} 个字符之间。 | |
| 多行文本 | MultilineText | text | 请详细记录用户原话中对“{name}”的完整描述,可适度梳理逻辑使其通顺后填入 content 属性中。如未提及请将content置空。若minLength、maxLength两者均存在且 > 0,则填入的文本字数严格限制在 {minLength} 到 {maxLength} 个字符之间。 | |
| 富文本 | RichText | text | 请详细提取用户描述中涉及“{name}”的完整过程与具体要求,填入 content 属性中。如未提及请将content置空。若minLength、maxLength两者均存在且 > 0,则填入的文本字数严格限制在 {minLength} 到 {maxLength} 个字符之间。 | |
| 数字 | Number | number | 仅从原话中提取关于“{name}”的阿拉伯数字,去除汉字及单位,填入 content 属性中。如未提及请将content置空。 | |
| 金额 | Money | number | 仅从原话中提取关于“{name}”的阿拉伯数字,去除汉字及单位,填入 content 属性中。如未提及请将content置空。 | |
| 评分 | Score | number | 提取用户表达的评分、星级或满意度数字。提取整数int填入content中 如未提及请将content置空。 | |
| 日期 | Date | date | 提取关于“{name}”的日期(如明天、下周一等),格式化为 YYYY-MM-DD 填入 content 属性中。 如未提及请将content置空。 | |
| 日期时间 | DateTime | date | 提取关于“{name}”的具体日期和时间,格式化为 YYYY-MM-DD HH:mm:ss 填入 content 属性中。 如未提及请将content置空。 | |
| 时间 | Time | date | 提取关于“{name}”的具体时刻(如上午十点),格式化为 HH:mm:ss 填入 content 属性中。如未提及请将content置空。 | |
| 单项选择 | SelectAssemble dataFrom == 1 or isHub==false | select_single | 这是一道关于“{name}”的单选题。必须且只能只能从Options 数组["option1"、"option2"、"option3"...]中挑选唯一合适的一项,原样填入 selected_option 中。如未提及请将selected_option置空。 | |
| SelectAssemble isHub==true 且 dataFrom == 2 则是动态URL型 | entity_single | 这是一道关于“{name}”的单选题。请你从原话中提取和{name}相关的值,并填入enty_extract 属性中。如未提及请将enty_extract置空。 | ||
| 级联单选 | Cascade dataFrom == 1 or isHub==false | select_single | 这是一道关于“{name}”的单选题。必须且只能从Options 数组["option1"、"option2"、"option3"...]数组中挑选唯一合适的一项,原样填入 selected_option 中。如未提及请将selected_option置空。 | |
| Cascade isHub==true 且 dataFrom == 2 则是动态URL型 | entity_single | 这是一道关于“{name}”的单选题。请你从原话中提取和{name}相关的值,并填入enty_extract 属性中。如未提及请将enty_extract置空。 | ||
| 多项选择 | MultiSelectAssemble dataFrom == 1 or isHub==false | select_multi | 这是一道关于“{name}”的多选题。必须且只能从Options 数组["option1"、"option2"、"option3"...]中挑选出所有符合的项,必须将结果以纯字符串数组的格式填入 selected_option 中。如未提及请将selected_option置空。 | |
| MultiSelectAssemble isHub==true 且 dataFrom == 2 则是动态URL型 | entity_multi | 这是一道关于“{name}”的多选题。请你从原话中提取和{name}相关的值,并将结果以纯字符串数组的格式填入 enty_extract 属性中。如未提及请将enty_extract置空。 | ||
| 级联多选 | MultiCascade dataFrom == 1 or isHub==false | select_multi | 这是一道关于“{name}”的多选题。必须且只能从Options 数组["option1"、"option2"、"option3"...]中挑选出所有符合的项,必须将结果以纯字符串数组的格式填入 selected_option 中。如未提及请将selected_option置空。 | |
| MultiCascade isHub==true 且 dataFrom == 2 则是动态URL型 | entity_multi | 这是一道关于“{name}”的多选题。请你从原话中提取和{name}相关的值,并将结果以纯字符串数组的格式填入 enty_extract 属性中。如未提及请将enty_extract置空。 | ||
| 单用户 | SingleUser | entity_single | 从原话中原封不动截取符合“{name}”身份的一名人员姓名,填入 enty_extract 属性中。如未提及请将enty_extract置空。 | |
| 单部门 | SingleDepartment | entity_single | 从原话中原封不动截取符合“{name}”身份的一个部门、科室名称,填入 enty_extract 属性中。 | |
| 空间位置 | Location | entity_single | 原封不动提取原话中描述“{name}”的物理空间、楼层名词组合,填入 enty_extract 属性中。 | |
| 地区 | Area | entity_single | 原封不动提取原话中描述“{name}”的省份或城市或地区的一个名词,填入 enty_extract 属性中。 | |
| 设备名称 | Device | entity_single | 原封不动提取原话中提到的“{name}”的具体名称或型号或设备类型,填入 enty_extract 属性中。 | |
| 资产名称 | Asset | entity_single | 原封不动提取原话中提到的关于“{name}”的固定资产名称,填入 enty_extract 属性中。 | |
| 后勤人员 | LogisticsPersonnel | entity_single | 提取原话中提到的所有符合“{name}”身份的人员姓名,必须以纯字符串的格式填入 enty_extract 中。 | |
| LogisticsPersonnel | entity_multi | 提取原话中提到的所有符合“{name}”身份的人员姓名,必须以纯字符串数组的格式填入 enty_extract 中。 | | |
| 多用户 | MultiUser | entity_multi | 提取原话中提到的所有符合“{name}”身份的人员姓名,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 多部门 | MultiDepartment | entity_multi | 提取原话中符合“{name}”描述的所有部门/科室名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 巡回运送点 | TransportRoutes | entity_multi | 提取要求巡回运送的所有符合“{name}”的地点/科室名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 巡检点 | InspectionObjects | entity_multi | 提取要求进行巡检的所有符合“{name}”的对象/设备/地点名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 巡更点 | Patrolpoint | entity_multi | 提取要求进行保安巡更的所有符合“{name}”的关键点位名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 保养点 | MaintenanceObjects | entity_multi | 提取需要被保养的所有符合“{name}”的设备或设施名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 保洁位置 | CleaningObjects | entity_multi | 提取要求进行保洁打扫的所有符合“{name}”的区域名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 展品巡检 | ExhibitInspectionObjects | entity_multi | 提取需要巡检的所有符合“{name}”的展项名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 展品保养 | ExhibitMaintenanceObjects | entity_multi | 提取需要保养的所有符合“{name}”的展品名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 备品备件 | SpareParts | entity_multi | 提取本次需要的关于“{name}”的备品备件名称,必须以纯字符串数组的格式填入 enty_extract 中。 | |
| 打印耗材 | PrintingConsumables | entity_multi | 提取本次需要的关于“{name}”的打印耗材名称,必须以纯字符串数组的格式填入 enty_extract 中。 |
