Skip to content

原始飞书文档:【AI工单】7月多模态输入、多轮交互、组件优化、工单防重作者:龚菲

【AI工单】7月多模态输入、多轮交互、组件优化、工单防重 ​

墨刀原型 #AI-gf-分享

注:此处为飞书文档同步引用块(源文档 token:VyfedKZuEo4FxOxDyFOcwY1zn0b,源块:UPxqdKjigsfPFnbNoTsc1AVMngf)

多模态输入【P0】 ​

目标说明 ​

  1. 兼容现有流程引擎的自由搭建能力,保留文本、ASR 文本、语音原始文件、图片视频原始文件,将图片视频、语音原始文件适配到Voice、Pictures,不破坏当前“用户手动核对卡片并手动提交”的业务闭环。
  2. 图片视频需要随着文本、或者有效录音一同上传。
组件标识符典型用途本方案映射对象当前组件截图
语音组件Voice问题描述、备注、补充说明原始音频文件 + ASR 转写文本 + 录音时长
图片组件Pictures现场图片、报修图片、图片多张图片临时文件 + 顺序 + 缩略图

业务流程图 ​

多模态输入业务流程图

前端交互样式 ​

输入框 ​

模式状态2说明截图
无图片文本输入
  1. 默认为文本输入
  2. 默认提示文本“请输入您的需求”
  3. 左侧:相机icon
  4. 右侧:语音切换的icon,点击则切换到语音输入模式。切换模式不会把图片清空。
  5. 如果有文本输入,则语音切换icon变成上传的按钮,点击则可以发送消息。该状态下无法切换成语音输入模式。
录音输入
  1. 默认提示文本“请按住说话”
  2. 左侧:相机icon
  3. 右侧:键盘文字切换icon,点击则切换到文本输入模式。
  4. 点击请按住说话,则进入录音监听阶段。
    • 上滑到上面区域,则那个区域变个颜色,这个时候松手,则取消发送。
    • 如果在发送区域松开手,若ASR返回有结果,消息发送。
    • 若ASR 返回空结果,弹出提示"未识别到有效语音,请重新说一遍~",不发送消息
有图片文本输入
-无输入内容
  1. 如果无文本输入,则不可发送消息,即不可单独只发送图片给AI
文本输入
-有输入内容
-图片未上传成功
  1. 如果有文本输入and有图片输入and有任意图片视频未成功(含上传中和上传失败),则语音切换icon变成上传的按钮,按钮置灰,点击则弹出提示弹窗“请上传成功图片再发送~”
文本输入
-有输入内容
-图片上传成功
  1. 如果有文本输入and有图片输入and所有图片视频上传成功,则语音切换icon变成上传的按钮,点击则可以发送消息。图片和文本一起发送
  2. 点击发送结束发送后,输入框文字与图片暂存区立即同步清空。
这张图展示了多模态输入相关的交互界面示意,上方是带有输入功能的操作界面预览,设有“工单创建”“会议预定”两个功能按钮,还有一处模拟的文本输入框,界面上方的四个功能图标里已有一个显示语音类输入标识,其余三个为图片图标,均带有取消标识。下方黄色标注框内标注了编号13,说明该场景对应“文本输入(有图片输入框有文本,图片上传成功)”的状态,相关内容关联多模态输入的业务场景,是对图片上传成功时文本输入状态的直观呈现。
语音输入
-图片未上传成功
  1. 如果图片输入有未成功的(包含上传中和上传失败的),那输入录音发送后,不把录音内容发送给AI
  • 如果ASR成功,则输入框切换成文本输入框,把ASR返回结果自动填入文本输入框。
  • 如果ASR失败,则还是录音输入,弹出提示弹窗“未识别到有效语音 请重新说一遍~”
