Skip to content

原始飞书文档:【AI工单】6月一键工单方案作者:龚菲

【AI工单】6月一键工单方案 ​

https://nimbus.modao.cc/proto/xpjZFtksufyatMkt7INBR/sharing?view_mode=read_only&screen=rbpVKtUvQj9Me3JgV

文档负责产品研发测试说明
[【AI工单】一键工单草稿](https://ufpohmwnol.feishu.cn/wiki/CQfuwqk0JixAAGkatPIcCplhnQe)龚菲--26/5/27V1.0
[【AI工单】6月一键工单方案](https://ufpohmwnol.feishu.cn/wiki/NGeewQRoTiyvtzkdzdRc7m4gn5g)龚菲周邓、肖凯、胡东旭陈晓梦26/6/1V2.0
[【AI工单】6月资产语义底座](https://ufpohmwnol.feishu.cn/wiki/D2yjwMKMIiWGpdkE8xZcfYt0nue)龚菲周邓、肖凯、胡东旭陈晓梦26/6/2V1.0
[【AI工单】7月多模态输入、多轮交互、组件优化、工单防重](https://ufpohmwnol.feishu.cn/wiki/Vg4Lwuxymi7H0PkCG2kca2u5n7e)龚菲周邓、肖凯、胡东旭陈晓梦26/6/2V1.0

一、 项目背景与核心目标 ​

  1. 当前移动端业务中台的工单(报修、保洁、IT申请等)表单庞大且层级复杂。一线员工和现场运维人员在手机小屏幕上“找入口 -> 选节点 -> 敲长文本”体验极差,导致工单提交意愿低、现场信息流失严重。

  2. 本次工单智能体核心目标:打造一个基于大模型的移动端原生 AI 助手,实现“一句话极速建单”,不涉及处理工单、分析工单。

    • 降门槛:用户只需用自然语言(语音/文字)描述诉求,AI 自动完成“意图理解 -> 找准工单 -> 填好表单”的全链路。
    • 防幻觉:构建坚固的“后端安检引擎”,确保大模型生成的脏数据绝对无法污染底层业务数据库。
    • 低运维:各类底层业务组件自动生成 AI 提示词(Prompt)并且支持运维人员按实际项目情况修改。实现新加一个工单流程,业务人员自己在后台“配一下”AI就能认,不用改AIagent整体流程。
    • 通用性:本次一键工单,并非只针对固定几个工单进行创建。由于项目上流程、字段会自由更改配置。因此产品化的AI工单智能体需支持灵活根据配置发起各类工单。由于是面向B端的用户,且前端交互支持手动切换流程类型、字段内容。因此对AI幻觉程度的容忍稍高于C端的科技馆智能助手。

二、业务调研 ​

目前项目统计数据 ​

  1. 数据说明:
  • 以下是目前真实项目中截止2026/5/25、5/26的工单数据,已剔除测试数据和无真实发起数量的工单数据。(也即是说,有些工单内置了,但是没人使用,所以在这也不做统计)
  • 环秀湖和相城妇幼由于项目环境无法登录所以不做统计,当代美术馆、独墅湖尚未交付不做统计。
  • 数据统计创建工单时可编辑的字段组件。隐藏、只读字段组件均已过滤。

[嵌入电子表格] token: QacDs1V2VhL0mGtodiqcN7mWnib(原始数据在飞书文档中)

业务数据统计分析 ​

概览 ​

  1. 手动发起数量

    • 剔除系统自动生成的“巡检(20229)”、“保养(61)”工单后,剩余的维修(16093)、运送(70351)、访客预约(16783)、保洁(1047) 绝大多数均为手动发起。
    • 这些手动发起的工单,组件极其复杂。以“维修”为例,用户不仅要手打“报修描述(MultilineText)”,还要手动点选“报修位置(Location)”、“报修设备(Asset/Device)”、“专业类型(Select)”、“紧急程度(Select)”。这在移动端现场操作时,是极大的阻力。
  2. 核心组件

    • 盘点所有表单,最高频出现的组件是:文本/语音描述 (Text/Voice)、空间位置 (Location)、现场图片 (Pictures)、单项选择 (SelectAssemble)。
    • 只要我们的 AI 攻克了提取描述、 映射位置、判断选项这三个卡点,就能覆盖 80% 以上的手动建单场景。
  3. 多模态(图+文)是刚需:

    • 几乎所有的“维修”、“保洁”表单中都包含图片组件。虽然本期 PRD 聚焦自然语言 (NLP) 文本填槽,但数据证明,下期规划“图片 OCR 解析/现场拍照识别”是非常符合业务实际的 P0级需求。

业务重点 ​

  1. P0 级:维修 (Repair) & 保洁 (Cleaning)

    • 工单量:维修 (16,000+);保洁 (1,000+)
    • 入选理由:最典型的“现象描述型”场景。员工在现场遇到设备坏了或地面脏了,极度渴望通过“一句话+拍个照”解决。
    • AI 提效点:AI 可精准从语音中提取故障/保洁说明,并在后台将大白话映射为空间位置,推理出紧急程度。
  2. P1 级:访客预约 (Visit)

    • 工单量:巨大 (16,700+)
    • 入选理由:属于“信息录入型”场景,包含大量结构化数据(姓名、手机号、车牌号、到访时间、同行人数)。
    • AI 提效点:大模型在提取此类标准实体时准确率极高。用户只需复制粘贴一段微信聊天记录文字,或发语音:“明天上午十点,张三来拜访,车牌苏E12345,两个人”,AI 瞬间即可填满 5-6 个表单组件。
  3. P2 级:运送 (Transport)

    • 工单量:极高 (70,000+)
    • 入选理由:虽然单量最大,但运送单通常由专业调度人员或特定科室发起,操作可能已经高度熟练或模板化。
    • AI 提效点:后期可支持指令型语音:“把A区病历送到B区化验室,让李师傅去”,AI 自动提取 =起始/目的点 和后勤人员。起始地点均为部门的数据,因此下次把部门、成员向量知识库化。
  4. 优先级低:巡检 (Inspection) & 保养 (Maintenance)

  • 理由:数据显示这部分几乎 100% 为“系统自动发起”,由定时任务触发。不属于用户在移动端手动发起建单的场景,暂无需 AI 介入创建节点,因此优先级低。

重点业务-维修 ​

  1. 分析数据源太湖工单数据(500条 109条报修2.0;391条报修数据;不含测试数据))体育中心(500条)博览中心(500条)艺术中心(500条)【中环妇幼(禧华)】报修(500条)苏州湾(500条)

  2. 用户填写常见行为

    分类示例
    [位置]+[对象]+[故障]+[电话]24病区报修: 20床呼叫铃坏了 8153
    [位置]+[对象]+[故障]门诊大厅的空调温度太高
    需要更换[数量][规格]氧气瓶需要更换一瓶4升矮胖的氧气瓶
    [对象]+[故障]水龙头不出水
  3. 组件填写率

字段太湖体育中心博览中心艺术中心中环妇幼苏州湾综合填写率说明
问题描述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%除非必选,用户较少上传图片,多在复杂漏水、破损工单中出现
  1. 常见报修问题类型与故障对象

    1. 所有项目报修工单数据总统计
    高频问题类型常见对象常见故障描述总占比
    空调故障分体空调、中央空调、新风系统、空调面板、空调遥控器“空调不制冷”
    “空调漏水”
    “空调太热/太冷”
    “空调出热风”
    “空调有异响”
    ≈18%
    卫生间/水暖设施水龙头、台盆、马桶、小便池、花洒、地漏、感应器“水龙头不出水/漏水/摇晃”
    “马桶堵塞/漏水/盖坏”
    “小便池不出水”
    “地漏堵塞”
    ≈15%
    照明/灯具顶灯、筒灯、地灯、灯带、灯牌、射灯“灯不亮”
    “灯闪烁”
    “灯罩脱落”
    “灯带脱落”
    “地灯塌陷”
    ≈12%
    门/窗/锁/闭门器门、门把手、门锁、闭门器、卷帘门、纱窗“门把手掉了/坏了”
    “门关不上”
    “锁打不开”
    “闭门器损坏”
    “纱窗坏了”
    ≈10%
    地面/地胶/盖板/地砖地胶、地砖、地沟盖板、台阶、地面盖板“地胶翘起/脱落”
    “地砖破损/塌陷”
    “盖板下沉/翘起”
    “地面拱起”
    ≈10%
    电子设备/互动屏幕闸机、电子屏幕、触摸屏、互动展项“屏幕黑屏/白屏”
    “触摸失灵”
    “无响应”
    “闸机无法扫码”
    ≈8%
    医疗设备/氧气中心吸氧接头、吸引器、氧气瓶“接头松动”
    “吸引器报警”
    “需要更换氧气瓶”
    ≈5%
    漏水/渗水空调管道、屋顶、消防栓、卫生间管道“管道漏水”
    “屋顶渗水”
    “消防栓漏水”
    “天花板上水”
    ≈5%
    墙面/吊顶/装饰墙皮、天花板、吊顶、石材、踢脚线“墙皮脱落”
    “天花板脱落/漏水”
    “吊顶开裂”
    “踢脚线脱落”
    ≈5%
    呼叫/报警系统床头呼叫铃、卫生间报警铃、按钮“呼叫铃坏了/不响”
    “卫生间一直报警”
    “屏幕不显示”
    ≈3%
    家具/设备床栏、陪护椅、轮椅、抽屉、柜子、输液杆、床帘、挂钩“床栏坏了”
    “陪护椅坏了”
    “抽屉打不开”
    “输液杆掉了”
    ≈3%
    电力/插座插座、开关、电闸、设备带、拖线板“插座没电”
    “跳闸了”
    “设备带没有电”
    ≈3%
    其他(指示牌、消火栓玻璃、桌椅、窗帘等)指示牌、消火栓玻璃、座椅、窗帘、舞台木板“指示牌脱落”
    “消火栓玻璃破裂”
    “座椅扶手脱落”
    “窗帘掉落”
    ≈3%
    1. 各个项目问题类型详情
    项目高频问题类型常见对象常见故障描述占比
    太湖空调故障分体空调、中央空调、新风系统、空调面板、空调遥控器“空调不制冷”
    “空调漏水”
    “空调太热了 / 太冷了”
    “空调出热风”
    “空调按钮按不了”
    “空调有异响”
    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%
  2. 统计分析:

    1. 组件中,报修对象大都为填写项,少部分为资产的单选项,无物联设备项。因此如果需要rag向量知识库,需构建资产向量知识库。物联rag知识库的优先级极低。向量知识库的优先级为:空间向量知识库>资产向量知识库>部门向量知识库>>人员向量知识库>物设备向量知识库。
    2. 常见报修对象很多不会被物联设备接入,也很少会被资产纳入,比如什么天花板、门窗。需要运维人员根据常见的报修对象,手动创建一些资产,并且把一类物品作为一个资产,比如说难以给每个门都建一个资产。
    3. 报修描述信息密度极高,几乎所有其他字段的信息都隐含其中。如果不是必填项,用户懒得填写其它字段,报修设备、报修位置、专业类型 等字段填写率极低(<15%),哪怕报修设备是填写组件,填的人都很少。图片上传如果不是必填项,上传率也很低。
    4. 空调故障和水暖/卫生间设施是全部项目中最常见的两类问题,
    5. 照明灯具、门锁门窗、地面地胶、电子设备四类问题紧随其后,合计占比约40%。
    6. 不同类型项目差异明显:医院类以空调、医疗设备、氧气更换为主;体育场馆以卫生间、电子闸机、地面为主;会展以卫生间、照明、盖板为主;艺术中心以卫生间、墙面吊顶、照明为主;科技馆以互动屏幕、投影、机械装置为主。

重点业务-保洁 ​

  1. 分析数据源太湖保洁工单数据(500条)

  2. 用户填写常见行为

    • 典型结构:[病区/楼号] + [床号/房间] + [需要打扫/拆床/拖地]
    • 示例:“18病区31床32床需要拆床”、“2113卫生间需要拖一下”
  3. 用户填写字段率

    字段名填写率说明
    保洁说明100%必填字段,每条工单都有文字描述,内容长度从几个字到一两句话不等
    保洁位置≈30%可选字段,约三分之一的工单填写了具体位置(如“7号楼 / 9F”),其余为空
  4. 典型工单案例

编号保洁说明保洁位置类型典型性
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中途回答了其它问题,那就的工单卡片不会自动置灰,是需要创建新的工单卡片,旧的卡片才置灰。

图片为用户交互概览流程图,展示AI 自动生成草稿卡片后,专员发现错误工单类型,点击卡片顶部切换流程,系统弹出可选工单列表,专员选择IT报修单,AI将旧卡片信息 addCriterion

场景 3:实施人员的配置AI工单,提高AI建单准确率 ​

  • 动作:业务部门今天刚在流程引擎里上架了一个新的流程工单。实施人员打开【工单 AI 配置】页面,便捷更改对字段的说明,从而相当于调整了AI的prompt提示词,针对性增强AI对字段的理解能力。
  • 系统响应:系统自动将新表单解析为 AI 可读的结构。实施人员只需根据需要,给字段更改默认提示说明(如:“提取来访人姓名”),该工单便具备了能被AI处理的能力。

四、整体系统架构 ​

架构概述 ​

为了实现上述场景,我们摒弃了“把大模型当全能神”的危险做法,采用 “后端清洗+ AI 提取 + 后端实体对齐+后端安检” 的架构:

  1. Dify Agent

    • 拦截闲聊与未开放功能。结合用户权限,判断用户是要报修、保洁还是投诉,精准锁定目标工单 ID。
    • 结合用户的历史输入和后端给的工单清洗后的组件相关信息,进行词槽填取,提取规则按照组件里关于组件的描述进行。并把提取后的结果返回给后端进行实体对齐与检查。
  2. 后端动态降维清洗

    • 痛点:底层表单包含海量配置(只读、隐藏、校验正则、API 地址),直接喂给 AI 会导致 Token 爆炸。
    • 解法:后端代码根据配置与默认规则自动过滤无用字段,将复杂的 42 种组件,强制归类降维为 6 种 AI 题型(填空题、单选题、多选题、提取原文题等),并自动拼接好指导提示词(Instruction),生成极简试卷发给 AI。
  3. 后端实体对齐

    • RAG 向量映射:AI 提取了“三楼男厕”,后端带着这句话去【空间向量库】搜索,命中后将官方真实 ID(如 loc_8891)悄悄塞入前端。
    • 动态接口模糊查询:AI 提取了人名“张三”,后端去调用第三方接口核实此人是否存在。AI 只做语言提取,所有真实 ID 转换全由中台完成。
  4. 后端安检

    • 防止选项捏造:AI 选的选项不在下拉框里?AI填写的内容不在字符要求范围内?不符则后端直接强制清空拦截。

整体架构概览流程图 ​

图片为整体系统架构概览流程图,展示了从用户输入文字到工单生成的全流程。用户输入文字后,系统判断是否为有效业务量,若否则结束流程。若是,系统先判断是否为大模型,若为大模型则调用agent,若否则调用AI质检系统。接着判断是否为业务质检系统,若否则进入人工审核环节。之后判断是否为大模型生成的工单,若否则进入大模型质检环节。最后,用户可在APP上获取结果,结果包括质检结果、AI质检结果、质检详情、质检详情(表格)等。

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

图片展示了前端卡片交互的局部流程图。用户触发操作后,对多个分支路径,如对AI说话要求修改内容、点击卡片头像的下拉框等,对应不同操作流程。还涉及前端实时校验、后端脱水清洗等环节,如前端实时校验必填项value为空、数据完整,后端调API提交入库等卡片变为已提交状态等。该图与文档中“局部流程图 - 前端卡片交互”内容对应,直观呈现了前端卡片交互的流程。

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

该图为【AI工单】6月一键工单方案中的“局部流程图-后端脱水清洗”相关架构流程图示,图中呈现了从“管理后台AI配置资源”相关起始节点出发的流程走向,包含多个以菱形为判断节点、矩形为操作节点的流程模块,涉及配置相关、判断“是否匹配配置结果”等关键节点,以及如“抽取文本”“AI文本去重”等后端脱水清洗环节对应的操作分支,清晰展示了工单处理中后端脱水清洗环节的逻辑流程,与文档中局部流程图的相关内容对应。

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

图片为“局部流程图 - 前端卡片交互”流程图。用户发起对话后,若为非后台的对话则调用大模型,生成回复;若为后台的对话则根据后台的行业业务分类,进行工单创建或进入一键工单交互。交互后获取当前用户“任务、角色、权限”等信息,再调用工单生成模型,生成对应工单。若生成的工单为后台工单,则根据后台工单类型生成对应工单;若生成的工单为前台工单,则根据多个 addCriterion

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

图片为局部流程图 - 前端卡片交互,展示了从输入到最终输出的流程。输入为从工单AI配置页面读取该工单对应的字段明细配置列表,经调用Clean_Schema后,遍历每个字段配置,判断字段配置中的el_enabled是否为ON,若为ON则进行组件降维迁移,再根据form addCriterion

局部流程图-后端实体对齐与安检 ​

五、 研发功能点拆解 ​

  1. 为了将方案落地,各团队需认领以下核心模块:

前端研发 ​

  • 全局悬浮球底座:支持物理拖拽、状态记忆;支持文字/语音切换、长按录音波形动效。
  • 意图前置胶囊:输入框上方的分类标签(如:工单创建),选中后自动为输入文本拼接前缀。
  • 高保真动态草稿卡片:基于 JSON 动态渲染表单;支持红框必填实时校验拦截;支持旧卡片“快照化置灰失效”;支持提交工单。
  • 工单 AI 配置:支持配置流程和流程内组件的AI启禁用、流程和流程内组件的说明字段编辑。
序号开发端功能类型功能点开发排期当前是否完成
1移动端悬浮球支持物理拖拽、屏幕边缘互斥6月
2实现冷热启动的位置状态记忆6月
3交互内页意图前置选择器 (含隐式传参拼接)6月
5文本输入 (监听变化切换发送按钮)6月
6语音输入ASR (长按录音、上滑取消动效)6月改7月
聊天瀑布流渲染 (用户气泡、AI 气泡、加载状态)6月
7对话与思考打断终止逻辑6月√
8图片上传-自动化适配图片组件7月
9录音上传-自动化适配音频组件7月
10文字转语音tts7月
11思考安抚话术7月√
12工单卡片工单切换流程选择6月
13渲染42个工单组件6月
14组件必填性校验6月
15废弃卡片逻辑6月
16提交流程工单API 对接与 Loading 弹窗6月
17提交成功后卡片固化,提供跳转查看工单详情链路6月
18报修单特供:故障设备 AI 建议 (知识库关联展示)7月
19Web后台配置工单 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月
19AI去重AI智能去重7月
20多模态输入图片上传-自动化适配图片组件7月
21录音上传-自动化适配音频组件7月
22图片OCR7月
23运维知识库辅助报修工单故障原因推测与维修建议(知识库检索)7月
24工单查询与统计自然语言查询工单(ChatBI)7月

六、功能prd详细说明 ​

效果demo ​

[视频附件] 20260508150709_rec_.mp4(原始文件保留在飞书文档中)

移动端交互 ​

悬浮球 ​

  1. 支持物理拖拽、屏幕边缘互斥:

    • 在小程序的首页常驻一个AI助手悬浮球,支持支持物理拖拽、边界排斥、关闭。

    • 悬浮球仅在首页出现,其他深层业务页面不展示。

    • 支持全屏幕拖拽,贴边排斥,让图标始终不会被遮挡。效果可以参考如下豆包

      [视频附件] 20260508192152_rec_.mp4(原始文件保留在飞书文档中)

  2. 冷热启动的位置状态记忆

    • 本次打开过程中,切换页面不会重置刷新位置或开关状态
    • 用户重新打开APP时,重置刷新悬浮球位置或开关状态

内页样式 ​

  1. 点击悬浮球,由下至上弹出一个全屏的“AI对话面板”。中间显示AI的头像,下面显示打招呼的语句。支持点击返回页面关闭页面。

  2. 意图前置选择器:输入框上方提供横向滑动的胶囊按钮组。

    • 组件单选,可为空。点击则选中,再次点击则取消选中。默认为空,每次进入ai内页都会恢复成默认为空的状态,不需要记住上次的选项。

    • 当用户选中某个选项(如 工单创建),并在输入框输入“空调坏了”点击发送时。

      • 前端 UI 显示:用户气泡内仅显示文字“空调坏了”(保持界面清爽)。
      • 实际 API 传参:前端在发送给后端的数据中,自动强行将文本拼接为:【工单创建】空调坏了。以增加AI意图识别识别的准确度。
    • 目前前端内置三个滑块,分别为工单创建、会议预定、设备控制。传给AI时就在消息前面固定先加对应的【工单创建】、【会议预定】、【设备控制】

  1. 文本输入:默认展现文本输入框。只要输入框内有任何字符,最右侧的麦克风图标立即无缝变为发送图标。
  1. 语音输入与ASR

    • 语音模式切换:点击最右侧麦克风,文本框隐藏,变为“请按住说话”按钮。
    • 长按该按钮触发系统录音,屏幕中央弹出半透明的高斯模糊遮罩,展示波形动画。
    • 语音录入中:用户按住并向屏幕上方滑动超过一定位置,遮罩与提醒文字变色。此时松手,直接丢弃录音文件,不发送请求。该部分的交互,前端请参考科技馆移动端,包括如果ASR没识别到语音,需要弹出的提示弹窗。
    • ASR模型,走本地化部署,后端提供API。(研发评测后给出)
  2. 图片上传:相机上传按钮先留个icon口子,五月开发暂不涉及,六月开发再详细设计图片ocr与图片音频相关的字段。

  3. AI思考状态:AI思考时,显示动态思考icon即可。不需要像科技馆C端ai一样思考安抚等待话术。

[视频附件] 20260509104204_rec_.mp4(原始文件保留在飞书文档中)

  1. 对话与思考打断终止逻辑:AI思考时用户如果再次输入,则旧有的思考被打断终止,气泡前端固定显示:“抱歉, 该问题的思考已中止。如果需要重新开始或补充信息,随时可以继续提问哦” 并且直接思考并回答最新的回答。如果AI是正在输出中时被打断,那流式输出直接中断,AI开始思考并回复新问题。交互可参考科技馆移动端.

这是苏州科技馆相关AI对话界面的移动端截图,用于展示对话与思考打断终止逻辑的效果。界面中用户先后发送“今天星期几”“你好”“你叫啥”“科技馆”等提问,AI的回复依次为对应日期回复、身份介绍、思考中止提示、正在处理的等待提示;当AI因思考被终止时,会固定显示“抱歉,该问题的思考已中止。如果需要重新开始或补充信息,随时可以继续提问哦”,该界面符合功能PRD中提及的交互参考示例。

工单卡片 ​

渲染42个工单组件 ​

  1. 根据 AI 返回的数组,前端按序渲染组件(单行文本、多行文本区、下拉框等)。前端根据后端下发的 defaultPerm (权限标) 进行差异化渲染,创建流程隐藏的组件不需要渲染。只读、编辑、必填组件均需要渲染。组件的交互逻辑复用目前流程引擎最新工单。组件与组件之间用存在一定透明度的横线划分,不需要留灰色分隔块。
  1. 组件必填性校验

    • 如果缺失必填,默认的提示词则用红色标注。
    • 实时校验卡片必填项,只要卡片内任意一个必填项是空的,底部的【提交工单】按钮立即变成灰色,且文字变为【缺失必填字段】。用户补充完最后一个必填项时,按钮变为主题色激活。
    • 【6/18】与研发讨论,去掉缺失必填字段的按钮,只保留作废和提交工单按钮。点击提交工单按钮后,再进行缺失的校验。

工单切换流程选择 ​

  1. 如果用户点击卡片顶部的工单类型那个区域,则卡片出现灰色蒙版,弹出选择流程的弹窗。**【6/3 新增】**注意,卡片工单名称前端请做字数校验,如果流程名称太长了,用...省略号显示。多少长度省略见UI或前端根据效果自由裁定。

  2. 单选,必选,默认选中当前工单卡片的流程。支持上下滑动显示全流程。

  3. 流程的选项为该登录用户可以创建的工单流程。本次默认所有用户可以创建的流程,该用户都可通过AI来创建。

  4. 用户点击叉、或点击出弹窗外的其它任何区域,则弹窗默认关闭。

  5. 点击确定则选择选中的流程作为工单模版。

    • 如果当前选择的流程就已经是当前模版的类型,则前端不需要把该信息传递给后端,卡片不会刷新更改。
    • 如果当前选择的流程是非当前模版,之前也未被选过。则下拉框立即置灰,卡片出现加载中的动态icon。前端将之前的对话 + 当前旧卡片的数据 + 新目标工单的类型发给后端,请求 AI 重新提取映射。
    • 如果当前选择的流程在本次与AI交流时,曾经创建过,则切换流程类型就直接显示之前的工单草稿。因此需要暂时存储记录下工单草稿的信息。
  6. 原地重绘:拿到新数据后,直接覆盖当前工单卡片,不是在聊天流最下方生成一个新卡片。

废弃卡片 ​

  • 唯一存活原则:聊天流中,永远只能有一张可编辑可提交的工单卡片。

  • 置灰触发时机:

    • 用户通过发送新的一句话,让 AI 修改了草稿,AI 生成了一张新卡片。【下期再做】
    • 用户主动点击了旧卡片左下角的 【作废】 按钮。
  • 置灰效果:

    • 【6/3 更改】作废后,卡片默认收起,下图右侧样式。卡片名称更改成历史版本 再显示已作废的图标。点击展开,则打开废弃卡片详情。展开的文本更改为收起两百万左右手个字,点击则回归收起状态。
    • **【6/18 更改】**收起与展开暂时不做,置灰只是蒙一层蒙版、去掉作废和提交按钮、打一个已作废的标签
    • 卡片置灰不可编辑,用详情的样式呈现。不再有作废或提交的按钮。

暂不做

提交工单卡片 ​

  1. 用户点击【确认提交】,则工单弹出正在提交中的提示弹窗,如果提交失败或者超过10s还没有返回结果,则弹出失败提醒弹窗。提示弹窗显示3s淡出,笼罩消失,工单可以重新编辑提交。
  2. 提交成功后,原来的工单卡片换成提交成功的组件,右下角出现查看工单的跳转链接,点击则将跳转到对应的这个工单详情页面。

web与后端 ​

前文概要 ​

  1. 目前工单有两种,一种是流程引擎工单(流程引擎自由配置更改),一种是业务工单(比如物资出入库、资产盘点之类工单,表单前端固定写死,流程节点可自由更改)。本次针对流程引擎工单进行方案设计,暂不涉及业务工单。
  2. 当表单组件高度动态化,且大量依赖第三方 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。
  1. 下面是目前比较复杂的选择类组件,以及划分的组件类型
组件组件formOnlyType组件类型本期做不做
空间位置Location核心实体型,选取会议预定的空间向量知识库√
资产名称Asset核心实体型,需新建向量知识库 同步资产库√
级联单选CascadeisHub==true 且 dataFrom == 2 则是动态URL型
反之则是静态枚举型,会给出options
√
级联多选MultiCascadeisHub==true 且 dataFrom == 2 则是动态URL型
反之则是静态枚举型,会给出options
√
单项选择SelectAssembleisHub==true 且 dataFrom == 2 则是动态URL型
反之则是静态枚举型,会给出options
√
多项选择MultiSelectAssembleisHub==true 且 dataFrom == 2 则是动态URL型
反之则是静态枚举型,会给出options
√
单用户SingleUser固定URL 后期考虑构建向量知识库下期做
多用户MultiUser固定URL 后期考虑构建向量知识库下期做
单部门SingleDepartment固定URL 后期考虑构建向量知识库下期做
多部门MultiDepartment固定URL 后期考虑构建向量知识库下期做
备品备件SpareParts固定URL 数据源物资下期做
打印耗材PrintingConsumables固定URL 数据源物资下期做
巡回运送点TransportRoutesURL下期做
巡检点InspectionObjectsURL下期做
巡更点PatrolpointURL下期做
保养点MaintenanceObjectsURL下期做
保洁位置CleaningObjectsURL下期做
后勤人员LogisticsPersonnelURL下期做
展品巡检ExhibitInspectionObjectsURL下期做
展品保养ExhibitMaintenanceObjectsURL下期做
设备名称Device选取设备控制的向量知识库下期做

总流程、时序图 ​

具体逻辑 ​

工单AI配置页面 ​

  1. 经过第一次评审讨论并结合孙老师的建议。考虑到AI幻觉问题,和AI难以理解字段的问题,本方案新增对字段的解释说明。在此简单归为以下逻辑。

    1. 增加一个针对流程引擎创建阶段可发起组件的配置页面【工单AI配置页面】(6/1新增)页面标识符WorkOrderAIConfig,嵌在空间智能、设备控制等页面所在的那个应用里。该页面支持对每个流程工单、以及每个工单中的每个组件进行解释说明的填写以及开关是否AI的配置。
    2. 配置页将给每个类型(内置类型)的工单、以及每个类型的工单组件设置默认的解释说明字段,可编辑更改。解释说明字段将会被引用到【可发起工单列表】中的表单说明字段,以及clean_scheme中的instruction字段中。
    3. 新增一个勾选加入流程的设计【5/27 新增】

图片是工单AI配置页面,展示流程类型为维修的工单列表。页面左侧有流程类型、资产、任务等分类,右侧上方有流程名称、流程标识、流程发起等筛选栏。列表中呈现工单编号、流程标识、流程状态、工单创建人、AI智能说明、完成事项、成本、发起人、发起时间、流程发起人、流程发起时间等信息,部分工单有“智能发起”标识。页面右上角有“重置”“筛选”按钮。此图与上下文介绍的工单AI配置页面功能相契合。

引入流程工单 ​

该图片呈现的是苏高新智科AI中核系统的界面,其中弹出了“从流程引擎引入流程工单”的窗口,窗口内展示了待引入的流程工单列表,列表包含工单名称、工单标识符、业务类型、流程状态等信息,明确标注了已选0项共1403项结果,页面可对工单进行勾选、搜索,还设有“取消”和“确定引入”按钮,该弹窗对应文档中“工单AI配置页面”的引入流程工单相关功能展示内容,是该部分功能逻辑的可视化体现。

  1. 从流程引擎映入流程工单

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

    图片展示的是工单AI配置页面中引入流程工单的“基础信息”部分。页面有流程id、分组、谁可以发起该流程、流程标识符等输入框,还设有“表单类型”选项,其中“流程引擎表单”被选中。该图片与上文介绍的从流程引擎映入流程工单的内容相关,直观呈现了在工单AI配置页面中引入流程工单时,需填写的基础信息及表单类型选择情况,帮助用户了解操作界面和设置要求。

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

这是AI工单方案中工单AI配置页面的界面,左侧为资产资源管理下的流程类型列表,包含“设备”“链路”等选项;主区域展示流程工单列表,表头设有流程名称、流程标识、流程状态等字段,列表内呈现多条流程相关数据,含流程编号、状态等信息。列表右上角有“AI智能发起”选项及蓝色“修改”按钮,部分数据右侧带有红色操作标识,右下角设有分页控件,该页面用于实现流程工单的AI配置相关功能,是方案web与后端功能逻辑的具体呈现部分。

  1. 在左侧显示目前已同步接入的流程的流程类型。比如如果有维修的工单,那左边显示全部、维修。如果有维修、保洁类工单,那左侧显示全部、维修、保洁。

  2. 流程搜索框

    • 流程名称:文本输入,非必填,默认为空,支持检索流程的名称
    • 流程标识符:文本输入,非必填,默认为空,支持检索流程的标识符(注意不是ID)
    • 流程状态(激活、挂起):单选,必选,默认选全部。选型有全部、激活、挂起。对应流程引擎里流程的激活和挂起。
    • AI状态:单选,必选,默认选全部。选型有全部、启用、禁用。对应列表里的AI状态。
  3. 列表字段

    • 流程类型:对应流程引擎中流程的业务类型

    • 流程名称:对应流程引擎中流程的名称

    • 流程标识符:对应流程引擎中流程的流程标识符。注意不是流程id

    • 流程状态:对应流程引擎中流程的流程启禁用状态,字段名为激活或挂起

    • 【6/15 新增】工单防重检测:详情见7月的prd

    • AI状态:AI的状态。新引入流程后,默认为启用。启用前面显示绿色小圆圈,禁用显示灰色小圆圈。

    • 【6/15 新增】同步异常:

      • 每次系统自动定时同步或者手动点击数据同步。
      • 如果同步成功,则自动按照最新的数据,去更改工单信息,列表里的同步异常字段为空。
      • 如果同步失败,则同步异常字段需要显示同步失败的原因。该字段每次仅记录最新的一条数据。
      • 如果失败的报错是该流程在流程引擎已被删除,则AI状态自动禁用。其他的报错,不要把AI状态自动禁用了。【这个禁用做不做都行】
    • 操作列:

      • 配置:点击配置按钮,弹出该工单AI配置的右抽屉弹窗
      • 重新同步:点击重新同步,则查询流程引擎中的最新数据,对该工单进行同步,同步成功弹出提示弹窗:同步更新成功。失败则~~显示:同步更新失败,请检查服务。~~显示报错的原因
      • 启禁用:AI状态为启用的流程,该按钮为红色禁用。点击则把AI状态的启用变成禁用。如果AI状态已经为禁用的,该按钮为绿色启用击则把AI状态变成启用。单条或批量启禁用,提示文本如下所示。

      图片展示 addCriterion()函数的参数为“参数名称”和“参数值

      • 删除:点击则删除工单。
  4. 批量操作按钮:包含批量删除、批量启用、批量禁用。

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

图片描述的是运维投诉工单AI配置页面。页面左侧为流程管理导航栏,选中“流程类型”下的“运维”类别。右侧是运维投诉工单配置区域,显示流程名称为“运维投诉”,允许AI发起开关处于开启状态。下方有“控制该工单下各字段的应答策略””的提示,列出了“投诉类型”“投诉对象”两个字段的应答策略,每个策略前有“允许AI应答”的开关,其中“投诉类型”开关处于关闭状态。

  1. 工单配置

    1. 显示流程工单的名称(注意不是类型,是名称)、是否允许AI智能发起、工单业务描述。
    2. 是否允许AI智能发起:和外面那个AI状态保持一致。如果在列表里这个是开的,那这个就是开的。如果这个是关的,那这个就是关掉。在这个配置页面后需要点保存,才会真的启用生效(通过详情页启禁用后保存的,操作后也显示那个启禁用成功提示弹窗)。开启的流程and允许被该用户发起的流程工单,将进入【可发起工单列表】。关闭的流程不会进入【可发起工单列表】。
    3. 工单业务描述,支持对该工单进行描述,辅助AI判断用户想要发起什么工单最合适。该字段从流程引擎同步工单描述字段。支持编辑更改。
  2. 字段组件配置

    1. 显示该流程工单清洗过滤过后的组件,组件允许AI发起的按钮默认均为开,开启过后的字段组件,才会喂给AI允许AI去提取词槽。
    2. 显示字段组件的名称、【6.4 编辑更改】显示组件TypeName 即组件在流程引擎中的名称即可组件的唯一标识符(formOnlyType)、组件的TagType(后端按照本文档规则,单独写的类别字段)、组件是选填还是必填的样式。
    3. 字段组件的AI词槽提取指令:默认为空,暂不设置默认选项,文本输入限制1000字。
  3. 保存:点击保存则保存该配置,点击取消,则不保存本轮配置

判断可发起工单 ​

业务流程图

  1. 权限判断,根据流程配置中该用户是否可发起该流程、AI配置中该流程是否被AI启用,判断该用户有权限创建的工单列表,输出【可发起工单列表】。该列表至少需要包含如下字段:表单名称、表单说明、业务类型、流程ID。
  2. AI结合可发起工单列表判断该用户想创建什么类型工单。本次不需要额外判断是不是列表为空、是不是有这个工单只是用户没权限、只要【可发起工单列表】没有可匹配中的工单,AI就文本解释类似说明:抱歉,您暂不能创建类该类工单哦。如有需要,请联系管理员进行升级。不需要渲染卡片组件。
  3. 本期暂不需要意图澄清
C++
场景一:用户的【可发起工单列表】有 [保洁工单, 运送工单]
用户:我的电脑死机了,来修一下电脑。
Agent模型发现提供的列表里没有 IT 报修
AI: 抱歉,我未能找到与‘电脑修理’相关的工单表单,或者您当前没有该工单的发起权限。您可以换个说法,或手动前往大厅查找。

场景二:用户的【可发起工单列表】有 [机电报修, 弱电报修, 资产报修]
用户:东西坏了
Agent模型发现提供的列表里有多个符合可能的报修工单,默认选择了一个进行字段清洗-提取词槽-卡片渲染。因为前端卡片上提供了 [切换工单类型] 的下拉框,即使系统猜错了,只要能渲染出一张表单,用户自己也可以在卡片头部进行纠正切换。可能选错这比什么都没有让用户干等要好一万倍。

[视频附件] 20260514160338_rec_.mp4(原始文件保留在飞书文档中)

字段清洗 ​

业务流程图

  1. 数据源:由于我们只需要创建节点的数据,并且创建节点的编辑、可读、隐藏、必填在表单数据直接显示了,所以我们只需要处理表单数据即可,流程数据不需要给AI处理。

  2. 第一步:字段过滤

    1. defaultPerm为H\R的字段过滤、formOnlyType为图片、文件、手写签名、语音录入、分栏布局、明细、关联流程、说明、标题的组件过滤。在工单流程AI配置页面禁用的字段也不传给AI
    2. 相当于只需要从工单AI配置列表中取启用的字段数据。
  3. 第二步:组件精简

    1. 执行逻辑:前后端沟通,给AI传数据时省略一些不需要它理解,不需要它编辑的字段。以此确保AItoken消耗可控、AI的输出回复不会被干扰。
    2. 比如说如下图,右边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)

词槽填充校验 ​

图片为词槽填充校校校流程图,背景为黑色。流程从“用户,系统交互”开始,经“用户,系统交互”判断是否为“用户,系统交互”后,进入“词槽,系统交互”判断是否为“词槽,系统交互”,再判断是否为“词槽,系统交互”等,涉及“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”“词槽,系统交互”

  1. AI语义理解与词槽填充

    1. 遇到 基础输入型,可进行语义提炼总结。
    2. 遇到 静态选项型,必须且只能从给定的 options 数组中挑选一模一样的字眼输出。
    3. 遇到 动态实体提取型,提取原话短语实体名称到enty_extract字段。
    4. 尽量可以可以填的话填值,如果确定无法提取或根据一般情况填值,则给值missing标记。
  2. Json判断

    1. 判断 Json格式是否合规,不合规则将clean_scheme的字段值填missing。以此之后实现前端至少可以渲染出来一张空工单卡片。
    2. Json合规后,则对不同类型的组件进行不同后端操作流程判断。
  3. 静态选项型

    1. 判断AI给到值是否在options里,不在的话填missing。在的话保留该值。
  4. 基础输入型

    1. 判断AI提取的值是否在数值范围内,不在的话强制截断。比如说字AI输出文本400字,这组件限输入300字,则截断到300字。数据的话如果超过,默认为最大的,如果小于,默认为最小的。时间同理。如若数值范围为空,则不做校验。
  5. 动态实体提取型

    1. 核心向量知识库

      • Rag向量知识库触发条件:formOnlyType 属于 ["Location", "Asset", "Device"]。

      • 执行动作:

        • 调用内部的向量数据库。
        • 使用大模型的提取词(如“一号冷水主机”)进行余弦相似度检索。
        • 命中规则:如果 Score > 0.85,提取最匹配的一项,将其标准的 ID、标准中文名存入卡片 JSON 中。
        • 未命中:如果 Score < 0.85 或 AI 没提取出来,value标为missing。
    2. 非向量知识库

      • 将enty_extract值作为查询参数,查询URL地址中对应的实体名称。模糊匹配,选取最符合的一个。如果没有匹配中的,则标missing。
  6. 判断当前字段均已填值(合适的值或missing)

  7. 将输出的字段结果融合之前没喂给AI的组件,解析成前端可以理解的工单流程需要的记录数据。并渲染卡片。

资产向量知识库 ​

【AI工单】6月资产语义底座## 暂不做

工单默认提示词【本期不做】 ​

原设计如下,现更改为,默认显示流程引擎中该工单的说明字段,支持更改配置。

业务类型默认业务描述
维修:Repair工单描述:用于处理各类硬件设备、设施系统、IT网络等发生故障、损坏或运行异常时的修复请求。
触发场景:用户提到“坏了、漏水、不通电、断网、异响、蓝屏、停机”及要求“派人来修”等恢复功能的诉求时,路由至此类型。
访客预约:Visit工单描述:用于外部人员来访前的身份登记、车牌录入、权限申请与通行码发放审批。
触发场景:用户提到“明天有人来、帮客户登记一下、外部人员进场、申请个通行证/车位”等涉及人员出入授权的诉求时,路由至此类型。
保洁:Cleaning工单描述:用于处理公共区域、办公空间、卫生间等物理环境的卫生打扫、垃圾清运与消杀除味任务。
触发场景:用户提到“太脏了、有积水、垃圾满了、打扫一下、派个阿姨、有异味、拖个地”等环境卫生诉求时,路由至此类型。
运送:Transport工单描述:用于安排专人将物品、标本、物资、文件等从 A 点安全护送/搬运至 B 点。
触发场景:用户提到“送个东西、搬点物资、把XX带到XX去、派个小车拉一下、护送”等位置转移诉求时,路由至此类型。
巡检:Inspection工单描述:用于安排人员按照既定路线或标准,对特定设备、点位或环境进行日常状态检查与数据记录(正常/异常)。
触发场景:用户提到“查房、去看看、查表、巡视一圈、检查运行状态、抄水表/电表”等预防性检查诉求时,路由至此类型。如果是发现坏了要求修,则应归为维修,而非巡检。
保养:Maintenance工单描述:用于对仍在正常运行的资产/设备进行定期的维护、润滑、深度清洁或更换易损件,以延长使用寿命。
触发场景:用户提到“做个保养、加点油、换滤网、年度维护、清洗空调内机”等非故障性的系统维护诉求时,路由至此类型。如果是发现坏了要求更换零件,则应归为维修,而非保养。
投诉:Complaint工单描述:用于收集和处理用户对后勤服务质量、工作人员态度、环境管理、餐饮卫生等引起不满的反馈。
触发场景:用户提到“态度差、不满意、饭菜难吃、一直没人管、乱收费、要投诉”等带有负面情绪的意见反馈时,路由至此类型。纯粹报修设备不属于投诉。
巡更:Patrol工单描述:用于安保人员按照规定时间打卡关键安全点位,进行防盗、防火、防隐患的专项治安巡逻。
触发场景:用户提到“保安巡视、打卡、查夜、安全巡逻、防盗检查”等涉及安防治安的定时打卡诉求时,路由至此类型。
  1. 工单字段配置

    1. 数据源:为了防止冗余信息干扰实施人员的视线(同时也为了防止无用字段被喂给大模型),前端在此区域的字段列表经过严格的过滤。

      • 权限过滤:系统读取该工单底层流程的数据,仅展示 defaultPerm为 E或 ER的组件。
      • 组件类型黑名单过滤:前端内置黑名单列表。若组件的 formOnlyType 属于以下类型,直接隐藏:分栏布局(ColumnLayout)、说明(Notes)、标题(Title)、图片(Pictures)、文件(Files)、手写签名(Signature)、计算公式(CalculationFormula)、关联流程(RelatedFlow)、网页(URL)、语音录入(Voice)、明细(Detail)
    2. 字段基础信息区:显示字段名称、字段formOnlyType、字段【tagtype请参考本文档3.3.3字段清洗【AI工单】一键工单草稿】、权限标签(选填(E)、必填(ER))

    图片展示的是AI工单中“投诉类型”字段的设置界面。该字段为选填类型,允许AI提取功能已关闭。下方有“AI词槽提取指令”区域,提示“原封不动提取名词”。该图片与文档中“字段基础信息区”部分内容对应,用于说明字段的类型、权限标签及AI词槽提取指令设置界面情况。

    1. 允许 AI 提取开关:默认为开。

      • 开启态:该字段将被纳入后端的 Clean_Schema,在用户进行自然语言交互时,大模型会尝试为其提取并填充内容。
      • 关闭态:开关变灰。下方的【AI 词槽提取指令】文本框将变为半灰、不可编辑状态。
      • 后端联动:当开关关闭时,后端在组装发给大模型的 Schema 时会将该字段剔除,大模型将完全看不到此题。在前端生成的最终工单草稿中,此字段的值必然为空。
    2. AI 词槽提取指令

    • 组件类型:多行文本框。

    • 交互逻辑:

      • 支持配置人员手动修改为自定义的提示词。
      • 该提示词极其重要,它将作为大模型的局部 Prompt。可通过编写类似 “请提取用户原话中对态度的描述,如果只提到了慢,也归为态度差” 等业务规则,来精准干预大模型的提取结果,减少出现幻觉。
    • 默认值:系统根据该字段的formOnlyType和TagType,将自动回显/注入内置的通用默认提示词(参见下表)。

字段默认提示词 ​

以下是旧设计,目前简化设计,暂时显示为空的样式。

组件组件formOnlyTypeTagType组件instruction组件原始代码参考
单行文本Texttext请精准提炼用户原话中关于“{name}”的核心名词或短语,并填入 content 属性中。如未提及请将content置空。若minLength、maxLength两者均存在且 > 0,则填入的文本字数严格限制在 {minLength} 到 {maxLength} 个字符之间。
{
"id": "flyflow_form_245380676200",
"identifier": "Text",
"formOnlyType": "Text",
"perm": "E",
"icon": "EditPen",
"name": "单行文本",
"type": "Input",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "单行文本",
"placeholder": "请填写",
"props": {
"value": "",
"isBlank": false,
"regex": "",
"regexDesc": ""
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "minLength",
"name": "最小长度"
},
{
"id": "maxLength",
"name": "最大长度"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 0
}
多行文本MultilineTexttext请详细记录用户原话中对“{name}”的完整描述,可适度梳理逻辑使其通顺后填入 content 属性中。如未提及请将content置空。若minLength、maxLength两者均存在且 > 0,则填入的文本字数严格限制在 {minLength} 到 {maxLength} 个字符之间。
{
"id": "flyflow_form_245388475483",
"identifier": "MultilineText",
"formOnlyType": "MultilineText",
"perm": "E",
"icon": "More",
"name": "多行文本",
"type": "Textarea",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "多行文本",
"placeholder": "请填写",
"props": {
"value": "",
"isBlank": false
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "minLength",
"name": "最小长度"
},
{
"id": "maxLength",
"name": "最大长度"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 1
}
富文本RichTexttext请详细提取用户描述中涉及“{name}”的完整过程与具体要求,填入 content 属性中。如未提及请将content置空。若minLength、maxLength两者均存在且 > 0,则填入的文本字数严格限制在 {minLength} 到 {maxLength} 个字符之间。
{
"id": "flyflow_form_246785745020",
"identifier": "RichText",
"formOnlyType": "RichText",
"perm": "E",
"icon": "Memo",
"name": "富文本",
"type": "RichText",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "富文本",
"placeholder": "请配置",
"props": {
"value": {
"html": "",
"text": ""
},
"isBlank": false
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 25
}
数字Numbernumber仅从原话中提取关于“{name}”的阿拉伯数字,去除汉字及单位,填入 content 属性中。如未提及请将content置空。
{
"id": "flyflow_form_245983396811",
"identifier": "Number",
"formOnlyType": "Number",
"perm": "E",
"icon": "Edit",
"name": "数字",
"type": "Number",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "数字",
"placeholder": "请填写",
"props": {
"sum": false,
"isBlank": false,
"radixNum": 0
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "min",
"name": "最小值"
},
{
"id": "max",
"name": "最大值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
},
{
"id": "radixNum",
"name": "小数位数"
}
],
"formIndex": 4
}
金额Moneynumber仅从原话中提取关于“{name}”的阿拉伯数字,去除汉字及单位,填入 content 属性中。如未提及请将content置空。
{
"id": "flyflow_form_245995183687",
"identifier": "Money",
"formOnlyType": "Money",
"perm": "E",
"icon": "Money",
"name": "金额",
"type": "Money",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "金额",
"placeholder": "请填写",
"props": {
"sum": false,
"isBlank": false,
"radixNum": 0
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "min",
"name": "最小值"
},
{
"id": "max",
"name": "最大值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
},
{
"id": "radixNum",
"name": "小数位数"
}
],
"formIndex": 5
}
评分Scorenumber提取用户表达的评分、星级或满意度数字。提取整数int填入content中
如未提及请将content置空。
{
"id": "flyflow_form_246667735818",
"identifier": "Score",
"formOnlyType": "Score",
"perm": "E",
"icon": "StarFilled",
"name": "评分",
"type": "Score",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "评分",
"placeholder": "请评分",
"props": {
"value": 0,
"isBlank": false,
"radixNum": 1,
"halfSelect": false,
"max": 10,
"min": 1
}
日期Datedate提取关于“{name}”的日期(如明天、下周一等),格式化为 YYYY-MM-DD 填入 content 属性中。
如未提及请将content置空。
{
"id": "flyflow_form_246006695531",
"identifier": "Date",
"formOnlyType": "Date",
"perm": "E",
"icon": "Calendar",
"name": "日期",
"type": "Date",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "日期",
"placeholder": "请选择",
"props": {
"value": "",
"isBlank": false,
"defaultRoot": false,
"radixNum": 0
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "min",
"name": "最小值"
},
{
"id": "max",
"name": "最大值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 6
}
日期时间DateTimedate提取关于“{name}”的具体日期和时间,格式化为 YYYY-MM-DD HH:mm:ss 填入 content 属性中。
如未提及请将content置空。
{
"id": "flyflow_form_246030379955",
"identifier": "DateTime",
"formOnlyType": "DateTime",
"perm": "E",
"icon": "AlarmClock",
"name": "日期时间",
"type": "DateTime",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "日期时间",
"placeholder": "请选择",
"props": {
"value": "",
"isBlank": false,
"defaultRoot": false,
"radixNum": 0
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "min",
"name": "最小值"
},
{
"id": "max",
"name": "最大值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 7
}
时间Timedate提取关于“{name}”的具体时刻(如上午十点),格式化为 HH:mm:ss 填入 content 属性中。如未提及请将content置空。
{
"id": "flyflow_form_246052209512",
"identifier": "Time",
"formOnlyType": "Time",
"perm": "E",
"icon": "Timer",
"name": "时间",
"type": "Time",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "时间",
"placeholder": "请选择",
"props": {
"value": "",
"isBlank": false,
"defaultRoot": false,
"radixNum": 0
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "min",
"name": "最小值"
},
{
"id": "max",
"name": "最大值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 8
}
单项选择SelectAssemble
dataFrom == 1 or isHub==false
select_single这是一道关于“{name}”的单选题。必须且只能只能从Options 数组["option1"、"option2"、"option3"...]中挑选唯一合适的一项,原样填入 selected_option 中。如未提及请将selected_option置空。
{
"id": "flyflow_form_246387228894",
"identifier": "SelectAssemble",
"formOnlyType": "SelectAssemble",
"perm": "E",
"icon": "Select",
"name": "单项选择",
"type": "SelectAssemble",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "单项选择",
"placeholder": "请选择",
"props": {
"privateVal": false,
"expand": false,
"clientHttpConfig": {
"isHub": true,
"url": "/infra-workflow/api/hub/call",
"method": "POST",
"params": {
"id": ""
},
"kv": {
"key": "key",
"value": "value"
}
},
"dataFrom": 1,
"value": [
{
"key": "",
"value": ""
}
],
"isBlank": false,
"options": [
{
"key": "1",
"value": "张三"
},
{
"key": "2",
"value": "李四"
},
{
"key": "3",
"value": "王五"
}
]
}
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置空。
{
"id": "flyflow_form_246336036370",
"identifier": "Cascade",
"formOnlyType": "Cascade",
"perm": "E",
"icon": "Fold",
"name": "级联单选",
"type": "Cascade",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "级联单选",
"placeholder": "请选择",
"props": {
"clientHttpConfig": {
"isHub": true,
"url": "/infra-workflow/api/hub/call",
"method": "POST",
"params": {
"id": ""
}
},
"dataFrom": 1,
"value": {},
"isBlank": false,
"options": [
{
"uniId": "flyflow_form_cascade_247154669167",
"key": "1",
"label": "选项1大类",
"children": [
{
"uniId": "flyflow_form_cascade_247248056789",
"key": "1.1",
"label": "选项1,1",
"children": []
},
{
"uniId": "flyflow_form_cascade_247360509281",
"key": "1.2",
"label": "选项1.2",
"children": []
}
]
},
{
"uniId": "flyflow_form_cascade_247457501805",
"key": "2",
"label": "选项2大类",
"children": [
{
"uniId": "flyflow_form_cascade_247686902920",
"key": "2.1",
"label": "选项2.1",
"children": []
}
]
}
],
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 9
}
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置空。
{
"id": "flyflow_form_246413559861",
"identifier": "MultiSelectAssemble",
"formOnlyType": "MultiSelectAssemble",
"perm": "E",
"icon": "Finished",
"name": "多项选择",
"type": "MultiSelectAssemble",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "多项选择",
"placeholder": "请选择",
"props": {
"privateVal": false,
"expand": false,
"clientHttpConfig": {
"isHub": true,
"url": "/infra-workflow/api/hub/call",
"method": "POST",
"params": {
"id": ""
},
"kv": {
"key": "key",
"value": "value"
}
},
"dataFrom": 1,
"value": [
{
"key": "",
"value": ""
}
],
"isBlank": false,
"options": [
{
"key": "1",
"value": "机电故障"
},
{
"key": "2",
"value": "it故障"
},
{
"key": "3",
"value": "网络故障"
}
]
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 12
}
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置空。
{
"id": "flyflow_form_246361553890",
"identifier": "MultiCascade",
"formOnlyType": "MultiCascade",
"perm": "E",
"icon": "Fold",
"name": "级联多选",
"type": "MultiCascade",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "级联多选",
"placeholder": "请选择",
"props": {
"clientHttpConfig": {
"isHub": true,
"url": "/infra-workflow/api/hub/call",
"method": "POST",
"params": {
"id": ""
}
},
"dataFrom": 1,
"value": [],
"isBlank": false,
"options": [
{
"uniId": "flyflow_form_cascade_247867961898",
"key": "1",
"label": "选项1大类",
"children": [
{
"uniId": "flyflow_form_cascade_247941089003",
"key": "1.1",
"label": "选项1.1",
"children": []
},
{
"uniId": "flyflow_form_cascade_248084989668",
"key": "1.2",
"label": "选项1.2",
"children": []
}
]
},
{
"uniId": "flyflow_form_cascade_248215065903",
"key": "2",
"label": "选项2大类",
"children": []
}
],
"optionalRange": 3
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 10
}
MultiCascade
isHub==true 且 dataFrom == 2 则是动态URL型
entity_multi这是一道关于“{name}”的多选题。请你从原话中提取和{name}相关的值,并将结果以纯字符串数组的格式填入 enty_extract 属性中。如未提及请将enty_extract置空。
单用户SingleUserentity_single从原话中原封不动截取符合“{name}”身份的一名人员姓名,填入 enty_extract 属性中。如未提及请将enty_extract置空。
{
"id": "flyflow_form_246434873545",
"identifier": "SingleUser",
"formOnlyType": "SingleUser",
"perm": "E",
"icon": "User",
"name": "单用户",
"type": "SelectUser",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "单用户",
"placeholder": "请选择",
"props": {
"value": [],
"isBlank": false,
"self": true,
"multi": false,
"defaultRoot": false,
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 13
}
单部门SingleDepartmententity_single从原话中原封不动截取符合“{name}”身份的一个部门、科室名称,填入 enty_extract 属性中。
{
"id": "flyflow_form_246474365724",
"identifier": "SingleDepartment",
"formOnlyType": "SingleDepartment",
"perm": "E",
"icon": "OfficeBuilding",
"name": "单部门",
"type": "SelectDept",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "单部门",
"placeholder": "请选择",
"props": {
"value": [],
"isBlank": false,
"self": true,
"multi": false,
"defaultRoot": false,
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 15
}
空间位置Locationentity_single原封不动提取原话中描述“{name}”的物理空间、楼层名词组合,填入 enty_extract 属性中。
{
"id": "flyflow_form_246517384097",
"identifier": "Location",
"formOnlyType": "Location",
"perm": "E",
"icon": "Fold",
"name": "空间位置",
"type": "Multilayer",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "级联",
"placeholder": "请选择",
"props": {
"clientHttpConfig": {
"dataFrom": 1,
"url": "/infra-common/api/location/getLocationTreeV3",
"method": "POST",
"params": {},
"kv": {
"key": "id",
"value": "name"
}
},
"value": {},
"isBlank": false,
"options": [],
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 17
}
地区Areaentity_single原封不动提取原话中描述“{name}”的省份或城市或地区的一个名词,填入 enty_extract 属性中。
{
"id": "flyflow_form_246646394991",
"identifier": "Area",
"formOnlyType": "Area",
"perm": "E",
"icon": "Position",
"name": "地区",
"type": "Area",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "地区",
"placeholder": "请选择",
"props": {
"value": {},
"isBlank": false
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 20
}
设备名称Deviceentity_single原封不动提取原话中提到的“{name}”的具体名称或型号或设备类型,填入 enty_extract 属性中。
资产名称Assetentity_single原封不动提取原话中提到的关于“{name}”的固定资产名称,填入 enty_extract 属性中。
后勤人员LogisticsPersonnelentity_single提取原话中提到的所有符合“{name}”身份的人员姓名,必须以纯字符串的格式填入 enty_extract 中。
{
"id": "flyflow_form_359615619432",
"identifier": "LogisticsPersonnel",
"formOnlyType": "LogisticsPersonnel",
"perm": "E",
"icon": "User",
"name": "后勤人员",
"type": "GroupUser",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "单用户",
"placeholder": "请选择",
"props": {
"value": [],
"isBlank": false,
"self": true,
"multi": false,
"defaultRoot": false,
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 2
}
LogisticsPersonnelentity_multi提取原话中提到的所有符合“{name}”身份的人员姓名,必须以纯字符串数组的格式填入 enty_extract 中。
{
"id": "flyflow_form_359649104778",
"identifier": "LogisticsPersonnel2",
"formOnlyType": "LogisticsPersonnel",
"perm": "E",
"icon": "User",
"name": "后勤人员2",
"type": "GroupUser",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "单用户",
"placeholder": "请选择",
"props": {
"value": [],
"isBlank": false,
"self": true,
"multi": true,
"defaultRoot": false,
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 3
}
多用户MultiUserentity_multi提取原话中提到的所有符合“{name}”身份的人员姓名,必须以纯字符串数组的格式填入 enty_extract 中。
{
"id": "flyflow_form_246454382176",
"identifier": "MultiUser",
"formOnlyType": "MultiUser",
"perm": "E",
"icon": "User",
"name": "多用户",
"type": "SelectMultiUser",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "多用户",
"placeholder": "请选择",
"props": {
"value": [],
"isBlank": false,
"self": true,
"multi": true,
"defaultRoot": false,
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 14
}
多部门MultiDepartmententity_multi提取原话中符合“{name}”描述的所有部门/科室名称,必须以纯字符串数组的格式填入 enty_extract 中。
{
"id": "flyflow_form_246498911215",
"identifier": "MultiDepartment",
"formOnlyType": "MultiDepartment",
"perm": "E",
"icon": "OfficeBuilding",
"name": "多部门",
"type": "SelectMultiDept",
"required": false,
"defaultPerm": "E",
"printable": true,
"typeName": "多部门",
"placeholder": "请选择",
"props": {
"value": [],
"isBlank": false,
"self": true,
"multi": true,
"defaultRoot": false,
"optionalRange": 1
},
"dynamicFormConfig": [],
"dynamicForm": [
{
"id": "value",
"name": "值"
},
{
"id": "perm",
"name": "表单权限"
},
{
"id": "required",
"name": "是否必填"
}
],
"formIndex": 16
}
巡回运送点TransportRoutesentity_multi提取要求巡回运送的所有符合“{name}”的地点/科室名称,必须以纯字符串数组的格式填入 enty_extract 中。
巡检点InspectionObjectsentity_multi提取要求进行巡检的所有符合“{name}”的对象/设备/地点名称,必须以纯字符串数组的格式填入 enty_extract 中。
巡更点Patrolpointentity_multi提取要求进行保安巡更的所有符合“{name}”的关键点位名称,必须以纯字符串数组的格式填入 enty_extract 中。
保养点MaintenanceObjectsentity_multi提取需要被保养的所有符合“{name}”的设备或设施名称,必须以纯字符串数组的格式填入 enty_extract 中。
保洁位置CleaningObjectsentity_multi提取要求进行保洁打扫的所有符合“{name}”的区域名称,必须以纯字符串数组的格式填入 enty_extract 中。
展品巡检ExhibitInspectionObjectsentity_multi提取需要巡检的所有符合“{name}”的展项名称,必须以纯字符串数组的格式填入 enty_extract 中。
展品保养ExhibitMaintenanceObjectsentity_multi提取需要保养的所有符合“{name}”的展品名称,必须以纯字符串数组的格式填入 enty_extract 中。
备品备件SparePartsentity_multi提取本次需要的关于“{name}”的备品备件名称,必须以纯字符串数组的格式填入 enty_extract 中。
打印耗材PrintingConsumablesentity_multi提取本次需要的关于“{name}”的打印耗材名称,必须以纯字符串数组的格式填入 enty_extract 中。

Released under the Private License.