fix(workflow): align non-motor accident extraction and evaluations

This commit is contained in:
Eric Wang
2026-10-21 15:34:11 +08:00
parent 3fe99e71fd
commit 248eb41c78
56 changed files with 7641 additions and 821 deletions
@@ -0,0 +1,24 @@
# 流程回归:非机动车撞固定物按本组口径机动车数量为0,检查事实保持、时间确认及0003分流。
name: browser_addon_non_motor_vehicle_all_info
clientMode: browser_addon
steps:
- input: "【开始】"
expect:
stageCode: "browser_addon.1001"
- input: "继续办理"
expect:
stageCode: "browser_addon.1002"
- input: "十分钟前我骑非机动车自己撞在路边石墩上,只有我这一辆非机动车,没有其他车辆或行人,没有人员伤亡,我还在现场。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"has_injury":false,"is_on_scene":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "browser_addon.0003"
form: {"vehicle_count":0}
replyNotMatches: "[??]"
@@ -0,0 +1,45 @@
# 电动自行车撞固定物:按本组口径机动车数量为0,完成时间确认及现场采集后进入0003,不追问汽车数量。
name: browser_addon_non_motor_vehicle_electric_bicycle
clientMode: browser_addon
steps:
- input: "【开始】"
expect:
stageCode: "browser_addon.1001"
- input: "继续办理"
expect:
stageCode: "browser_addon.1002"
- input: "我骑的是非机动车,电动自行车,撞到了路边的石墩子上。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员伤亡。"
expect:
stageCode: "browser_addon.1002"
form: {"has_injury":false,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
replyNotMatches: "(几辆|数量|是否.*非机动车|有没有.*非机动车)"
- input: "十分钟前发生的。"
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: "对的。"
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
replyMatches: "现场"
replyNotMatches: "几辆|数量|这个时间对吗"
- input: "我还在事故现场。"
expect:
stageCode: "browser_addon.0003"
form: {"has_non_motor_vehicle_hit":true,"has_injury":false,"is_on_scene":true,"vehicle_count":0}
replyMatches: "转接.*(人工|警员)|转.*人工"
replyNotMatches: "几辆|数量|这个时间对吗"
@@ -0,0 +1,33 @@
# 非机动车撞固定物时机动车数量为0;用户明确更正为一辆汽车后,数量更新为1。
name: browser_addon_non_motor_vehicle_explicit_correction
clientMode: browser_addon
steps:
- input: "【开始】"
expect:
stageCode: "browser_addon.1001"
- input: "继续办理"
expect:
stageCode: "browser_addon.1002"
- input: "我这里是一辆非机动车,撞到了路边的石墩子上。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
formAbsent: ["has_injury","accident_time","is_on_scene"]
replyMatches: "(有没有|是否).*受伤"
- input: "刚才说错了,我的是汽车,不是非机动车,事故只有我这一辆汽车,没有涉及非机动车或行人。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":false,"vehicle_count":1}
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员受伤,十分钟前发生的,我还在事故现场。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":false,"vehicle_count":1,"has_injury":false,"is_on_scene":true}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "browser_addon.2000"
@@ -0,0 +1,51 @@
# 流程回归:非机动车撞固定物按本组口径机动车数量为0,检查事实保持、时间确认及0003分流。
name: browser_addon_non_motor_vehicle_no_other_vehicle
clientMode: browser_addon
steps:
- input: "【开始】"
expect:
stageCode: "browser_addon.1001"
- input: "继续办理"
expect:
stageCode: "browser_addon.1002"
- input: "我现在没有按住说话,为什么也会记录进去?是不是有bug?"
expect:
stageCode: "browser_addon.1002"
formAbsent: ["has_injury","has_non_motor_vehicle_hit","vehicle_count","accident_cause","accident_time","is_on_scene"]
- input: "我这里是一辆非机动车,撞到了路边的石墩子上。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
formAbsent: ["has_injury","accident_time","is_on_scene"]
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员伤亡。"
expect:
stageCode: "browser_addon.1002"
form: {"has_injury":false,"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
replyNotMatches: "(有没有|是否).*非机动车"
- input: "我已经说过了,是撞在石墩子上,没有别的车子,就我自己的车子。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
replyMatches: "(什么时候|几点|事故.*时间)"
- input: "十分钟前。"
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
replyMatches: "现场"
- input: "我还在事故现场。"
expect:
stageCode: "browser_addon.0003"
form: {"has_non_motor_vehicle_hit":true,"is_on_scene":true,"vehicle_count":0}
@@ -0,0 +1,46 @@
# 流程回归:非机动车撞固定物按本组口径机动车数量为0,检查事实保持、时间确认及0003分流。
name: browser_addon_non_motor_vehicle_self_collision
clientMode: browser_addon
steps:
- input: "【开始】"
expect:
stageCode: "browser_addon.1001"
- input: "继续办理"
expect:
stageCode: "browser_addon.1002"
- input: "我这个是非机动车,然后自己撞在路边的石墩子上。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
formAbsent: ["has_injury","accident_time","is_on_scene"]
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员伤亡。"
expect:
stageCode: "browser_addon.1002"
form: {"has_injury":false,"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
replyNotMatches: "(有没有|是否).*非机动车"
- input: "没有别的车子,就我自己的车子。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
- input: "十分钟前发生的。"
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
replyMatches: "现场"
- input: "我还在事故现场。"
expect:
stageCode: "browser_addon.0003"
form: {"has_non_motor_vehicle_hit":true,"is_on_scene":true,"vehicle_count":0}
@@ -0,0 +1,17 @@
# 提取专项:明确只有非机动车时必须向前端发送机动车数量0,不能被空值比较吞掉。
name: browser_addon_non_motor_vehicle_zero_count_bundle
clientMode: browser_addon
steps:
- input: "【开始】"
expect:
stageCode: "browser_addon.1001"
- input: "继续办理"
expect:
stageCode: "browser_addon.1002"
- input: "十分钟前我骑非机动车自己撞在路边石墩上,只有我这一辆非机动车,没有其他车辆或行人,没有人员伤亡,我还在现场。"
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
@@ -0,0 +1,27 @@
# 提取专项:非机动车撞固定物按本组口径记录机动车数量0,后续补充“没有别的车”时保留0和非机动车事实。
name: browser_addon_non_motor_vehicle_zero_count_history
clientMode: browser_addon
steps:
- input: "【开始】"
expect:
stageCode: "browser_addon.1001"
- input: "继续办理"
expect:
stageCode: "browser_addon.1002"
- input: "我这里是一辆非机动车,撞到了路边的石墩子上。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
- input: "没有人员伤亡。"
expect:
stageCode: "browser_addon.1002"
form: {"vehicle_count":0}
- input: "我已经说过了,是撞在石墩子上,没有别的车子,就我自己的车子。"
expect:
stageCode: "browser_addon.1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
@@ -0,0 +1,24 @@
# 流程回归:非机动车撞固定物按本组口径机动车数量为0,检查事实保持、时间确认及0003分流。
name: direct_non_motor_vehicle_all_info
clientMode: direct
steps:
- input: "【开始】"
expect:
stageCode: "1001"
- input: "继续办理"
expect:
stageCode: "1002"
- input: "十分钟前我骑非机动车自己撞在路边石墩上,只有我这一辆非机动车,没有其他车辆或行人,没有人员伤亡,我还在现场。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"has_injury":false,"is_on_scene":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "0003"
form: {"vehicle_count":0}
replyNotMatches: "[??]"
@@ -0,0 +1,45 @@
# 电动自行车撞固定物:按本组口径机动车数量为0,完成时间确认及现场采集后进入0003,不追问汽车数量。
name: direct_non_motor_vehicle_electric_bicycle
clientMode: direct
steps:
- input: "【开始】"
expect:
stageCode: "1001"
- input: "继续办理"
expect:
stageCode: "1002"
- input: "我骑的是非机动车,电动自行车,撞到了路边的石墩子上。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员伤亡。"
expect:
stageCode: "1002"
form: {"has_injury":false,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
replyNotMatches: "(几辆|数量|是否.*非机动车|有没有.*非机动车)"
- input: "十分钟前发生的。"
expect:
stageCode: "1002"
form: {"vehicle_count":0}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: "对的。"
expect:
stageCode: "1002"
form: {"vehicle_count":0}
replyMatches: "现场"
replyNotMatches: "几辆|数量|这个时间对吗"
- input: "我还在事故现场。"
expect:
stageCode: "0003"
form: {"has_non_motor_vehicle_hit":true,"has_injury":false,"is_on_scene":true,"vehicle_count":0}
replyMatches: "转接.*(人工|警员)|转.*人工"
replyNotMatches: "几辆|数量|这个时间对吗"
@@ -0,0 +1,33 @@
# 非机动车撞固定物时机动车数量为0;用户明确更正为一辆汽车后,数量更新为1。
name: direct_non_motor_vehicle_explicit_correction
clientMode: direct
steps:
- input: "【开始】"
expect:
stageCode: "1001"
- input: "继续办理"
expect:
stageCode: "1002"
- input: "我这里是一辆非机动车,撞到了路边的石墩子上。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
formAbsent: ["has_injury","accident_time","is_on_scene"]
replyMatches: "(有没有|是否).*受伤"
- input: "刚才说错了,我的是汽车,不是非机动车,事故只有我这一辆汽车,没有涉及非机动车或行人。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":false,"vehicle_count":1}
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员受伤,十分钟前发生的,我还在事故现场。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":false,"vehicle_count":1,"has_injury":false,"is_on_scene":true}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "2000"
@@ -0,0 +1,51 @@
# 流程回归:非机动车撞固定物按本组口径机动车数量为0,检查事实保持、时间确认及0003分流。
name: direct_non_motor_vehicle_no_other_vehicle
clientMode: direct
steps:
- input: "【开始】"
expect:
stageCode: "1001"
- input: "继续办理"
expect:
stageCode: "1002"
- input: "我现在没有按住说话,为什么也会记录进去?是不是有bug?"
expect:
stageCode: "1002"
formAbsent: ["has_injury","has_non_motor_vehicle_hit","vehicle_count","accident_cause","accident_time","is_on_scene"]
- input: "我这里是一辆非机动车,撞到了路边的石墩子上。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
formAbsent: ["has_injury","accident_time","is_on_scene"]
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员伤亡。"
expect:
stageCode: "1002"
form: {"has_injury":false,"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
replyNotMatches: "(有没有|是否).*非机动车"
- input: "我已经说过了,是撞在石墩子上,没有别的车子,就我自己的车子。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
replyMatches: "(什么时候|几点|事故.*时间)"
- input: "十分钟前。"
expect:
stageCode: "1002"
form: {"vehicle_count":0}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "1002"
form: {"vehicle_count":0}
replyMatches: "现场"
- input: "我还在事故现场。"
expect:
stageCode: "0003"
form: {"has_non_motor_vehicle_hit":true,"is_on_scene":true,"vehicle_count":0}
@@ -0,0 +1,46 @@
# 流程回归:非机动车撞固定物按本组口径机动车数量为0,检查事实保持、时间确认及0003分流。
name: direct_non_motor_vehicle_self_collision
clientMode: direct
steps:
- input: "【开始】"
expect:
stageCode: "1001"
- input: "继续办理"
expect:
stageCode: "1002"
- input: "我这个是非机动车,然后自己撞在路边的石墩子上。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
formMatches: {"accident_cause":"^其他:(?=.*非机动车)(?=.*石墩).+"}
formAbsent: ["has_injury","accident_time","is_on_scene"]
replyMatches: "(有没有|是否).*受伤"
- input: "没有人员伤亡。"
expect:
stageCode: "1002"
form: {"has_injury":false,"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
replyNotMatches: "(有没有|是否).*非机动车"
- input: "没有别的车子,就我自己的车子。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
replyMatches: "(什么时候|几点|事故.*时间)"
- input: "十分钟前发生的。"
expect:
stageCode: "1002"
form: {"vehicle_count":0}
replyMatches: "我记录的时间是.*年.*月.*日.*点.*分.*这个时间对吗"
- input: 对
expect:
stageCode: "1002"
form: {"vehicle_count":0}
replyMatches: "现场"
- input: "我还在事故现场。"
expect:
stageCode: "0003"
form: {"has_non_motor_vehicle_hit":true,"is_on_scene":true,"vehicle_count":0}
@@ -0,0 +1,17 @@
# 提取专项:明确只有非机动车时必须向前端发送机动车数量0,不能被空值比较吞掉。
name: direct_non_motor_vehicle_zero_count_bundle
clientMode: direct
steps:
- input: "【开始】"
expect:
stageCode: "1001"
- input: "继续办理"
expect:
stageCode: "1002"
- input: "十分钟前我骑非机动车自己撞在路边石墩上,只有我这一辆非机动车,没有其他车辆或行人,没有人员伤亡,我还在现场。"
expect:
stageCode: "1002"
form: {"vehicle_count":0}
@@ -0,0 +1,27 @@
# 提取专项:非机动车撞固定物按本组口径记录机动车数量0,后续补充“没有别的车”时保留0和非机动车事实。
name: direct_non_motor_vehicle_zero_count_history
clientMode: direct
steps:
- input: "【开始】"
expect:
stageCode: "1001"
- input: "继续办理"
expect:
stageCode: "1002"
- input: "我这里是一辆非机动车,撞到了路边的石墩子上。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}
- input: "没有人员伤亡。"
expect:
stageCode: "1002"
form: {"vehicle_count":0}
- input: "我已经说过了,是撞在石墩子上,没有别的车子,就我自己的车子。"
expect:
stageCode: "1002"
form: {"has_non_motor_vehicle_hit":true,"vehicle_count":0}