图片展示的是AI工单语音输入未成功时的界面。上方有“未识别到有效语音 请重新说一遍~”的提示弹窗。下方是语音输入区域,提示“请按住说话”,并有相机和键盘图标。底部是输入内容区域,显示“语音输入(但是图片有未上传成功的,ASR失败)”及“龚菲”字样。该图片与文档中关于语音输入未成功时的交互样式说明对应,直观呈现了相关操作及提示情况。
语音输入
-图片上传成功
  1. 如果图片上传成功,在语音输入发送后,图片与ASR转的文本一起作为输入发给AI,图片暂存区立即同步清空。

图片&语音 ​

类型说明截图
图片触发方式
  1. 点击底部工具栏的“照相机”图标。
    • 拍照: 唤起原生相机。拍照后确认图片,自动关闭拍照页面,已拍的图片存进暂存区。
    • 从相册选择: 点击左下角唤起系统相册。支持多选(最多 10 张,若已暂存 n 张,则相册可选上限为 10-n)。
    • 由于组件现在支持上传视频,所以本次相册需要支持选择视频,拍摄视频。
图片暂存区排版
  1. 位置: 输入框上方,业务快捷键(工单创建、会议预定)之上,图片以缩略图平,单行横向滚动。用户可删除、重录、预览。
  2. 最大数量限制: 10 张。达到 10 张后,相机图标变为置灰状态,点击提示“最多上传 10 张图片哦~”
  3. 图片状态:
    • 上传中: 图片上方覆盖 50% 黑透明蒙层,中心显示白色 Loading 转圈。此刻点击无效果。
    • 成功: 蒙层消失,点击“上传成功”状态的图片缩略图,弹出全屏预览组件(支持左右滑动切换,暂时不需要手势放大缩小功能)点击缩略图的其他区域,则自动关闭这个缩略图。
    • 失败:图片上方覆盖 50% 黑透明蒙层,中心显示红色“重试”图标及文字。点击图片任何区域触发重新上传。
  4. 删除图片:所有图片右上角出现带“叉号 (x)”按钮,点击则删除图片。
  5. 退出该应用后,暂存区图片不需保存。清空即可
图片展示了自文档中介绍多模态输入功能时,展示智能助理界面。左侧显示“你好,员工A!”及“探索未知,化繁为简,还可以随时向我下达指令哦”等文字,下方有“文本输入(仅有图片)”选项。右侧在“文本输入(仅有图片)”下方提示“已上传1张图片,所以相机icon变灰,点击删除出提示弹窗。”。该图片直观呈现了智能助理界面及图片上传提示,与上下文介绍的多模态图片上传功能相关。
图片上传
  1. 上传图片,和消息分开显示。如果图片超过五个(前端可以根据实际一行最多能显示多少个图片,自行决定超过多少个蒙蒙版),则最右侧那个图片蒙灰色蒙版,并且显示+数量的提示。
  2. 支持点击图片(包含灰色蒙版那个+数量的),则弹出图片的预览图。支持左右滑动切换图片或视频,点击缩略图的其他区域,则自动关闭这个缩略图。
图片展示了AI工单应用的智能助理界面。界面上上显示“你好,员工A!探索未知,化繁为简。您可以随时向我下达指令或描述需求。”下方有五个功能图标,分别为“+1”(添加工单)、“+2”(添加工单)、“+3”(添加工单)、“+4”(添加工单)、“+5”(添加工单),其中“+1”“+2”“+3”被蓝色边框突出显示。底部有“工单创建”“会议预定”选项,输入框提示“请输入您的需求”,右侧有语音输入图标。该图与上下文介绍的AI工单应用功能相关,展示了图片触发方式中提到的“照相机”图标。
语音输入
  1. 如果点击语音输入的按钮,发送语音,则音频语音转文本。对话区显示转换后的文本作为输入,文本传给AI进行意图分析。
  2. 语音输入限制输入1分钟,当录音已经到50s时,录音上方出现“10s 后将自动发送”,10s开始倒计时,当倒计时结束,即数到0后,0不显示,把录音自动发送。效果可参考微信
