travel-r9.json 123 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328
  1. {
  2. "companyId": 338,
  3. "includeStress": true,
  4. "dialogueIndustry": "travel",
  5. "startedAt": "2026-06-23 02:23:36",
  6. "sections": {
  7. "enginePrompts": {
  8. "expectedCatalogKeys": 50,
  9. "newlyInserted": 0,
  10. "missingKeys": [
  11. ],
  12. "platformKeyCount": 50,
  13. "passed": true,
  14. "message": "platform engine prompts complete (50 keys)"
  15. },
  16. "triggerExclude": {
  17. "passed": true,
  18. "errors": [
  19. ],
  20. "message": "trigger exclude/sarcasm/schedule checks ok"
  21. },
  22. "runtimeCapabilities": {
  23. "capabilityTags": [
  24. "product",
  25. "logistics",
  26. "survey",
  27. "live",
  28. "article",
  29. "order",
  30. "order_list",
  31. "coupon",
  32. "crm",
  33. "sms"
  34. ],
  35. "toolCount": 10,
  36. "intentChecks": [
  37. {
  38. "message": "这几条线路看起来不错",
  39. "expectedTool": "query_product",
  40. "matchedTool": "query_product",
  41. "passed": "true"
  42. },
  43. {
  44. "message": "云南天气怎么样",
  45. "expectedTool": "query_weather",
  46. "matchedTool": "",
  47. "passed": "false"
  48. },
  49. {
  50. "message": "我的快递发货了吗",
  51. "expectedTool": "query_logistics",
  52. "matchedTool": "query_logistics",
  53. "passed": "true"
  54. },
  55. {
  56. "message": "满意度打分",
  57. "expectedTool": "start_survey",
  58. "matchedTool": "start_survey",
  59. "passed": "true"
  60. },
  61. {
  62. "message": "有没有新线路优惠",
  63. "expectedTool": "query_product",
  64. "matchedTool": "query_product",
  65. "passed": "true"
  66. },
  67. {
  68. "message": "有直播吗",
  69. "expectedTool": "push_live",
  70. "matchedTool": "push_live",
  71. "passed": "true"
  72. },
  73. {
  74. "message": "发我看看文章",
  75. "expectedTool": "push_article",
  76. "matchedTool": "push_article",
  77. "passed": "true"
  78. }
  79. ],
  80. "surveySmoke": false,
  81. "issues": [
  82. "意图未匹配: \"云南天气怎么样\" -\u003e query_weather",
  83. "start_survey 工具执行未返回数据"
  84. ],
  85. "passed": false,
  86. "message": "意图未匹配: \"云南天气怎么样\" -\u003e query_weather; start_survey 工具执行未返回数据"
  87. },
  88. "capabilityDialogue": {
  89. "lines": [
  90. {
  91. "message": "云南7月份天气怎么样,需要带什么衣服",
  92. "matchedTool": "",
  93. "triggered": false
  94. },
  95. {
  96. "message": "快递发货了吗,帮我查一下物流",
  97. "matchedTool": "query_logistics",
  98. "triggered": true,
  99. "toolStatus": "fail",
  100. "summary": "\r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\r\n### The error may exist in URL [jar:file:/D:/ylrz_saas_new/java/fs-saas-company/target/fs-saas-company.jar!/BOOT-INF/lib/fs-service-1.1.0.jar!/mapper/lobster/LobsterToolCallMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO lobster_tool_exec_log(company_id, tool_name, params_json, result_json, create_time) VALUES(?, ?, ?, ?, NOW())\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist"
  101. },
  102. {
  103. "message": "有没有适合带老人的新线路推荐",
  104. "matchedTool": "query_product",
  105. "triggered": true,
  106. "toolStatus": "fail",
  107. "summary": "\r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\r\n### The error may exist in URL [jar:file:/D:/ylrz_saas_new/java/fs-saas-company/target/fs-saas-company.jar!/BOOT-INF/lib/fs-service-1.1.0.jar!/mapper/lobster/LobsterToolCallMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO lobster_tool_exec_log(company_id, tool_name, params_json, result_json, create_time) VALUES(?, ?, ?, ?, NOW())\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist"
  108. },
  109. {
  110. "message": "今晚有直播吗,发我直播间链接",
  111. "matchedTool": "push_live",
  112. "triggered": true,
  113. "toolStatus": "fail",
  114. "summary": "\r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\r\n### The error may exist in URL [jar:file:/D:/ylrz_saas_new/java/fs-saas-company/target/fs-saas-company.jar!/BOOT-INF/lib/fs-service-1.1.0.jar!/mapper/lobster/LobsterToolCallMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO lobster_tool_exec_log(company_id, tool_name, params_json, result_json, create_time) VALUES(?, ?, ?, ?, NOW())\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist"
  115. },
  116. {
  117. "message": "有没有出行攻略文章发我看看",
  118. "matchedTool": "push_article",
  119. "triggered": true,
  120. "toolStatus": "fail",
  121. "summary": "\r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\r\n### The error may exist in URL [jar:file:/D:/ylrz_saas_new/java/fs-saas-company/target/fs-saas-company.jar!/BOOT-INF/lib/fs-service-1.1.0.jar!/mapper/lobster/LobsterToolCallMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO lobster_tool_exec_log(company_id, tool_name, params_json, result_json, create_time) VALUES(?, ?, ?, ?, NOW())\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist"
  122. },
  123. {
  124. "message": "满意度打5分,服务挺好的",
  125. "matchedTool": "start_survey",
  126. "triggered": true,
  127. "toolStatus": "fail",
  128. "summary": "\r\n### Error updating database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\r\n### The error may exist in URL [jar:file:/D:/ylrz_saas_new/java/fs-saas-company/target/fs-saas-company.jar!/BOOT-INF/lib/fs-service-1.1.0.jar!/mapper/lobster/LobsterToolCallMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: INSERT INTO lobster_tool_exec_log(company_id, tool_name, params_json, result_json, create_time) VALUES(?, ?, ?, ?, NOW())\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_tool_exec_log\u0027 doesn\u0027t exist"
  129. }
  130. ],
  131. "lineCount": 6,
  132. "warnings": [
  133. "扩展工具未执行成功(可能未配 API): 快递发货了吗,帮我查一下物流 -\u003e query_logistics",
  134. "内容推送未执行成功(可能无直播/文章数据): 今晚有直播吗,发我直播间链接 -\u003e push_live",
  135. "内容推送未执行成功(可能无直播/文章数据): 有没有出行攻略文章发我看看 -\u003e push_article"
  136. ],
  137. "issues": [
  138. "未匹配工具: 云南7月份天气怎么样,需要带什么衣服",
  139. "工具执行失败: 有没有适合带老人的新线路推荐 -\u003e query_product",
  140. "工具执行失败: 满意度打5分,服务挺好的 -\u003e start_survey"
  141. ],
  142. "passed": false,
  143. "message": "未匹配工具: 云南7月份天气怎么样,需要带什么衣服; 工具执行失败: 有没有适合带老人的新线路推荐 -\u003e query_product; 工具执行失败: 满意度打5分,服务挺好的 -\u003e start_survey"
  144. },
  145. "template": {
  146. "passed": true,
  147. "workflowId": 63,
  148. "templateCode": "LOB_1782063889805",
  149. "source": "existing",
  150. "message": "travel template found"
  151. },
  152. "lifecycleCoverage": {
  153. "coverageRatio": 1.0,
  154. "minCoverage": 0.75,
  155. "nodeCount": 16,
  156. "requiredNodeCount": 15,
  157. "missingNodes": [
  158. ],
  159. "passed": true,
  160. "message": "lifecycle nodes covered"
  161. },
  162. "sopDefaults": {
  163. "qwSopTempId": "LOBSTER_TRAVEL_POST_BOOKING",
  164. "wxSopTempId": "LOBSTER_TRAVEL_POST_BOOKING_WX",
  165. "tenantHint": "Create qw_sop/wx_sop tasks with temp_id matching the values above",
  166. "sopEnrollNodeConfig": "{\"sopTempId\":\"LOBSTER_TRAVEL_POST_BOOKING\",\"wxSopTempId\":\"LOBSTER_TRAVEL_POST_BOOKING_WX\",\"plannedIndustry\":\"travel\",\"systemPromptKey\":\"node_LOB_1782063889805_SOP_ENROLL_system\",\"preferContactAccount\":true,\"plannedRole\":\"MESSAGE\",\"instructionPromptKey\":\"node_LOB_1782063889805_SOP_ENROLL_instruction\",\"actionOnly\":true,\"promptPlanned\":true}",
  167. "hasSopEnrollNode": true,
  168. "passed": true,
  169. "message": "travel SOP defaults and SOP_ENROLL node present"
  170. },
  171. "sopEnrollment": {
  172. "qwTaskConfigured": false,
  173. "wxTaskConfigured": false,
  174. "tenantSopReady": false,
  175. "qwChannel": {
  176. "success": false,
  177. "skipped": null,
  178. "channelType": "QW",
  179. "message": "未找到可用的 SOP 任务(请配置 sopId 或 tempId)",
  180. "tempId": null,
  181. "sopId": null,
  182. "reachable": true
  183. },
  184. "wxChannel": {
  185. "success": false,
  186. "skipped": null,
  187. "channelType": "WX",
  188. "message": "未找到个微 SOP 任务(配置 sopId 或 wxSopTempId/tempId)",
  189. "tempId": null,
  190. "sopId": null,
  191. "reachable": true
  192. },
  193. "passed": true,
  194. "notes": [
  195. "tenant missing qw_sop temp_id=LOBSTER_TRAVEL_POST_BOOKING",
  196. "tenant missing wx_sop temp_id=LOBSTER_TRAVEL_POST_BOOKING_WX"
  197. ],
  198. "message": "routing ok; tenant missing qw_sop temp_id=LOBSTER_TRAVEL_POST_BOOKING; tenant missing wx_sop temp_id=LOBSTER_TRAVEL_POST_BOOKING_WX"
  199. },
  200. "nodePromptsPlanned": {
  201. "promptNodeTarget": 6,
  202. "promptNodeFilled": 6,
  203. "emptyPromptNodes": [
  204. ],
  205. "passed": true,
  206. "message": "key node prompts present"
  207. },
  208. "lifecycleSimulation": {
  209. "waitPreTripConfigured": true,
  210. "tagAutoConfigured": true,
  211. "orderActionConfigured": true,
  212. "holidayWaitConfigured": true,
  213. "passed": true,
  214. "message": "lifecycle orchestration nodes configured"
  215. },
  216. "lifecycleRuntime": {
  217. "simMinuteUnit": 10,
  218. "simDayEqualsMinutes": 10,
  219. "schedulerWakeWaitMs": 3500,
  220. "preTripWaitSchedule10m": {
  221. "waitUntil": 1782153000000,
  222. "expectedWaitAt": 1782153000000,
  223. "travelAt": "2026-06-23T03:23:48.220275400",
  224. "waitInRealMinutes": 6,
  225. "diffMinutes": 0,
  226. "simTimeScale": true,
  227. "passed": true,
  228. "message": "T-5 10m sim schedule ok"
  229. },
  230. "preTripWaitWake": {
  231. "passed": true,
  232. "message": "lifecycle wait wake ok",
  233. "statusAfter": "running",
  234. "resumeIndex": 8,
  235. "currentIndexAfter": 9,
  236. "instanceId": 469
  237. },
  238. "preTripSchedulerWake10m": {
  239. "scheduledWakeAt": 1782152636057,
  240. "schedulerWaitMs": 3500,
  241. "passed": true,
  242. "message": "scheduler 10m sim wake ok",
  243. "statusAfter": "running",
  244. "resumeIndex": 8,
  245. "currentIndexAfter": 9,
  246. "instanceId": 470
  247. },
  248. "holidayWaitSchedule10m": {
  249. "waitUntil": 1782170400000,
  250. "expectedWaitAt": 1782170400000,
  251. "waitInRealMinutes": 296,
  252. "simHolidayDays": 30,
  253. "simRealMinutes": 300,
  254. "diffMinutes": 0,
  255. "passed": true,
  256. "message": "holiday 10m sim schedule ok"
  257. },
  258. "holidayWaitWake": {
  259. "passed": true,
  260. "message": "lifecycle wait wake ok",
  261. "statusAfter": "completed",
  262. "resumeIndex": 13,
  263. "currentIndexAfter": 13,
  264. "instanceId": 471
  265. },
  266. "holidaySchedulerWake10m": {
  267. "scheduledWakeAt": 1782152644322,
  268. "schedulerWaitMs": 3500,
  269. "passed": true,
  270. "message": "scheduler 10m sim wake ok",
  271. "statusAfter": "completed",
  272. "resumeIndex": 13,
  273. "currentIndexAfter": 13,
  274. "instanceId": 472
  275. },
  276. "passed": true,
  277. "message": "lifecycle 10m sim schedule/wake ok"
  278. },
  279. "lifecycleFullFlowSim": {
  280. "instanceId": 473,
  281. "finalStatus": "completed",
  282. "finalNodeIndex": 13,
  283. "milestones": [
  284. "STARTED",
  285. "T5_SCHEDULED",
  286. "T5_WAITING",
  287. "PRE_TRIP_CARE",
  288. "PRE_TRIP_MULTITURN",
  289. "HOLIDAY_WAITING",
  290. "HOLIDAY_PROMO"
  291. ],
  292. "errors": [
  293. ],
  294. "passed": true,
  295. "message": "full lifecycle 10m sim flow ok",
  296. "simMinuteUnit": 10
  297. },
  298. "lifecycleExceptions": {
  299. "waitNotExpired": {
  300. "passed": true,
  301. "message": "not-expired wait rejected advance",
  302. "statusAfter": "waiting"
  303. },
  304. "prematureScheduler": {
  305. "passed": true,
  306. "message": "premature scheduler did not wake"
  307. },
  308. "blockedSchedulerSkip": {
  309. "passed": true,
  310. "message": "blocked instance skipped by scheduler"
  311. },
  312. "blockedForceWake": {
  313. "passed": true,
  314. "message": "blocked force wake rejected"
  315. },
  316. "overdueT5SkipWait": {
  317. "waitUntil": 1782150600000,
  318. "overdue": true,
  319. "wouldSkipSchedule": true,
  320. "passed": true,
  321. "message": "overdue T-5 skips wait schedule"
  322. },
  323. "missingTravelDate": {
  324. "waitUntil": 1782153286946,
  325. "expectedFallbackMinutes": 10,
  326. "passed": true,
  327. "message": "missing travel_date sim fallback ok"
  328. },
  329. "completedRejectWake": {
  330. "passed": true,
  331. "message": "completed instance rejects wake"
  332. },
  333. "missingResumeIndex": {
  334. "passed": true,
  335. "message": "missing resume index fallback ok"
  336. },
  337. "doubleWake": {
  338. "passed": true,
  339. "message": "double wake idempotent",
  340. "statusAfter": "running"
  341. },
  342. "passed": true,
  343. "message": "lifecycle exception handling ok"
  344. },
  345. "lifecycleMultiTurnDialogue": {
  346. "bookingTurnCount": 10,
  347. "postBookingTurnCount": 9,
  348. "dialogueSource": "bookingFunnel+postBookingLifecycle",
  349. "consultMultiTurn": {
  350. "turns": 5,
  351. "avgScore": 61.4,
  352. "minScore": 0.0,
  353. "passed": true,
  354. "message": "node multiTurn ok",
  355. "instanceId": 481,
  356. "inputCount": 6
  357. },
  358. "postBookingMultiTurnFlow": {
  359. "instanceId": 482,
  360. "preTripMultiTurn": {
  361. "turns": 3,
  362. "avgScore": 77.33333333333333,
  363. "minScore": 76.0,
  364. "passed": true,
  365. "message": "node multiTurn ok"
  366. },
  367. "holidayMultiTurn": {
  368. "turns": 1,
  369. "avgScore": 85.0,
  370. "minScore": 85.0,
  371. "passed": false,
  372. "message": "node multiTurn below threshold"
  373. },
  374. "milestones": [
  375. "PRE_TRIP",
  376. "PRE_TRIP_MT",
  377. "HOLIDAY"
  378. ],
  379. "errors": [
  380. "HOLIDAY_MT"
  381. ],
  382. "dialogueTurns": 9,
  383. "passed": false,
  384. "message": "post-booking multi-turn failed: [HOLIDAY_MT]"
  385. },
  386. "passed": false,
  387. "message": "lifecycle multi-turn dialogue failed"
  388. },
  389. "e2eDialogue": {
  390. "dialogueStage": "bookingFunnel",
  391. "dialogueTurnCount": 10,
  392. "runId": "655d81ef1399411eafbb17733874b137",
  393. "status": "SUCCESS",
  394. "instanceId": 483,
  395. "totalScore": 54.81,
  396. "passedNodeCnt": 9,
  397. "totalNodeCnt": 10,
  398. "evolutionCount": 1,
  399. "nodeTraces": 10,
  400. "minNodeScore": 0.0,
  401. "maxNodeScore": 83.75,
  402. "nodesBelowTarget": 4,
  403. "nodesBelowMin": 3,
  404. "nodeScoreDetail": [
  405. {
  406. "nodeCode": "初始化咨询阶段",
  407. "score": 73.125,
  408. "passed": false
  409. },
  410. {
  411. "nodeCode": "直播加微推直播间",
  412. "score": 83.75,
  413. "passed": true
  414. },
  415. {
  416. "nodeCode": "推送出行攻略文章",
  417. "score": 82.5,
  418. "passed": true
  419. },
  420. {
  421. "nodeCode": "推送出行攻略文章",
  422. "score": 76.25,
  423. "passed": true
  424. },
  425. {
  426. "nodeCode": "推送出行攻略文章",
  427. "score": 0.0,
  428. "passed": true
  429. },
  430. {
  431. "nodeCode": "推送出行攻略文章",
  432. "score": 77.5,
  433. "passed": true
  434. },
  435. {
  436. "nodeCode": "推送出行攻略文章",
  437. "score": 0.0,
  438. "passed": true
  439. },
  440. {
  441. "nodeCode": "推送出行攻略文章",
  442. "score": 77.5,
  443. "passed": true
  444. },
  445. {
  446. "nodeCode": "推送出行攻略文章",
  447. "score": 0.0,
  448. "passed": true
  449. },
  450. {
  451. "nodeCode": "推送出行攻略文章",
  452. "score": 77.5,
  453. "passed": true
  454. }
  455. ],
  456. "passed": true,
  457. "message": "e2e ok"
  458. },
  459. "qualityGate": {
  460. "enabled": true,
  461. "targetScorePercent": 75.0,
  462. "minE2eAvgScorePercent": 75.0,
  463. "minNodeScorePercent": 60.0,
  464. "passScorePercent": 90,
  465. "totalScore": 54.81,
  466. "nodesBelowTarget": 4,
  467. "nodesBelowMin": 3,
  468. "minNodeScore": 0.0,
  469. "maxNodeScore": 83.75,
  470. "nodeScoreDetail": [
  471. {
  472. "nodeCode": "初始化咨询阶段",
  473. "score": 73.125,
  474. "passed": false
  475. },
  476. {
  477. "nodeCode": "直播加微推直播间",
  478. "score": 83.75,
  479. "passed": true
  480. },
  481. {
  482. "nodeCode": "推送出行攻略文章",
  483. "score": 82.5,
  484. "passed": true
  485. },
  486. {
  487. "nodeCode": "推送出行攻略文章",
  488. "score": 76.25,
  489. "passed": true
  490. },
  491. {
  492. "nodeCode": "推送出行攻略文章",
  493. "score": 0.0,
  494. "passed": true
  495. },
  496. {
  497. "nodeCode": "推送出行攻略文章",
  498. "score": 77.5,
  499. "passed": true
  500. },
  501. {
  502. "nodeCode": "推送出行攻略文章",
  503. "score": 0.0,
  504. "passed": true
  505. },
  506. {
  507. "nodeCode": "推送出行攻略文章",
  508. "score": 77.5,
  509. "passed": true
  510. },
  511. {
  512. "nodeCode": "推送出行攻略文章",
  513. "score": 0.0,
  514. "passed": true
  515. },
  516. {
  517. "nodeCode": "推送出行攻略文章",
  518. "score": 77.5,
  519. "passed": true
  520. }
  521. ],
  522. "passed": false,
  523. "message": "avg 54.81 \u003c min 75.0; 3 node(s) below min 60.0; 4 node(s) below production target 75.0"
  524. },
  525. "summary": {
  526. "instanceId": 483,
  527. "externalUserId": "999338001",
  528. "asyncDbSummary": true,
  529. "historyLines": 20,
  530. "syncSummaryLength": 96,
  531. "microSummaryLength": 210,
  532. "cachedSummaryOk": true,
  533. "dbSummaryRows": 1,
  534. "passed": true,
  535. "message": "summary persisted to DB"
  536. },
  537. "memoryPipeline": {
  538. "externalUserId": "999338001",
  539. "instanceId": 483,
  540. "summaryOk": true,
  541. "factCount": 20,
  542. "factKeys": [
  543. ],
  544. "passed": true,
  545. "message": "summary or customer_fact persisted"
  546. },
  547. "evolutionAnalyze": {
  548. "e2eEvolutionCount": 1,
  549. "evolutionLogsBefore": 39,
  550. "analyzeInvoked": true,
  551. "analyzeMessage": "analyzeAndSuggest ok",
  552. "evolutionLogsAfter": 39,
  553. "evolutionLogsDelta": 0,
  554. "pendingSuggestions": 0,
  555. "passed": true,
  556. "message": "evolution analyze ok"
  557. },
  558. "sensitiveWord": {
  559. "scopeNote": "lobster SensitiveWordService + evolve step9; not live/call/CompanyAiSensitiveWord AC",
  560. "layers": {
  561. "defaultLib": {
  562. "detectCount": 1,
  563. "filtered": "推荐云南精品线,***,欢迎咨询",
  564. "passed": true
  565. },
  566. "customCrud": {
  567. "word": "LOBSTER_VAL_338",
  568. "hit": true,
  569. "filtered": "行程含***内容",
  570. "passed": true
  571. },
  572. "highRisk": {
  573. "word": "LOBSTER_FRAUD_338",
  574. "highRisk": true,
  575. "passed": true
  576. },
  577. "evolveStep9Simulation": {
  578. "rawHasSensitive": true,
  579. "wouldTransferToHuman": true,
  580. "finalReply": "欢迎咨询,预期收益,***",
  581. "passed": true
  582. },
  583. "wordListLoaded": {
  584. "count": 135,
  585. "passed": true
  586. }
  587. },
  588. "passed": true,
  589. "message": "sensitive word pipeline ok"
  590. },
  591. "executionPolicy": {
  592. "scopeNote": "resolve() strict/content/flow gates used by executor + prompt fallback",
  593. "strictFixedWorkflow": false,
  594. "contentPersonalization": true,
  595. "flowPersonalization": true,
  596. "allowContent": true,
  597. "allowFlow": true,
  598. "executionMode": "HYBRID",
  599. "issues": [
  600. ],
  601. "passed": true,
  602. "message": "execution policy gates ok"
  603. },
  604. "aiGenerate": {
  605. "recordNo": "LOB_1782153078791",
  606. "generateUseLlm": false,
  607. "fallbackGenerate": true,
  608. "finalStatus": 1,
  609. "detail": {
  610. "conversationModel": {
  611. "defaultStage": "consult",
  612. "description": "旅游全链路:会话常驻,节点负责打标/签单/出行关怀/满意度/节日营销",
  613. "version": 2,
  614. "stages": [
  615. {
  616. "code": "consult",
  617. "promptHint": "你是小美,测试旅行社旅行顾问。客户来自直播间,先破冰并了解是否已有出行计划。",
  618. "label": "直播加微破冰",
  619. "goals": [
  620. ]
  621. },
  622. {
  623. "code": "collect",
  624. "promptHint": "逐步询问目的地、日期、人数、预算;一次只问一个关键问题。",
  625. "label": "需求采集打标",
  626. "goals": [
  627. {
  628. "collected": false,
  629. "label": "目的地",
  630. "required": true,
  631. "field": "destination"
  632. },
  633. {
  634. "collected": false,
  635. "label": "出行日期",
  636. "required": true,
  637. "field": "travel_date"
  638. },
  639. {
  640. "collected": false,
  641. "label": "预算",
  642. "required": true,
  643. "field": "budget"
  644. },
  645. {
  646. "collected": false,
  647. "label": "出行人数",
  648. "required": true,
  649. "field": "pax"
  650. }
  651. ]
  652. },
  653. {
  654. "code": "offer",
  655. "promptHint": "基于采集信息推荐云南精品线,突出亮点与优惠,自然引导签单。",
  656. "label": "线路推荐促单",
  657. "goals": [
  658. ]
  659. },
  660. {
  661. "code": "pre_trip",
  662. "promptHint": "出行前5天提醒证件、行李、当地天气与注意事项。",
  663. "label": "出行前关怀",
  664. "goals": [
  665. ]
  666. },
  667. {
  668. "code": "in_trip",
  669. "promptHint": "行程中主动问候,询问是否遇到问题,给出景点玩要建议。",
  670. "label": "行中关怀",
  671. "goals": [
  672. ]
  673. },
  674. {
  675. "code": "post_trip",
  676. "promptHint": "行程结束后收集满意度与改进建议。",
  677. "label": "满意度回访",
  678. "goals": [
  679. ]
  680. },
  681. {
  682. "code": "repurchase",
  683. "promptHint": "大节日前30天关怀,了解是否有新的出行计划并推荐产品。",
  684. "label": "节日营销",
  685. "goals": [
  686. ]
  687. }
  688. ],
  689. "sideTasks": [
  690. {
  691. "triggerIntents": [
  692. "purchase",
  693. "high_intent",
  694. "booked"
  695. ],
  696. "nodeCode": "TAG_AUTO",
  697. "nodeType": 9,
  698. "action": "add_tag"
  699. },
  700. {
  701. "triggerIntents": [
  702. "purchase",
  703. "order",
  704. "book"
  705. ],
  706. "nodeCode": "ORDER_ACTION",
  707. "nodeType": 7,
  708. "action": "create_order"
  709. }
  710. ]
  711. },
  712. "variables": [
  713. {
  714. "varName": "客户姓名",
  715. "label": "客户姓名",
  716. "source": "user_profile",
  717. "type": "string",
  718. "required": 0,
  719. "varType": "string",
  720. "sourceType": "user_profile",
  721. "name": "customerName",
  722. "varCode": "customerName"
  723. },
  724. {
  725. "varName": "目的地",
  726. "label": "目的地",
  727. "source": "conversation",
  728. "type": "string",
  729. "required": 0,
  730. "varType": "string",
  731. "sourceType": "conversation",
  732. "name": "destination",
  733. "varCode": "destination"
  734. },
  735. {
  736. "varName": "出行日期",
  737. "label": "出行日期",
  738. "source": "conversation",
  739. "type": "date",
  740. "required": 0,
  741. "varType": "date",
  742. "sourceType": "conversation",
  743. "name": "travel_date",
  744. "varCode": "travel_date"
  745. },
  746. {
  747. "varName": "预算",
  748. "label": "预算",
  749. "source": "conversation",
  750. "type": "string",
  751. "required": 0,
  752. "varType": "string",
  753. "sourceType": "conversation",
  754. "name": "budget",
  755. "varCode": "budget"
  756. },
  757. {
  758. "varName": "出行人数",
  759. "label": "出行人数",
  760. "source": "conversation",
  761. "type": "number",
  762. "required": 0,
  763. "varType": "number",
  764. "sourceType": "conversation",
  765. "name": "pax",
  766. "varCode": "pax"
  767. },
  768. {
  769. "varName": "测试旅行社",
  770. "label": "测试旅行社",
  771. "source": "manual",
  772. "type": "string",
  773. "required": 0,
  774. "varType": "string",
  775. "sourceType": "manual",
  776. "name": "company_short_name",
  777. "varCode": "company_short_name"
  778. },
  779. {
  780. "varName": "小美",
  781. "label": "小美",
  782. "source": "manual",
  783. "type": "string",
  784. "required": 0,
  785. "varType": "string",
  786. "sourceType": "manual",
  787. "name": "advisor_name",
  788. "varCode": "advisor_name"
  789. },
  790. {
  791. "varName": "云南精品线",
  792. "label": "云南精品线",
  793. "source": "manual",
  794. "type": "string",
  795. "required": 0,
  796. "varType": "string",
  797. "sourceType": "manual",
  798. "name": "main_product",
  799. "varCode": "main_product"
  800. },
  801. {
  802. "varName": "当前阶段",
  803. "label": "当前阶段",
  804. "source": "manual",
  805. "type": "string",
  806. "required": 0,
  807. "varType": "string",
  808. "sourceType": "manual",
  809. "name": "workflowStage",
  810. "varCode": "workflowStage"
  811. },
  812. {
  813. "varName": "客户意向",
  814. "label": "客户意向",
  815. "source": "conversation",
  816. "type": "string",
  817. "required": 0,
  818. "varType": "string",
  819. "sourceType": "conversation",
  820. "name": "customerIntent",
  821. "varCode": "customerIntent"
  822. },
  823. {
  824. "varName": "行业类型",
  825. "defaultValue": "travel",
  826. "label": "行业类型",
  827. "source": "manual",
  828. "type": "string",
  829. "required": 0,
  830. "varType": "string",
  831. "sourceType": "manual",
  832. "name": "industryType",
  833. "varCode": "industryType"
  834. },
  835. {
  836. "varName": "企微SOP模板ID",
  837. "defaultValue": "LOBSTER_TRAVEL_POST_BOOKING",
  838. "label": "企微SOP模板ID",
  839. "source": "manual",
  840. "type": "string",
  841. "required": 0,
  842. "varType": "string",
  843. "sourceType": "manual",
  844. "name": "sopTempId",
  845. "varCode": "sopTempId"
  846. },
  847. {
  848. "varName": "个微SOP模板ID",
  849. "defaultValue": "LOBSTER_TRAVEL_POST_BOOKING_WX",
  850. "label": "个微SOP模板ID",
  851. "source": "manual",
  852. "type": "string",
  853. "required": 0,
  854. "varType": "string",
  855. "sourceType": "manual",
  856. "name": "wxSopTempId",
  857. "varCode": "wxSopTempId"
  858. }
  859. ],
  860. "edges": [
  861. {
  862. "targetNodeCode": "INIT_STAGE",
  863. "sourceNodeCode": "START",
  864. "edgeLabel": "启动"
  865. },
  866. {
  867. "targetNodeCode": "LIVE_PUSH",
  868. "sourceNodeCode": "INIT_STAGE",
  869. "edgeLabel": "直播加微推直播间"
  870. },
  871. {
  872. "targetNodeCode": "ARTICLE_PUSH",
  873. "sourceNodeCode": "LIVE_PUSH",
  874. "edgeLabel": "推送攻略文章"
  875. },
  876. {
  877. "targetNodeCode": "TAG_AUTO",
  878. "sourceNodeCode": "ARTICLE_PUSH",
  879. "edgeLabel": "进入采集打标"
  880. },
  881. {
  882. "targetNodeCode": "JUDGE",
  883. "sourceNodeCode": "TAG_AUTO",
  884. "edgeLabel": "分支"
  885. },
  886. {
  887. "targetNodeCode": "ORDER_ACTION",
  888. "sourceNodeCode": "JUDGE",
  889. "edgeLabel": "签单"
  890. },
  891. {
  892. "targetNodeCode": "WAIT_PRE_TRIP",
  893. "sourceNodeCode": "JUDGE",
  894. "edgeLabel": "已订"
  895. },
  896. {
  897. "targetNodeCode": "WAIT_HOLIDAY",
  898. "sourceNodeCode": "JUDGE",
  899. "edgeLabel": "培育"
  900. },
  901. {
  902. "targetNodeCode": "SOP_ENROLL",
  903. "sourceNodeCode": "ORDER_ACTION",
  904. "edgeLabel": "SOP入营"
  905. },
  906. {
  907. "targetNodeCode": "WAIT_PRE_TRIP",
  908. "sourceNodeCode": "SOP_ENROLL",
  909. "edgeLabel": "进入出行前"
  910. },
  911. {
  912. "targetNodeCode": "PRE_TRIP_CARE",
  913. "sourceNodeCode": "WAIT_PRE_TRIP",
  914. "edgeLabel": "T-5触达"
  915. },
  916. {
  917. "targetNodeCode": "WEATHER_TIPS",
  918. "sourceNodeCode": "PRE_TRIP_CARE",
  919. "edgeLabel": "天气建议"
  920. },
  921. {
  922. "targetNodeCode": "IN_TRIP_CARE",
  923. "sourceNodeCode": "WEATHER_TIPS",
  924. "edgeLabel": "行中"
  925. },
  926. {
  927. "targetNodeCode": "SURVEY",
  928. "sourceNodeCode": "IN_TRIP_CARE",
  929. "edgeLabel": "满意度"
  930. },
  931. {
  932. "targetNodeCode": "WAIT_HOLIDAY",
  933. "sourceNodeCode": "SURVEY",
  934. "edgeLabel": "节日等待"
  935. },
  936. {
  937. "targetNodeCode": "HOLIDAY_PROMO",
  938. "sourceNodeCode": "WAIT_HOLIDAY",
  939. "edgeLabel": "节日营销"
  940. },
  941. {
  942. "targetNodeCode": "END",
  943. "sourceNodeCode": "HOLIDAY_PROMO",
  944. "edgeLabel": "结束"
  945. }
  946. ],
  947. "description": "旅游公司销冠全流程:直播加微→破冰→采集出行需求→线路推荐→促单签单→出行前关怀→旅途中关怀→回访调研→节日营销→循环推荐",
  948. "templateCode": "TRAVEL_TOP_SALES_001",
  949. "errorMsg": "已使用行业兜底模板: validation fast fallback",
  950. "brandContext": {
  951. "advisorName": "小美",
  952. "companyShortName": "测试旅行社",
  953. "advisorRole": "金牌旅行顾问",
  954. "mainProduct": "云南精品线"
  955. },
  956. "_fallbackSource": "travel_lifecycle_full",
  957. "nodes": [
  958. {
  959. "nodeName": "开始",
  960. "nextNodeCode": "INIT_STAGE",
  961. "nodeCode": "START",
  962. "maxRounds": 0,
  963. "nodeType": 1,
  964. "nodeConfig": "{\"autoAdvance\":true,\"channelHint\":\"QW\"}",
  965. "sortNo": 1,
  966. "conditionExpr": "",
  967. "messageTemplate": "您好${customerName},我是小美,测试旅行社旅行顾问。看到您从直播间过来,打算去哪里玩呢?"
  968. },
  969. {
  970. "nodeName": "初始化咨询阶段",
  971. "nextNodeCode": "LIVE_PUSH",
  972. "nodeCode": "INIT_STAGE",
  973. "maxRounds": 0,
  974. "nodeType": 16,
  975. "nodeConfig": "{\"assignments\":{\"workflowStage\":\"consult\"},\"stageGate\":true}",
  976. "sortNo": 2,
  977. "conditionExpr": "",
  978. "messageTemplate": ""
  979. },
  980. {
  981. "nodeName": "直播加微推直播间",
  982. "nextNodeCode": "ARTICLE_PUSH",
  983. "nodeCode": "LIVE_PUSH",
  984. "maxRounds": 0,
  985. "nodeType": 54,
  986. "nodeConfig": "{\"delivery\":\"proactive\",\"channelHint\":\"QW\",\"actionOnly\":false,\"keyword\":\"云南精品线\",\"liveBaseUrl\":\"/live/watch\"}",
  987. "sortNo": 3,
  988. "conditionExpr": "",
  989. "messageTemplate": ""
  990. },
  991. {
  992. "nodeName": "推送出行攻略文章",
  993. "nextNodeCode": "TAG_AUTO",
  994. "nodeCode": "ARTICLE_PUSH",
  995. "maxRounds": 0,
  996. "nodeType": 55,
  997. "nodeConfig": "{\"delivery\":\"proactive\",\"actionOnly\":false,\"keyword\":\"云南精品线\",\"articleBaseUrl\":\"/article/detail\"}",
  998. "sortNo": 4,
  999. "conditionExpr": "",
  1000. "messageTemplate": ""
  1001. },
  1002. {
  1003. "nodeName": "自动打标",
  1004. "nextNodeCode": "JUDGE",
  1005. "nodeCode": "TAG_AUTO",
  1006. "maxRounds": 0,
  1007. "nodeType": 9,
  1008. "nodeConfig": "{\"sideTask\":true,\"actionOnly\":true,\"action\":\"add_tag\",\"tags\":[\"travel_lead\",\"qw_live\"],\"triggerIntents\":[\"purchase\",\"high_intent\"]}",
  1009. "sortNo": 5,
  1010. "conditionExpr": "",
  1011. "messageTemplate": ""
  1012. },
  1013. {
  1014. "nodeName": "签单动作",
  1015. "nextNodeCode": "SOP_ENROLL",
  1016. "nodeCode": "ORDER_ACTION",
  1017. "maxRounds": 0,
  1018. "nodeType": 7,
  1019. "nodeConfig": "{\"sideTask\":true,\"actionOnly\":true,\"action\":\"create_order\",\"triggerIntents\":[\"purchase\",\"order\"]}",
  1020. "sortNo": 6,
  1021. "conditionExpr": "",
  1022. "messageTemplate": ""
  1023. },
  1024. {
  1025. "nodeName": "签单后SOP入营",
  1026. "nextNodeCode": "WAIT_PRE_TRIP",
  1027. "nodeCode": "SOP_ENROLL",
  1028. "maxRounds": 0,
  1029. "nodeType": 50,
  1030. "nodeConfig": "{\"sopTempId\":\"LOBSTER_TRAVEL_POST_BOOKING\",\"wxSopTempId\":\"LOBSTER_TRAVEL_POST_BOOKING_WX\",\"preferContactAccount\":true,\"actionOnly\":true}",
  1031. "sortNo": 7,
  1032. "conditionExpr": "",
  1033. "messageTemplate": ""
  1034. },
  1035. {
  1036. "nodeName": "出行前5天等待",
  1037. "nextNodeCode": "PRE_TRIP_CARE",
  1038. "nodeCode": "WAIT_PRE_TRIP",
  1039. "maxRounds": 0,
  1040. "nodeType": 4,
  1041. "nodeConfig": "{\"waitType\":\"date_offset\",\"offsetDays\":-5,\"dateField\":\"travel_date\",\"timeoutHours\":720}",
  1042. "sortNo": 8,
  1043. "conditionExpr": "",
  1044. "messageTemplate": ""
  1045. },
  1046. {
  1047. "nodeName": "出行前提醒",
  1048. "nextNodeCode": "WEATHER_TIPS",
  1049. "nodeCode": "PRE_TRIP_CARE",
  1050. "maxRounds": 0,
  1051. "nodeType": 10,
  1052. "nodeConfig": "{\"delivery\":\"proactive\",\"careType\":\"pre_trip\",\"awaitReply\":true}",
  1053. "sortNo": 9,
  1054. "conditionExpr": "",
  1055. "messageTemplate": "您好,离您的云南精品线出行还有5天啦!请准备好身份证/护照、常用药品和舒适鞋服。需要我帮您核对行程清单吗?"
  1056. },
  1057. {
  1058. "nodeName": "天气与玩要建议",
  1059. "nextNodeCode": "IN_TRIP_CARE",
  1060. "nodeCode": "WEATHER_TIPS",
  1061. "maxRounds": 0,
  1062. "nodeType": 14,
  1063. "nodeConfig": "{\"apiKey\":\"weather_travel_tips\",\"sideTask\":false,\"smartApi\":true}",
  1064. "sortNo": 10,
  1065. "conditionExpr": "",
  1066. "messageTemplate": "根据您目的地近期天气和同行人员情况,建议您注意防晒补水、老人小孩备常用药。具体玩游项目我会结合天气给您建议。"
  1067. },
  1068. {
  1069. "nodeName": "行中关怀",
  1070. "nextNodeCode": "SURVEY",
  1071. "nodeCode": "IN_TRIP_CARE",
  1072. "maxRounds": 0,
  1073. "nodeType": 10,
  1074. "nodeConfig": "{\"delivery\":\"proactive\",\"careType\":\"in_trip\",\"awaitReply\":true}",
  1075. "sortNo": 11,
  1076. "conditionExpr": "",
  1077. "messageTemplate": "旅途还顺利吗?景点玩得怎么样?如有任何问题随时告诉我,小美一直在线。"
  1078. },
  1079. {
  1080. "nodeName": "满意度调查",
  1081. "nextNodeCode": "WAIT_HOLIDAY",
  1082. "nodeCode": "SURVEY",
  1083. "maxRounds": 0,
  1084. "nodeType": 11,
  1085. "nodeConfig": "{\"surveyType\":\"satisfaction\",\"awaitReply\":true}",
  1086. "sortNo": 12,
  1087. "conditionExpr": "",
  1088. "messageTemplate": "感谢您选择测试旅行社!方便用1分钟做个满意度调查吗?您的反馈帮我们做得更好。"
  1089. },
  1090. {
  1091. "nodeName": "节日营销等待",
  1092. "nextNodeCode": "HOLIDAY_PROMO",
  1093. "nodeCode": "WAIT_HOLIDAY",
  1094. "maxRounds": 0,
  1095. "nodeType": 32,
  1096. "nodeConfig": "{\"delayDays\":30,\"cronHint\":\"holiday_minus_30d\"}",
  1097. "sortNo": 13,
  1098. "conditionExpr": "",
  1099. "messageTemplate": ""
  1100. },
  1101. {
  1102. "nodeName": "节日营销触达",
  1103. "nextNodeCode": "END",
  1104. "nodeCode": "HOLIDAY_PROMO",
  1105. "maxRounds": 0,
  1106. "nodeType": 13,
  1107. "nodeConfig": "{\"repurchaseType\":\"holiday\",\"delivery\":\"proactive\"}",
  1108. "sortNo": 14,
  1109. "conditionExpr": "",
  1110. "messageTemplate": "您好!临近节日,想了解下您近期有没有出行计划?云南精品线有新线路优惠,感兴趣我发您看看。"
  1111. },
  1112. {
  1113. "nodeName": "意向分支",
  1114. "nextNodeCode": "",
  1115. "nodeCode": "JUDGE",
  1116. "maxRounds": 0,
  1117. "nodeType": 3,
  1118. "nodeConfig": "{}",
  1119. "sortNo": 15,
  1120. "conditionExpr": "{\"branches\":[{\"nextNodeCode\":\"ORDER_ACTION\",\"condition\":{\"field\":\"customerIntent\",\"operator\":\"eq\",\"value\":\"purchase\"},\"desc\":\"\\u7b7e\\u5355\"},{\"nextNodeCode\":\"WAIT_PRE_TRIP\",\"condition\":{\"field\":\"customerIntent\",\"operator\":\"eq\",\"value\":\"booked\"},\"desc\":\"\\u5df2\\u8ba2\\u8fdb\\u5165\\u51fa\\u884c\\u524d\"},{\"nextNodeCode\":\"HOLIDAY_PROMO\",\"condition\":{\"field\":\"customerIntent\",\"operator\":\"eq\",\"value\":\"inquiry\"},\"desc\":\"\\u7ee7\\u7eed\\u57f9\\u80b2\"}],\"defaultNodeCode\":\"WAIT_HOLIDAY\"}",
  1121. "messageTemplate": ""
  1122. },
  1123. {
  1124. "nodeName": "结束",
  1125. "nextNodeCode": "",
  1126. "nodeCode": "END",
  1127. "maxRounds": 0,
  1128. "nodeType": 5,
  1129. "nodeConfig": "{}",
  1130. "sortNo": 16,
  1131. "conditionExpr": "",
  1132. "messageTemplate": ""
  1133. }
  1134. ],
  1135. "industryType": "travel",
  1136. "templateName": "旅游销冠全链路(A旅游公司)",
  1137. "_generateParam": {
  1138. "advisorName": "小美",
  1139. "companyShortName": "测试旅行社",
  1140. "industryType": "travel",
  1141. "advisorRole": "金牌旅行顾问",
  1142. "mainProduct": "云南精品线"
  1143. },
  1144. "status": 1
  1145. },
  1146. "usedFallback": true,
  1147. "passed": true,
  1148. "workflowId": 64,
  1149. "message": "generate and confirm ok"
  1150. },
  1151. "phase2Learning": {
  1152. "hotReplayRowsBefore": 70,
  1153. "hotReplayRowsAfter": 72,
  1154. "delta": 2,
  1155. "passed": true,
  1156. "status": "ok",
  1157. "hint": "async write ok",
  1158. "message": "learning replay ok",
  1159. "verify": {
  1160. "companyId": 338,
  1161. "archiveTableExists": false,
  1162. "hotIndexExists": true,
  1163. "hotReplayRows": 72,
  1164. "eventLogRows": 72,
  1165. "archiveRows": 0,
  1166. "archiveNote": "table missing or query failed",
  1167. "status": "ok"
  1168. }
  1169. },
  1170. "stress": {
  1171. "multiTurn": {
  1172. "dialogueStage": "stressMultiTurn",
  1173. "turns": 6,
  1174. "avgScore": 67.5,
  1175. "minScore": 0.0,
  1176. "passed": true,
  1177. "message": "multiTurn ok"
  1178. },
  1179. "rateLimit": {
  1180. "cooldownAt": 6,
  1181. "passed": true,
  1182. "message": "rate limit triggered",
  1183. "instanceId": 485
  1184. },
  1185. "waitWake": {
  1186. "passed": true,
  1187. "message": "lifecycle wait wake ok",
  1188. "statusAfter": "running",
  1189. "resumeIndex": 8,
  1190. "currentIndexAfter": 9,
  1191. "instanceId": 486
  1192. },
  1193. "longMessage": {
  1194. "passed": true,
  1195. "message": "long message handled",
  1196. "code": 200,
  1197. "messageLength": 11000
  1198. },
  1199. "concurrentStart": {
  1200. "passed": true,
  1201. "successCount": 3,
  1202. "instanceIds": [
  1203. 488,
  1204. 489,
  1205. 490
  1206. ],
  1207. "message": "3 burst starts ok"
  1208. },
  1209. "emptyMessage": {
  1210. "passed": true,
  1211. "code": 200,
  1212. "message": "empty message handled"
  1213. },
  1214. "completedReentry": {
  1215. "statusBeforeReentry": "completed",
  1216. "responseMsg": "工作流实例不在运行状态",
  1217. "passed": true,
  1218. "message": "completed reentry handled"
  1219. },
  1220. "instanceState": {
  1221. "passed": true,
  1222. "state": {
  1223. "variables": {
  1224. "_lobsterSimMinuteUnit": 10,
  1225. "workflowStage": "consult",
  1226. "channelType": "TEST",
  1227. "_actionOutcomes": [
  1228. ],
  1229. "activeGoals": [
  1230. ],
  1231. "_recentOutbound": [
  1232. ],
  1233. "conversationMode": "active",
  1234. "_conversationModel": "{\"stages\":[{\"code\":\"consult\",\"promptHint\":\"你是小美,测试旅行社旅行顾问。客户来自直播间,先破冰并了解是否已有出行计划。\",\"label\":\"直播加微破冰\",\"goals\":[]},{\"code\":\"collect\",\"promptHint\":\"逐步询问目的地、日期、人数、预算;一次只问一个关键问题。\",\"label\":\"需求采集打标\",\"goals\":[{\"field\":\"destination\",\"collected\":false,\"label\":\"目的地\",\"required\":true},{\"field\":\"travel_date\",\"collected\":false,\"label\":\"出行日期\",\"required\":true},{\"field\":\"budget\",\"collected\":false,\"label\":\"预算\",\"required\":true},{\"field\":\"pax\",\"collected\":false,\"label\":\"出行人数\",\"required\":true}]},{\"code\":\"offer\",\"promptHint\":\"基于采集信息推荐云南精品线,突出亮点与优惠,自然引导签单。\",\"label\":\"线路推荐促单\",\"goals\":[]},{\"code\":\"pre_trip\",\"promptHint\":\"出行前5天提醒证件、行李、当地天气与注意事项。\",\"label\":\"出行前关怀\",\"goals\":[]},{\"code\":\"in_trip\",\"promptHint\":\"行程中主动问候,询问是否遇到问题,给出景点玩要建议。\",\"label\":\"行中关怀\",\"goals\":[]},{\"code\":\"post_trip\",\"promptHint\":\"行程结束后收集满意度与改进建议。\",\"label\":\"满意度回访\",\"goals\":[]},{\"code\":\"repurchase\",\"promptHint\":\"大节日前30天关怀,了解是否有新的出行计划并推荐产品。\",\"label\":\"节日营销\",\"goals\":[]}],\"sideTasks\":[{\"triggerIntents\":[\"purchase\",\"high_intent\",\"booked\"],\"nodeCode\":\"TAG_AUTO\",\"action\":\"add_tag\",\"nodeType\":9},{\"triggerIntents\":[\"purchase\",\"order\",\"book\"],\"nodeCode\":\"ORDER_ACTION\",\"action\":\"create_order\",\"nodeType\":7}],\"defaultStage\":\"consult\",\"description\":\"旅游全链路:会话常驻,节点负责打标/签单/出行关怀/满意度/节日营销\",\"version\":2}",
  1235. "validation": true
  1236. },
  1237. "instanceId": 493,
  1238. "completedNodes": 0,
  1239. "heartbeat": {
  1240. "instanceId": 493,
  1241. "registered": true,
  1242. "lastHeartbeatTime": "Tue Jun 23 02:32:46 CST 2026",
  1243. "lastHeartbeatTimestamp": 1782153166267,
  1244. "elapsedMinutes": 0,
  1245. "timeoutMinutes": 1440,
  1246. "active": true,
  1247. "status": "active",
  1248. "message": "实例心跳正常"
  1249. },
  1250. "currentNodeName": "开始",
  1251. "startTime": "2026-06-23 02:32:44",
  1252. "currentNodeIndex": 0,
  1253. "lastActivityTime": "2026-06-23 02:32:44",
  1254. "status": "running",
  1255. "totalNodes": 16
  1256. },
  1257. "message": "instance state ok"
  1258. },
  1259. "qualityDirect": {
  1260. "rawScore": 125,
  1261. "normalizedPercent": 78.125,
  1262. "passThreshold": 144,
  1263. "passScorePercent": 90,
  1264. "floorRaw": 96,
  1265. "productionTargetMet": false,
  1266. "passed": true,
  1267. "message": "score ok but below production target 144"
  1268. }
  1269. }
  1270. },
  1271. "dialogueScript": {
  1272. "industryType": "travel",
  1273. "industryLabel": "旅游销冠全链路",
  1274. "stageKeys": [
  1275. "postBookingPreTripMultiTurn",
  1276. "capabilityTriggers",
  1277. "consultMultiTurn",
  1278. "postBookingLifecycle",
  1279. "bookingFunnel",
  1280. "stressMultiTurn",
  1281. "holidayPromoMultiTurn",
  1282. "preTripCareMultiTurn"
  1283. ],
  1284. "stageLineCounts": {
  1285. "postBookingPreTripMultiTurn": 3,
  1286. "capabilityTriggers": 6,
  1287. "consultMultiTurn": 6,
  1288. "postBookingLifecycle": 9,
  1289. "bookingFunnel": 10,
  1290. "stressMultiTurn": 6,
  1291. "holidayPromoMultiTurn": 3,
  1292. "preTripCareMultiTurn": 3
  1293. }
  1294. },
  1295. "qualityGateConfig": {
  1296. "enabled": true,
  1297. "passScorePercent": 90,
  1298. "targetScorePercent": 75,
  1299. "minNodeScorePercent": 60,
  1300. "minE2eAvgScorePercent": 75,
  1301. "multiturnMinAvgScorePercent": 45
  1302. },
  1303. "failures": [
  1304. "runtimeCapabilities: 意图未匹配: \"云南天气怎么样\" -\u003e query_weather; start_survey 工具执行未返回数据",
  1305. "capabilityDialogue: 未匹配工具: 云南7月份天气怎么样,需要带什么衣服; 工具执行失败: 有没有适合带老人的新线路推荐 -\u003e query_product; 工具执行失败: 满意度打5分,服务挺好的 -\u003e start_survey",
  1306. "lifecycleMultiTurnDialogue: lifecycle multi-turn dialogue failed",
  1307. "qualityGate: avg 54.81 \u003c min 75.0; 3 node(s) below min 60.0; 4 node(s) below production target 75.0"
  1308. ],
  1309. "passed": false,
  1310. "durationMs": 553632,
  1311. "templateIdUsed": 63
  1312. }