lobster-travel-validation-20260617-115003.json 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. {
  2. "companyId": 338,
  3. "includeStress": true,
  4. "startedAt": "2026-06-17 11:48:52",
  5. "sections": {
  6. "template": {
  7. "passed": true,
  8. "workflowId": 18,
  9. "templateCode": "LOB_1781667526336",
  10. "source": "existing",
  11. "message": "travel template found"
  12. },
  13. "e2eDialogue": {
  14. "passed": false,
  15. "message": "NullPointerException",
  16. "exception": "java.lang.NullPointerException"
  17. },
  18. "aiGenerate": {
  19. "recordNo": "LOB_1781668163001",
  20. "generateUseLlm": false,
  21. "fallbackGenerate": true,
  22. "finalStatus": 1,
  23. "detail": {
  24. "conversationModel": {
  25. "defaultStage": "consult",
  26. "description": "会话层常驻;节点为动作/触达/分支,非聊天容器",
  27. "version": 2,
  28. "stages": [
  29. "@{code=consult; promptHint=你是小美,来自测试旅行社,正在了解客户对云南精品线的需求。; label=咨询沟通; goals=System.Object[]}",
  30. "@{code=collect; promptHint=自然引导客户补充预算、时间等关键信息,不要一次问太多。; label=需求采集; goals=System.Object[]}",
  31. "@{code=offer; promptHint=基于已采集信息推荐云南精品线方案,可引导下单。; label=方案推荐; goals=System.Object[]}"
  32. ],
  33. "sideTasks": [
  34. "@{triggerIntents=System.Object[]; nodeCode=ORDER_ACTION; nodeType=7; action=create_order}",
  35. "@{triggerIntents=System.Object[]; nodeCode=TAG_HIGH_INTENT; nodeType=9; action=add_tag}"
  36. ]
  37. },
  38. "brandContext": {
  39. "advisorName": "小美",
  40. "companyShortName": "测试旅行社",
  41. "advisorRole": "金牌旅行顾问",
  42. "mainProduct": "云南精品线"
  43. },
  44. "_fallbackSource": "conversation_model_template",
  45. "variables": [
  46. {
  47. "varName": "客户姓名",
  48. "label": "客户姓名",
  49. "source": "user_profile",
  50. "type": "string",
  51. "varType": "string",
  52. "sourceType": "user_profile",
  53. "name": "customerName",
  54. "varCode": "customerName"
  55. },
  56. {
  57. "varName": "测试旅行社",
  58. "label": "测试旅行社",
  59. "source": "manual",
  60. "type": "string",
  61. "varType": "string",
  62. "sourceType": "manual",
  63. "name": "company_short_name",
  64. "varCode": "company_short_name"
  65. },
  66. {
  67. "varName": "小美",
  68. "label": "小美",
  69. "source": "manual",
  70. "type": "string",
  71. "varType": "string",
  72. "sourceType": "manual",
  73. "name": "advisor_name",
  74. "varCode": "advisor_name"
  75. },
  76. {
  77. "varName": "云南精品线",
  78. "label": "云南精品线",
  79. "source": "manual",
  80. "type": "string",
  81. "varType": "string",
  82. "sourceType": "manual",
  83. "name": "main_product",
  84. "varCode": "main_product"
  85. },
  86. {
  87. "varName": "当前阶段",
  88. "label": "当前阶段",
  89. "source": "manual",
  90. "type": "string",
  91. "varType": "string",
  92. "sourceType": "manual",
  93. "name": "workflowStage",
  94. "varCode": "workflowStage"
  95. }
  96. ],
  97. "nodes": [
  98. {
  99. "nodeName": "开始",
  100. "nextNodeCode": "INIT_STAGE",
  101. "nodeCode": "START",
  102. "maxRounds": 0,
  103. "nodeType": 1,
  104. "nodeConfig": "{\"autoAdvance\":true}",
  105. "sortNo": 1,
  106. "conditionExpr": "",
  107. "messageTemplate": "您好${customerName},我是小美,来自测试旅行社。看到您关注云南精品线,有什么可以帮您?"
  108. },
  109. {
  110. "nodeName": "初始化阶段",
  111. "nextNodeCode": "ORDER_ACTION",
  112. "nodeCode": "INIT_STAGE",
  113. "maxRounds": 0,
  114. "nodeType": 16,
  115. "nodeConfig": "{\"assignments\":{\"workflowStage\":\"consult\"},\"stageGate\":true}",
  116. "sortNo": 2,
  117. "conditionExpr": "",
  118. "messageTemplate": ""
  119. },
  120. {
  121. "nodeName": "成单动作",
  122. "nextNodeCode": "OUTBOUND_CARE",
  123. "nodeCode": "ORDER_ACTION",
  124. "maxRounds": 0,
  125. "nodeType": 7,
  126. "nodeConfig": "{\"sideTask\":true,\"actionOnly\":true,\"triggerIntents\":[\"purchase\",\"order\"],\"action\":\"create_order\"}",
  127. "sortNo": 3,
  128. "conditionExpr": "",
  129. "messageTemplate": ""
  130. },
  131. {
  132. "nodeName": "主动关怀",
  133. "nextNodeCode": "JUDGE",
  134. "nodeCode": "OUTBOUND_CARE",
  135. "maxRounds": 0,
  136. "nodeType": 10,
  137. "nodeConfig": "{\"delivery\":\"proactive\",\"awaitReply\":false}",
  138. "sortNo": 4,
  139. "conditionExpr": "",
  140. "messageTemplate": "您好,我是小美,之前聊的云南精品线方案您考虑得怎么样了?"
  141. },
  142. {
  143. "nodeName": "意图分支",
  144. "nextNodeCode": "",
  145. "nodeCode": "JUDGE",
  146. "maxRounds": 0,
  147. "nodeType": 3,
  148. "nodeConfig": "{}",
  149. "sortNo": 5,
  150. "conditionExpr": "{\"branches\":[{\"nextNodeCode\":\"END\",\"condition\":{\"field\":\"customerIntent\",\"operator\":\"eq\",\"value\":\"purchase\"},\"desc\":\"成交\"},{\"nextNodeCode\":\"FOLLOW\",\"condition\":{\"field\":\"customerIntent\",\"operator\":\"eq\",\"value\":\"inquiry\"},\"desc\":\"跟进\"}],\"defaultNodeCode\":\"FOLLOW\"}",
  151. "messageTemplate": ""
  152. },
  153. {
  154. "nodeName": "跟进动作",
  155. "nextNodeCode": "END",
  156. "nodeCode": "FOLLOW",
  157. "maxRounds": 0,
  158. "nodeType": 8,
  159. "nodeConfig": "{\"sideTask\":true,\"actionOnly\":true,\"action\":\"createFollowUp\"}",
  160. "sortNo": 6,
  161. "conditionExpr": "",
  162. "messageTemplate": ""
  163. },
  164. {
  165. "nodeName": "高意向标签",
  166. "nextNodeCode": "END",
  167. "nodeCode": "TAG_HIGH_INTENT",
  168. "maxRounds": 0,
  169. "nodeType": 9,
  170. "nodeConfig": "{\"sideTask\":true,\"actionOnly\":true,\"triggerIntents\":[\"purchase\"]}",
  171. "sortNo": 7,
  172. "conditionExpr": "",
  173. "messageTemplate": ""
  174. },
  175. {
  176. "nodeName": "结束",
  177. "nextNodeCode": "",
  178. "nodeCode": "END",
  179. "maxRounds": 0,
  180. "nodeType": 5,
  181. "nodeConfig": "{}",
  182. "sortNo": 8,
  183. "conditionExpr": "",
  184. "messageTemplate": ""
  185. }
  186. ],
  187. "industryType": "travel",
  188. "templateName": "AI生成工作流(会话常驻模型)",
  189. "edges": [
  190. {
  191. "targetNodeCode": "INIT_STAGE",
  192. "sourceNodeCode": "START",
  193. "edgeLabel": "启动"
  194. },
  195. {
  196. "targetNodeCode": "ORDER_ACTION",
  197. "sourceNodeCode": "INIT_STAGE",
  198. "edgeLabel": "编排"
  199. },
  200. {
  201. "targetNodeCode": "OUTBOUND_CARE",
  202. "sourceNodeCode": "ORDER_ACTION",
  203. "edgeLabel": "触达"
  204. },
  205. {
  206. "targetNodeCode": "JUDGE",
  207. "sourceNodeCode": "OUTBOUND_CARE",
  208. "edgeLabel": "判断"
  209. },
  210. {
  211. "targetNodeCode": "END",
  212. "sourceNodeCode": "JUDGE",
  213. "edgeLabel": "成交"
  214. },
  215. {
  216. "targetNodeCode": "FOLLOW",
  217. "sourceNodeCode": "JUDGE",
  218. "edgeLabel": "跟进"
  219. },
  220. {
  221. "targetNodeCode": "END",
  222. "sourceNodeCode": "FOLLOW",
  223. "edgeLabel": "结束"
  224. }
  225. ],
  226. "description": "旅游公司销冠全流程:直播加微→破冰→采集出行需求→线路推荐→促单签单→出行前关怀→旅途中关怀→回访调研→节日营销→循环推荐",
  227. "_generateParam": {
  228. "advisorName": "小美",
  229. "companyShortName": "测试旅行社",
  230. "industryType": "travel",
  231. "advisorRole": "金牌旅行顾问",
  232. "mainProduct": "云南精品线"
  233. },
  234. "status": 1,
  235. "errorMsg": "已使用行业兜底模板: validation fast fallback"
  236. },
  237. "usedFallback": true,
  238. "passed": true,
  239. "workflowId": 19,
  240. "message": "generate and confirm ok"
  241. },
  242. "phase2Learning": {
  243. "hotReplayRowsBefore": 10,
  244. "hotReplayRowsAfter": 12,
  245. "delta": 2,
  246. "passed": true,
  247. "status": "ok",
  248. "hint": "async write ok",
  249. "message": "learning replay ok",
  250. "verify": {
  251. "companyId": 338,
  252. "archiveTableExists": false,
  253. "hotIndexExists": true,
  254. "hotReplayRows": 12,
  255. "eventLogRows": 12,
  256. "archiveRows": 0,
  257. "archiveNote": "table missing or query failed",
  258. "status": "ok"
  259. }
  260. },
  261. "stress": {
  262. "multiTurn": {
  263. "turns": 3,
  264. "avgScore": 75.33333333333333,
  265. "passed": true,
  266. "message": "multiTurn ok"
  267. },
  268. "rateLimit": {
  269. "cooldownAt": 6,
  270. "passed": true,
  271. "message": "rate limit triggered",
  272. "instanceId": 42
  273. },
  274. "waitWake": {
  275. "passed": true,
  276. "message": "wait wake ok",
  277. "statusAfter": "running",
  278. "instanceId": 43
  279. },
  280. "longMessage": {
  281. "passed": true,
  282. "message": "long message handled",
  283. "code": 200,
  284. "messageLength": 11000
  285. },
  286. "concurrentStart": {
  287. "passed": true,
  288. "successCount": 3,
  289. "instanceIds": [
  290. 45,
  291. 46,
  292. 47
  293. ],
  294. "message": "3 burst starts ok"
  295. }
  296. }
  297. },
  298. "failures": [
  299. "e2eDialogue: NullPointerException"
  300. ],
  301. "passed": false,
  302. "durationMs": 70997,
  303. "templateIdUsed": 18
  304. }