图片展示的是智能助理界面,上方显示“您好,张三”,并有“10s后将自动发送”提示。界面中部有一个语音输入框,框内有蓝色麦克风图标和蓝色线条,下方有“松开发送”按钮。该图片与文档中“多模态输入”部分上下文相关,对应“语音”输入方式,直观呈现了语音输入时的界面样式及操作提示,辅助说明智能助理支持语音输入功能。

多个同类组件时的匹配规则 ​

  1. 关于voice的小优化:由于目前voice组件有文本输入框,并且常成为描述组件,所以目前把voice加入webAI配置中,AI会根据内容提炼文本填入Voice文本组件中。

    状态说明
    若工单只有 1 个 Pictures 组件 将包内所有图片全部填入,如果超过上限,多余的图片直接省略丢弃。
    若工单有 多个 Pictures 组件
    • 把图片按序往组件里塞,直到塞满它的上限(比如上限5张)。
    • 如果还有多余的图,往第二个图片组件2里塞,直到塞满。
    • 依此类推,直到图片分完或者组件全填满。
    若工单只有 1 个 Voice 组件 绑定原始语音音频。
    若工单有 多个 Voice 组件
    • 默认投放: 语音音频填入 Schema 顺序中的第一个组件。
    • 其余组件: 保持空置(由用户在卡片内手动点击二次唤起语音录制)。

图片识别方案设计 ​

目标说明 ​

  1. 定位:本轮图片识别不负责选工单类型。图片识别的唯一作用是——用户可能只说了一句话(如"水管爆了"),照片里包含了大量文字说不清的信息(哪个设备坏了、多严重、在哪、铭牌编号等),图片识别负责把这些视觉信息变成结构化文字,注入词槽提取流程,丰富工单字段内容。若用户描述与识别结果矛盾(如用户说"空调坏了"但OCR读到"水管"),以用户文本为准.

  2. 技术路径已经初步验证,注意点如下

    • 模型本身需要支持图片识别、部署的时候需要部署多模态的参数,不要部署只支持文本。目前部署的Qwen3.6-24b支持多模态
    • 需要再dify模型供应商里,把模型的视觉支持打开。
    • 在配流程节点的时候,注意需要启用视觉的按钮,并且把图片的那个参数配置到视觉的那栏。
    • 如果图片压缩处理打算在dify流程用python写,记得需要在dify的values.yaml 文件sandbox 的配置李安库装环境变量,别直接在流程里下载pillow库(pillow是图片处理需要的库)。

业务流程图 ​

图片识别方案业务流程图

图片压缩 ​

  1. 图片上传dify有大小限制,因此需要进行两种操作

    • 压缩处理:动态尺度缩放+智能质量压缩,多张张图同时压缩,不等前一张完成
    • 强制格式统一:将所有图片统一转换为 JPEG 格式(RGB模式),规避透明层或特殊编码导致的解析失败。
    • 容错兜底机制:处理失败时自动记录错误原因,并返回原始链接,防止流程彻底中断。
    • 调整Dify系统上传限制:默认情况下,Dify 限制上传文件大小为 10MB,我们需要放大点。所以需要在dify本地部署的文件里调整。建议检查ConfigMap里的UPLOAD_FILE_SIZE_LIMIT和UPLOAD_IMAGE_FILE_SIZE_LIMIT字段。建议放大至 20MB

视觉识别增强模块 ​

  1. 目标导向的缺陷描述生成

    1. 解决问题:一个图片可能背景很杂乱,难以捕捉重点,所以需要提示AI可能需要主要关注的场景
    2. 做法:由于目前可能拍照的工单场景主要是报修、保洁。所以我们可以引导AI对图片进行探针式问询,
    • 保洁单指令:强制扫描材质表面、液态反光、边缘缝隙。
    • 维修单指令:强制扫描连接处、指示灯、结构形变、铭牌文字。
  2. 缺陷分步推理Visual CoT

    1. 解决问题:有些故障需要"推理"——比如"水管破了",可能先看到地面积水,再追溯是哪里漏的。比如说,如果不加这一步
    • 普通输出:厕所漏水。
    • Visual CoT 输出:经视觉初步判定,渗漏源位于洗手台下方不锈钢弯管接口处,伴有持续性滴漏,地面已产生约0.5平米积水。
    1. 做法:要求AI设计分步流程:

      • 实体拆解:先找出图中的物体(门、窗、灯、水管、地面、水龙头、空调、一摊积水等等)
      • 状态属性描述:判断每个物体的状态(完好/破损/脏污/不亮/漏水/天花板没有变色或潮湿痕迹/地砖有没有塌陷等)
      • 空间与因果推理:将视觉事实串成逻辑链,判断他们之间有什么关系,比如“天花板干燥,排除了楼上漏水的可能。”、“积水位于管接口的正下方。”、“管接口挂着水珠,说明它是渗漏源。”、“根据水迹大小,这属于持续性渗漏。”
      • 结论初步描述:根据各个物体的逻辑链关系,最后得出一个逻辑结论描述。
  3. 缺陷定位引用

    1. 解决问题:维修人员拿到工单后,想知道"具体是哪扇门、哪扇窗有问题"。
    2. 做法:识别缺陷在画面中的坐标,并自动转化为空间位置描述(如:“画面左上角,靠近天花板处”、"左侧第二扇窗户玻璃碎裂")
  4. 文本ocr

    1. 解决问题:工单流程中资产 ID、型号等核心数据录入难、易出错。
    2. 做法:强制扫描图片中的资产标签、设备铭牌、房间号标牌等含文字的地方。输出文本
  5. 多图场景下的逻辑

    1. 千问3.6支持多张图同时传入,10张图一次调用完成,不拆成多次
    2. 要求对每张图单独分析后,输出一份综合结论。输出只输出这份综合结论

多轮交互与意图澄清【P1】 ​

想要实现的效果 ​

规则 ​

序号规则说明
1卡片唯一存活原则
  • 聊天流中永远只有一张可编辑的工单卡片
  • 当 AI 因用户修改而生成新卡片时,旧卡片半透明置灰,根据上次评审沟通,暂不做删除或收起等操作,只是置灰。
  • 用户可手动点击【作废】按钮使卡片失效
2穿插闲聊不置灰卡片
  • 工单上下文中,如果用户穿插问了一句闲聊(如"今天天气怎么样"),当前的工单卡片不会自动置灰
  • 只有当用户创建了新工单或修改了当前工单,旧卡片才会被置灰
3打断与恢复
  • AI 思考/输出中用户再次输入 → 旧思考被打断,气泡显示"抱歉,该问题的思考已中止",然后处理最新输入
  • 打断不影响当前卡片状态。即AI输出新工单后,原来的工单才置灰。如果在输出、思考中被终止了没来得及输出新工单,那原来的工单还是原来的状态。不会被更改。
4修改工单用卡片数据+本轮输入,不用聊天记录
  • 修改时看:当前卡片JSON+本轮输入
  • 新建时看:上次提交工单后的+最近三轮的 对话。以此避免已提交工单的残留信息污染当前卡片

【6/27 改】根据评审结果,本轮工单暂不设计较重的多轮交互,直接将近三轮的文本对话+本轮的图片+本轮的音频给到AI,由AI自己进行判断是不是工单流程,重新生成渲染工单卡片。旧卡片的信息、图片与音频不会传给AI.

URL组件优化【P0】 ​

序号组件数据来源业务是否有该字段筛选优先级是否已完成
1单项选择(配置了url)
级联单选(配置了url)
多项选择(配置了url)
级联多选(配置了url)
【运维】专业组运维2.0应用-业务配置-专业组配置-专业名称有7月
【运维】是否紧急基础服务-数据管理-工单级别(workOrderLevel)无7月
【运送】目的科室运送服务应用-业务配置-运送点管理-类型为全部或目的点的运送点名称有7月
【运送】起始科室运送服务应用-业务配置-运送点管理-类型为全部或起始点的运送点名称有7月
【运送】运送类型运送应用-业务配置-运送类型有7月
【运送】运送工具运送应用-业务配置-数据字典-运送工具无7月
【投诉】投诉类型投诉管理应用-业务配置-启用的投诉类型名称有7月
【保洁】保洁组保洁应用-业务配置-保洁人员管理有7月
【运送】运送组运送服务应用-业务配置-运送人员分组有7月
【保洁】保洁类型保洁应用-业务配置-保洁类型有7月
【运送】详细地址基础服务-空间位置--
【保洁】保洁组成员保洁应用-业务配置-保洁人员管理-里面所有保洁组的所有成员--
【NIMBUS】登录login用不到--
【运送】运送组人员运送服务应用-业务配置-运送人员分组-里面所有运送小组里面的小组人员--
【报修】专业组成员--
【报修】专业组负责人--
【展品运维】展品名称展品管理应用-展品管理-展品台账里的展品名称--
【保洁】保洁组负责人--
2单用户基础服务-用户管理-成员管理里的成员有--
3单部门基础服务-用户管理-成员管理里的部门有--
4多用户基础服务-用户管理-成员管理里的成员有--
5多部门基础服务-用户管理-成员管理里的部门有--
6空间位置AI中枢里的空间向量知识库6月√
7资产名称AI中枢里的资产向量知识库6月√
8后勤人员--
9设备名称AI中枢里的设备向量知识库--
10巡回运送点--
11巡检点--
12巡更点--
13保养点--
14保洁位置--
15展品巡检--
16展品保养--
17备品备件--
18打印耗材--

工单防重方案设计【P2】 ​

目标说明 ​

  1. 支持在webAI配置页面,增加一个AI防重开关的按钮,开启后的流程,将进行防重检测校验。如果用户发起的流程开启了这个校验,则会去查询24小时内该类进行中的工单,去进行AI检索匹配,如果发现有相似的工单,则移动端弹出疑似已有类似工单的弹窗。支持继续提交、催办、查看详情等操作。

业务流程图 ​

工单防重业务流程图

工单防重交互设计 ​

分组类型说明截图
webAI配置页面增加工单防重检测的开关滑块
  1. 增加工单防重检测的开关滑块,默认为开。提示文本:“检测 24h 内重复工单并引导催办”。
  2. 允许AI智能发起的提示文本“开启后用户可通过AI创建工单。
  3. 此处应用场景:比如访客预约,可能重复给人创建访客预约,关闭了配置就不会走到防重检测的逻辑了。
这是一张与工单防重相关的系统配置界面截图,对应文档中工单防重方案的交互设计内容,界面左侧为系统的流程配置板块,中间是工单类型的列表,右侧为“运维投诉”类工单的具体配置区域,其中涵盖工单整体配置、工单下各字段配置模块,各配置项旁设有“允许AI匹配”的开关,部分开关处于开启状态,界面底部还有“取消”和“保存”按钮。
列表增加工单防重显示字段
  1. 列表显示工单防重检测的一列,显示启用、禁用的状态字段
  2. 增加筛选字段工单防重,单选,可为空,为空则显示全部,选项“启用”、“禁用”
图片展示的是资产管理系统中流程管理界面。左侧有“资产管理系统”“流程类型”等导航栏。右侧上方有“流程名称”“流程标识符”等搜索栏,下方显示多个流程信息,如流程名称、 addCriterion
移动端发现疑似重复工单弹窗
  1. 当用户在工单卡片点击【提交工单】后,若触发防重逻辑,弹出此弹窗。每次提交工单,均需要做这个防重校验。
    • 警告图标与标题: “发现疑似重复工单”。
    • 副标题: “24小时内已有类似工单”。
    • 【我要催办】:点击则触发催办流程
    • 【查看重复工单详情】: 点击则跳转到重复工单的详情页面,从详情页返回,返回到AI这个应用中,AI应用之前已填的卡片信息不可因此丢失。
    • 【不是同个问题,坚持提交】: 点击则触发提交流程
  2. 如果触发重复工单弹窗,则工单卡片目前不可切换流程、提交、作废。
  3. 点击右上角的x,则关闭重复工单弹窗。点击其它区域,不会把弹窗关闭。
图片展示的是智能助理界面用户张三的交互界面。界面中智能助理询问是否是同个问题,坚持提交。下方显示已创建机电报修单,报修设备为照明灯具,位置在...,紧急程度为紧急,维修处理人系统自动分配。弹出窗口提示发现疑似重复工单,24小时内已有类似工单,有“我要办”和“查看重复工单详情”两个按钮。该图片与上下文紧密相关,直观呈现了工单防重交互设计中发现重复工 addCriterion的场景。
催办效果
  1. 用户点击后,无需进入任何二级页面或输入框。
    • 催办说明:流程工单内置,所有工单创建人和系统管理员,可对工单发起催办,催办只有一个催办的文本组件字段。自动抓取用户创建工单的文本输入(含 文本输入\ASR转文本后的的文本输入)。仅限纯文本,不携带本次上传的图片或语音原始链接。将文本输入自动填入催办说明。
    • 流程引擎需为 AI 助理开辟专有接口。允许任何有该工单发起权限的用户,通过此弹窗对非本人创建的疑似重复工单发起“催办”。催办发起人就是小程序登录账号用户。
  2. 催办成功后,弹窗消失,卡片替换为“催办成功”状态反馈图(见右侧效果图)
    • 副标题: “已将您的描述同步至重复工单的催办说明并提醒处理人。”
    • 查看工单最新进度 >>:跳转链接,点击则跳转到这个催办的工单详情
图片展示的是智能助理界面,上方显示“智能助理”,并有“您好,张三”
查看重复工单详情
  1. 跳转逻辑: 点击查看重复工单详情,跳转到移动端原生工单详情页。目前查看工单是有权限限制的,所以流程引擎需为 AI 助理开辟专有接口。允许任何有该工单发起权限的用户,通过此弹窗查看非本人创建的疑似重复工单。
  2. 返回机制 :用户左滑等退出工单详情后,需回到当前 AI 对话界面。当前 AI 对话内的卡片信息(包括用户已经手动修改过的内容、发现疑似重复工单弹窗)必须完整保留,不能触发重绘或数据丢失。
不是同个问题,坚持提交
  1. 触发提交工单的流程,提交成功则显示提交成功的卡片,失败显示失败的提示弹窗。

防重逻辑说明 ​

  1. 检索的工单来源

    • 工单类型:同模版的工单,比如提交的工单是机电报修工单,那防重检索的工单也需要是机电报修工单才行。IT报修工单不会纳入检索。
    • 工单状态:需要是未完成 (不包含撤销、终止的工单)
    • 创建时间:创建时间在当前时间 - 24 小时内。
    • 数据量业务调研:以当前写prd的时间6/5 16:25为例,查询数据量如下所示。除了基本为系统发起的巡检工单外,其它的数量少少的、
工单24小时内的工单数量未完成的数量
太湖-报修2.0210
太湖-巡检280
太湖-运送190
苏州科技馆-科技馆访客预约190
苏州科技馆-科技馆访客主动预约70
体育中心-维修(不确定是不是几类工单混合)33
体育中心-巡检服务32222
体育中心-访客流程10
博览中心-维修(不确定是不是几类工单混合)32
博览中心-巡检服务(机房)55
狮山广场-巡检18162
苏州湾-维修11
中环妇幼(禧华)-报修22
  1. 喂给AI去计算匹配的数据

    • 满足筛选条件的工单,把工单创建节点的组件字段给出,只需要给出组件名称、组件值即可。然后把工单卡片的组件名称、组件值,与满足筛选条件的工单组件名称、组件值进行相似度匹配。
    • AI 识别为“不重复”:跳过防重弹窗逻辑,直接走提交流程。
    • 多条“最像”工单:若 AI 判定有两条工单相似度极高且分值相同,后端返回创建时间最近的那一条。

移动端测试话术 ​

8楼小会议室灯坏了,一闪一闪的,加急找人来修一下

3楼地面有积水,需要人来拖一下

802的电脑打不开,屏幕是黑的。

把会所楼门口的快递搬到总部大楼8层。

明天上午十点到两点,有个李总来总部大楼办业务,给他登记下。

东塔10层空调漏水,把地毯弄湿了,赶紧找人修一下再把水拖了。

8楼北面的会议室门关不严,锁好像坏了。

裙楼B2层的地面有个大裂缝,推车经过很不方便,处理一下。

废弃 ​

多模态的多轮交互 ​

场景图片参加识别?图片进 Pictures?录音进 Voice?
工单创建 + 本轮发了图/录音✅ 识别✅✅
工单创建 + 本轮没发❌ 不识别❌ 不进卡片❌ 不进卡片
工单修改 + 本轮发了新图✅ 识别新图✅ 追加❌ 不进卡片
工单修改 + 本轮重新录音❌ 不识别❌ 不进卡片✅ 替换旧录音
闲聊❌ 不识别❌ 不进卡片❌ 不进卡片
工单创建/修改+上轮发了图/录音❌ 不识别❌ 不进卡片❌ 不进卡片

详细业务场景示例 ​

C++
Turn 1: 用户发送 "帮我预定会议室"
      → 走会议室流程
      → 是否存在活跃工单卡片=否

Turn 2:用户发送 "工单的紧急程度改紧急" 
      → 走生成工单的流程,输入=Turn1+Turn2
      → 生成 card_v1
      → 是否存在活跃工单卡片=是
      
Turn 3:用户自己手动修改组件点击提交按钮
      → 提交工单 
      → 是否存在活跃工单卡片=否  

Turn 4:用户长按录音发送 "今天天气太冷了,水结冰了" + [图A, 图B, 图C]
      → 没走到工单流程,走了闲聊之类的意图
      → 是否存在活跃工单卡片=否 

Turn 5: 用户长按录音发送 "水结冰所以水管爆了,帮我建个紧急报修工单啊" 
      → 走生成工单的流程,输入=Turn4+Turn5
      → 前端输入框图片暂存区清空
      → 生成 card_v2
      → 工单的picture组件里附加图片,Pictures = [图A, 图B, 图C],
      → 工单的Voice组件里附加音频Turn5
      → 是否存在活跃工单卡片=是

Turn 6:用户长按录音发送 "位置是二楼" (无新图片)       
      → 走更改工单的流程,输入=Turn6+card_v2
      → 基于card_v2,修改用户要改的数据,生成 card_v3.
      → 除要改数据外,其它字段基本继承旧工单,Pictures 继承 = [图A, 图B, 图C] 
      → 工单的Voice组件里附加音频Turn6
      → card_v2置灰
      → 是否存在活跃工单卡片=是
      
Turn 7:用户文本发送 "再加一张图" + [图D]
      → 走更改工单的流程,输入=Turn7+card_v3
      → 基于card_v3,修改用户要改的数据,生成 card_v4.
      → 其它字段继承旧工单,Pictures 继承再加入一张图 = [图A, 图B, 图C,图D] 
      → 工单的Voice组件里继承音频Turn6
      → card_v3置灰
      → 是否存在活跃工单卡片=是

Turn 8:用户点击提交按钮
      → 提交工单 
      → 是否存在活跃工单卡片=否

Released under the Private License.