| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205 |
- {
- "companyId": 338,
- "includeTravelChain": true,
- "includeTravelStress": false,
- "startedAt": "2026-06-19 12:21:26",
- "sections": {
- "engineHealth": {
- "passed": true,
- "health": {
- "companyId": 338,
- "healthy": true,
- "missingCore": [
- ],
- "missingOptional": [
- ],
- "passThreshold": 120
- },
- "message": "core beans wired"
- },
- "integrationTests": {
- "passed": false,
- "summary": "2/4 tests passed in 1222ms",
- "details": [
- "[FAIL] NodeTypeService: START node not found",
- "[FAIL] DynamicNodeExecutor: Judgment node execution failed",
- "[PASS] MultiModelWorkflowGenerator: All tests passed",
- "[PASS] ModelConfigService: All tests passed"
- ],
- "executionTimeMs": 1222,
- "message": "2/4 tests passed in 1222ms"
- },
- "phase2Replay": {
- "passed": true,
- "verify": {
- "companyId": 338,
- "archiveTableExists": false,
- "hotIndexExists": true,
- "hotReplayRows": 64,
- "eventLogRows": 64,
- "archiveRows": 0,
- "archiveNote": "table missing or query failed",
- "status": "ok"
- },
- "message": "phase2 replay verify ok"
- },
- "pageLinkProbes": {
- "totalPages": 32,
- "requiredTotal": 19,
- "requiredPassed": 17,
- "optionalSkipped": 0,
- "failures": [
- "/lobster/forbidden-words: \r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\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/LobsterReplaceWordMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, tenant_id, word_type, content, replace_text, enabled, sort, create_time FROM company_lobster_replace_word WHERE (tenant_id = 0 OR tenant_id = ?) AND word_type = ? ORDER BY tenant_id, sort DESC, id DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist",
- "/lobster/typo-words: \r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\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/LobsterReplaceWordMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, tenant_id, word_type, content, replace_text, enabled, sort, create_time FROM company_lobster_replace_word WHERE (tenant_id = 0 OR tenant_id = ?) AND word_type = ? ORDER BY tenant_id, sort DESC, id DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist"
- ],
- "passed": false,
- "durationMs": 2449,
- "pages": [
- {
- "path": "/lobster/company-workflowLobster",
- "title": "Workflow templates",
- "probe": "templateList",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "templates=37"
- },
- {
- "path": "/lobster/workflow-execution",
- "title": "Workflow execution tasks",
- "probe": "instanceList",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "instances=413"
- },
- {
- "path": "/lobster/instance",
- "title": "Instance monitor",
- "probe": "instanceMonitor",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "monitor list ok, count=413"
- },
- {
- "path": "/lobster/prompt",
- "title": "Prompt management",
- "probe": "promptList",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "prompt rows=49"
- },
- {
- "path": "/lobster/sensitive-words",
- "title": "Sensitive words",
- "probe": "sensitiveWords",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "words=87"
- },
- {
- "path": "/lobster/forbidden-words",
- "title": "Forbidden words",
- "probe": "forbiddenWords",
- "required": true,
- "passed": false,
- "status": "FAIL",
- "message": "\r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\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/LobsterReplaceWordMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, tenant_id, word_type, content, replace_text, enabled, sort, create_time FROM company_lobster_replace_word WHERE (tenant_id = 0 OR tenant_id = ?) AND word_type = ? ORDER BY tenant_id, sort DESC, id DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist"
- },
- {
- "path": "/lobster/typo-words",
- "title": "Typo words",
- "probe": "typoWords",
- "required": true,
- "passed": false,
- "status": "FAIL",
- "message": "\r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\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/LobsterReplaceWordMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, tenant_id, word_type, content, replace_text, enabled, sort, create_time FROM company_lobster_replace_word WHERE (tenant_id = 0 OR tenant_id = ?) AND word_type = ? ORDER BY tenant_id, sort DESC, id DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist"
- },
- {
- "path": "/lobster/conversation-summary",
- "title": "Conversation summary",
- "probe": "conversationSummary",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "summaries=13"
- },
- {
- "path": "/lobster/summary-config",
- "title": "Summary config",
- "probe": "summaryConfig",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "summary configs=0"
- },
- {
- "path": "/lobster/profile-config",
- "title": "Profile config",
- "probe": "profileConfig",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "profile fields=0"
- },
- {
- "path": "/lobster/channel-config",
- "title": "Channel config",
- "probe": "channelTypes",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "channels=14"
- },
- {
- "path": "/lobster/channel-plugin",
- "title": "Channel plugins",
- "probe": "channelPlugins",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "plugins=14"
- },
- {
- "path": "/lobster/api-registry",
- "title": "API registry",
- "probe": "apiRegistry",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "apis=0"
- },
- {
- "path": "/lobster/sales-corpus",
- "title": "Sales corpus",
- "probe": "salesCorpus",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "corpus=0"
- },
- {
- "path": "/lobster/chat-aggregate",
- "title": "Chat aggregate",
- "probe": "chatAggregate",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "sessions=29"
- },
- {
- "path": "/lobster/industry-bootstrap",
- "title": "Industry bootstrap",
- "probe": "industryPacks",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "packs=7"
- },
- {
- "path": "/lobster/execution-config",
- "title": "Execution config",
- "probe": "executionConfig",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "execution config loaded"
- },
- {
- "path": "/lobster/identity-config",
- "title": "Identity config",
- "probe": "identityConfig",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "identity config loaded"
- },
- {
- "path": "/lobster/semantic-keywords",
- "title": "Semantic keywords",
- "probe": "semanticKeywords",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "keywords=1"
- },
- {
- "path": "/lobster/dedup-config",
- "title": "Dedup config",
- "probe": "dedupConfig",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "dedup configs=0"
- },
- {
- "path": "/lobster/model-route",
- "title": "Model route",
- "probe": "modelRoute",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "workflow model=gpt-4"
- },
- {
- "path": "/lobster/optimization",
- "title": "AI optimization audit",
- "probe": "optimization",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "optimization stats=5"
- },
- {
- "path": "/lobster/dynamic-impl",
- "title": "Dynamic node approval",
- "probe": "dynamicImpl",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "pending impls=0"
- },
- {
- "path": "/lobster/dashboard",
- "title": "Engine dashboard",
- "probe": "dashboard",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "dashboard keys=8"
- },
- {
- "path": "/lobster/token-stats",
- "title": "Token stats",
- "probe": "tokenStats",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "token summary loaded"
- },
- {
- "path": "/lobster/evolution",
- "title": "Evolution engine",
- "probe": "evolution",
- "required": true,
- "passed": true,
- "status": "OK",
- "message": "evolution metrics=6"
- },
- {
- "path": "/lobster/chat-test",
- "title": "Chat test",
- "probe": "chatTest",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "e2e test service ready"
- },
- {
- "path": "/lobster/ab-test",
- "title": "AB / GEPA optimization",
- "probe": "abTest",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "active ab tests=0"
- },
- {
- "path": "/lobster/profile",
- "title": "Customer profile hub",
- "probe": "userProfile",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "profile fields=0"
- },
- {
- "path": "/lobster/qdrant",
- "title": "Vector knowledge base",
- "probe": "qdrant",
- "required": false,
- "passed": false,
- "status": "WARN",
- "message": "\r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_vector_store\u0027 doesn\u0027t exist\r\n### The error may exist in com/fs/company/mapper/LobsterVectorStoreMapper.java (best guess)\r\n### The error may involve com.fs.company.mapper.LobsterVectorStoreMapper.selectByCompanyAndCategory-Inline\r\n### The error occurred while setting parameters\r\n### SQL: SELECT * FROM lobster_vector_store WHERE company_id = ? AND category = ?\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_vector_store\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.lobster_vector_store\u0027 doesn\u0027t exist"
- },
- {
- "path": "/lobster/global-stats",
- "title": "Global evolution stats",
- "probe": "globalStats",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "global metrics=6"
- },
- {
- "path": "/lobster/event-audit",
- "title": "Event node audit",
- "probe": "eventAudit",
- "required": false,
- "passed": true,
- "status": "OK",
- "message": "audits=0"
- }
- ]
- },
- "travelFullChain": {
- "companyId": 338,
- "includeStress": false,
- "startedAt": "2026-06-19 12:21:30",
- "sections": {
- "enginePrompts": {
- "expectedCatalogKeys": 49,
- "newlyInserted": 0,
- "missingKeys": [
- ],
- "platformKeyCount": 49,
- "passed": true,
- "message": "platform engine prompts complete (49 keys)"
- },
- "triggerExclude": {
- "passed": true,
- "errors": [
- ],
- "message": "trigger exclude/sarcasm/schedule checks ok"
- },
- "template": {
- "passed": true,
- "workflowId": 46,
- "templateCode": "LOB_1781748230288",
- "source": "existing",
- "message": "travel template found"
- },
- "lifecycleCoverage": {
- "coverageRatio": 1.0,
- "minCoverage": 0.75,
- "nodeCount": 13,
- "requiredNodeCount": 12,
- "missingNodes": [
- ],
- "passed": true,
- "message": "lifecycle nodes covered"
- },
- "nodePromptsPlanned": {
- "promptNodeTarget": 6,
- "promptNodeFilled": 6,
- "emptyPromptNodes": [
- ],
- "passed": true,
- "message": "key node prompts present"
- },
- "lifecycleSimulation": {
- "waitPreTripConfigured": true,
- "tagAutoConfigured": true,
- "orderActionConfigured": true,
- "holidayWaitConfigured": true,
- "passed": true,
- "message": "lifecycle orchestration nodes configured"
- },
- "lifecycleRuntime": {
- "simMinuteUnit": 10,
- "simDayEqualsMinutes": 10,
- "schedulerWakeWaitMs": 3500,
- "preTripWaitSchedule10m": {
- "waitUntil": 1781843400000,
- "expectedWaitAt": 1781843400000,
- "travelAt": "2026-06-19T13:21:46.242324600",
- "waitInRealMinutes": 8,
- "diffMinutes": 0,
- "simTimeScale": true,
- "passed": true,
- "message": "T-5 10m sim schedule ok"
- },
- "preTripWaitWake": {
- "passed": true,
- "message": "lifecycle wait wake ok",
- "statusAfter": "running",
- "resumeIndex": 5,
- "currentIndexAfter": 6,
- "instanceId": 414
- },
- "preTripSchedulerWake10m": {
- "scheduledWakeAt": 1781842910623,
- "schedulerWaitMs": 3500,
- "passed": true,
- "message": "scheduler 10m sim wake ok",
- "statusAfter": "running",
- "resumeIndex": 5,
- "currentIndexAfter": 6,
- "instanceId": 415
- },
- "holidayWaitSchedule10m": {
- "waitUntil": 1781860800000,
- "expectedWaitAt": 1781860800000,
- "waitInRealMinutes": 298,
- "simHolidayDays": 30,
- "simRealMinutes": 300,
- "diffMinutes": 0,
- "passed": true,
- "message": "holiday 10m sim schedule ok"
- },
- "holidayWaitWake": {
- "passed": true,
- "message": "lifecycle wait wake ok",
- "statusAfter": "completed",
- "resumeIndex": 10,
- "currentIndexAfter": 10,
- "instanceId": 416
- },
- "holidaySchedulerWake10m": {
- "scheduledWakeAt": 1781842918857,
- "schedulerWaitMs": 3500,
- "passed": true,
- "message": "scheduler 10m sim wake ok",
- "statusAfter": "completed",
- "resumeIndex": 10,
- "currentIndexAfter": 10,
- "instanceId": 417
- },
- "passed": true,
- "message": "lifecycle 10m sim schedule/wake ok"
- },
- "lifecycleFullFlowSim": {
- "instanceId": 418,
- "finalStatus": "completed",
- "finalNodeIndex": 10,
- "milestones": [
- "STARTED",
- "T5_SCHEDULED",
- "T5_WAITING",
- "PRE_TRIP_CARE",
- "PRE_TRIP_MULTITURN",
- "HOLIDAY_WAITING",
- "HOLIDAY_PROMO"
- ],
- "errors": [
- ],
- "passed": true,
- "message": "full lifecycle 10m sim flow ok",
- "simMinuteUnit": 10
- },
- "lifecycleExceptions": {
- "waitNotExpired": {
- "passed": true,
- "message": "not-expired wait rejected advance",
- "statusAfter": "waiting"
- },
- "prematureScheduler": {
- "passed": true,
- "message": "premature scheduler did not wake"
- },
- "blockedSchedulerSkip": {
- "passed": true,
- "message": "blocked instance skipped by scheduler"
- },
- "blockedForceWake": {
- "passed": true,
- "message": "blocked force wake rejected"
- },
- "overdueT5SkipWait": {
- "waitUntil": 1781841000000,
- "overdue": true,
- "wouldSkipSchedule": true,
- "passed": true,
- "message": "overdue T-5 skips wait schedule"
- },
- "missingTravelDate": {
- "waitUntil": 1781843675530,
- "expectedFallbackMinutes": 10,
- "passed": true,
- "message": "missing travel_date sim fallback ok"
- },
- "completedRejectWake": {
- "passed": true,
- "message": "completed instance rejects wake"
- },
- "missingResumeIndex": {
- "passed": true,
- "message": "missing resume index fallback ok"
- },
- "doubleWake": {
- "passed": true,
- "message": "double wake idempotent",
- "statusAfter": "running"
- },
- "passed": true,
- "message": "lifecycle exception handling ok"
- },
- "lifecycleMultiTurnDialogue": {
- "bookingTurnCount": 10,
- "postBookingTurnCount": 9,
- "consultMultiTurn": {
- "turns": 5,
- "avgScore": 62.0,
- "minScore": 0.0,
- "passed": true,
- "message": "node multiTurn ok",
- "instanceId": 426,
- "inputCount": 6
- },
- "postBookingMultiTurnFlow": {
- "instanceId": 427,
- "preTripMultiTurn": {
- "turns": 3,
- "avgScore": 78.66666666666667,
- "minScore": 78.0,
- "passed": true,
- "message": "node multiTurn ok"
- },
- "holidayMultiTurn": {
- "turns": 1,
- "avgScore": 79.0,
- "minScore": 79.0,
- "passed": false,
- "message": "node multiTurn below threshold"
- },
- "milestones": [
- "PRE_TRIP",
- "PRE_TRIP_MT",
- "HOLIDAY"
- ],
- "errors": [
- "HOLIDAY_MT"
- ],
- "dialogueTurns": 9,
- "passed": false,
- "message": "post-booking multi-turn failed: [HOLIDAY_MT]"
- },
- "passed": false,
- "message": "lifecycle multi-turn dialogue failed"
- },
- "e2eDialogue": {
- "dialogueTurnCount": 10,
- "runId": "7317026354b84c85aef7a08d222ed3c8",
- "status": "SUCCESS",
- "instanceId": 428,
- "totalScore": 69.75,
- "passedNodeCnt": 10,
- "totalNodeCnt": 10,
- "evolutionCount": 1,
- "nodeTraces": 10,
- "minNodeScore": 76.875,
- "maxNodeScore": 76.875,
- "nodesBelowTarget": 0,
- "nodesBelowMin": 0,
- "nodeScoreDetail": [
- {
- "nodeCode": "初始化咨询阶段",
- "score": 76.875,
- "passed": true
- }
- ],
- "passed": true,
- "message": "e2e ok"
- },
- "qualityGate": {
- "enabled": true,
- "targetScorePercent": 75.0,
- "minE2eAvgScorePercent": 75.0,
- "minNodeScorePercent": 60.0,
- "passScorePercent": 75,
- "totalScore": 69.75,
- "nodesBelowTarget": 0,
- "nodesBelowMin": 0,
- "minNodeScore": 76.875,
- "maxNodeScore": 76.875,
- "nodeScoreDetail": [
- {
- "nodeCode": "初始化咨询阶段",
- "score": 76.875,
- "passed": true
- }
- ],
- "passed": false,
- "message": "avg 69.75 \u003c min 75.0"
- },
- "summary": {
- "instanceId": 428,
- "externalUserId": "999338001",
- "asyncDbSummary": false,
- "historyLines": 20,
- "syncSummaryLength": 73,
- "microSummaryLength": 109,
- "cachedSummaryOk": false,
- "dbSummaryRows": 0,
- "historyPersistError": "\r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column \u0027channel_type\u0027 in \u0027where clause\u0027\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/company/LobsterConversationSummaryMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT summary_text FROM lobster_conversation_summary WHERE external_user_id = ? AND channel_type = ? AND (instance_id = ? OR instance_id IS NULL) AND del_flag = 0 ORDER BY create_time DESC LIMIT 1\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \u0027channel_type\u0027 in \u0027where clause\u0027\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column \u0027channel_type\u0027 in \u0027where clause\u0027",
- "passed": false,
- "message": "async DB summary missing or too short"
- },
- "memoryPipeline": {
- "externalUserId": "999338001",
- "instanceId": 428,
- "summaryOk": false,
- "factError": "\r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column \u0027channel_type\u0027 in \u0027where clause\u0027\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/CustomerFactMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT fact_key, fact_value, create_time FROM customer_fact WHERE company_id = ? AND external_user_id = ? AND channel_type = ? ORDER BY create_time DESC LIMIT 20\r\n### Cause: java.sql.SQLSyntaxErrorException: Unknown column \u0027channel_type\u0027 in \u0027where clause\u0027\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column \u0027channel_type\u0027 in \u0027where clause\u0027",
- "factCount": 0,
- "factKeys": [
- ],
- "passed": false,
- "message": "no summary and no customer_fact rows"
- },
- "evolutionAnalyze": {
- "e2eEvolutionCount": 1,
- "evolutionLogsBefore": 68,
- "analyzeInvoked": true,
- "analyzeMessage": "analyzeAndSuggest ok",
- "evolutionLogsAfter": 68,
- "evolutionLogsDelta": 0,
- "pendingSuggestions": 0,
- "passed": true,
- "message": "evolution analyze ok"
- },
- "sensitiveWord": {
- "scopeNote": "lobster SensitiveWordService + evolve step9; not live/call/CompanyAiSensitiveWord AC",
- "layers": {
- "defaultLib": {
- "detectCount": 1,
- "filtered": "推荐云南精品线,***,欢迎咨询",
- "passed": true
- },
- "customCrud": {
- "word": "LOBSTER_VAL_338",
- "hit": true,
- "filtered": "行程含***内容",
- "passed": true
- },
- "highRisk": {
- "word": "LOBSTER_FRAUD_338",
- "highRisk": true,
- "passed": true
- },
- "evolveStep9Simulation": {
- "rawHasSensitive": true,
- "wouldTransferToHuman": true,
- "finalReply": "欢迎咨询,预期收益,***",
- "passed": true
- },
- "wordListLoaded": {
- "count": 89,
- "passed": true
- }
- },
- "passed": true,
- "message": "sensitive word pipeline ok"
- },
- "aiGenerate": {
- "recordNo": "LOB_1781843386086",
- "generateUseLlm": false,
- "fallbackGenerate": true,
- "finalStatus": 1,
- "detail": {
- "conversationModel": {
- "defaultStage": "consult",
- "description": "旅游全链路:会话常驻,节点负责打标/签单/出行关怀/满意度/节日营销",
- "version": 2,
- "stages": [
- {
- "code": "consult",
- "promptHint": "你是小美,测试旅行社旅行顾问。客户来自直播间,先破冰并了解是否已有出行计划。",
- "label": "直播加微破冰",
- "goals": [
- ]
- },
- {
- "code": "collect",
- "promptHint": "逐步询问目的地、日期、人数、预算;一次只问一个关键问题。",
- "label": "需求采集打标",
- "goals": [
- {
- "collected": false,
- "label": "目的地",
- "required": true,
- "field": "destination"
- },
- {
- "collected": false,
- "label": "出行日期",
- "required": true,
- "field": "travel_date"
- },
- {
- "collected": false,
- "label": "预算",
- "required": true,
- "field": "budget"
- },
- {
- "collected": false,
- "label": "出行人数",
- "required": true,
- "field": "pax"
- }
- ]
- },
- {
- "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",
- "nodeType": 9,
- "action": "add_tag"
- },
- {
- "triggerIntents": [
- "purchase",
- "order",
- "book"
- ],
- "nodeCode": "ORDER_ACTION",
- "nodeType": 7,
- "action": "create_order"
- }
- ]
- },
- "variables": [
- {
- "varName": "客户姓名",
- "label": "客户姓名",
- "source": "user_profile",
- "type": "string",
- "varType": "string",
- "sourceType": "user_profile",
- "name": "customerName",
- "varCode": "customerName"
- },
- {
- "varName": "目的地",
- "label": "目的地",
- "source": "conversation",
- "type": "string",
- "varType": "string",
- "sourceType": "conversation",
- "name": "destination",
- "varCode": "destination"
- },
- {
- "varName": "出行日期",
- "label": "出行日期",
- "source": "conversation",
- "type": "date",
- "varType": "date",
- "sourceType": "conversation",
- "name": "travel_date",
- "varCode": "travel_date"
- },
- {
- "varName": "预算",
- "label": "预算",
- "source": "conversation",
- "type": "string",
- "varType": "string",
- "sourceType": "conversation",
- "name": "budget",
- "varCode": "budget"
- },
- {
- "varName": "出行人数",
- "label": "出行人数",
- "source": "conversation",
- "type": "number",
- "varType": "number",
- "sourceType": "conversation",
- "name": "pax",
- "varCode": "pax"
- },
- {
- "varName": "测试旅行社",
- "label": "测试旅行社",
- "source": "manual",
- "type": "string",
- "varType": "string",
- "sourceType": "manual",
- "name": "company_short_name",
- "varCode": "company_short_name"
- },
- {
- "varName": "小美",
- "label": "小美",
- "source": "manual",
- "type": "string",
- "varType": "string",
- "sourceType": "manual",
- "name": "advisor_name",
- "varCode": "advisor_name"
- },
- {
- "varName": "云南精品线",
- "label": "云南精品线",
- "source": "manual",
- "type": "string",
- "varType": "string",
- "sourceType": "manual",
- "name": "main_product",
- "varCode": "main_product"
- },
- {
- "varName": "当前阶段",
- "label": "当前阶段",
- "source": "manual",
- "type": "string",
- "varType": "string",
- "sourceType": "manual",
- "name": "workflowStage",
- "varCode": "workflowStage"
- },
- {
- "varName": "客户意向",
- "label": "客户意向",
- "source": "conversation",
- "type": "string",
- "varType": "string",
- "sourceType": "conversation",
- "name": "customerIntent",
- "varCode": "customerIntent"
- }
- ],
- "edges": [
- {
- "targetNodeCode": "INIT_STAGE",
- "sourceNodeCode": "START",
- "edgeLabel": "启动"
- },
- {
- "targetNodeCode": "TAG_AUTO",
- "sourceNodeCode": "INIT_STAGE",
- "edgeLabel": "采集后打标"
- },
- {
- "targetNodeCode": "JUDGE",
- "sourceNodeCode": "TAG_AUTO",
- "edgeLabel": "分支"
- },
- {
- "targetNodeCode": "ORDER_ACTION",
- "sourceNodeCode": "JUDGE",
- "edgeLabel": "签单"
- },
- {
- "targetNodeCode": "WAIT_PRE_TRIP",
- "sourceNodeCode": "JUDGE",
- "edgeLabel": "已订"
- },
- {
- "targetNodeCode": "WAIT_HOLIDAY",
- "sourceNodeCode": "JUDGE",
- "edgeLabel": "培育"
- },
- {
- "targetNodeCode": "WAIT_PRE_TRIP",
- "sourceNodeCode": "ORDER_ACTION",
- "edgeLabel": "进入出行前"
- },
- {
- "targetNodeCode": "PRE_TRIP_CARE",
- "sourceNodeCode": "WAIT_PRE_TRIP",
- "edgeLabel": "T-5触达"
- },
- {
- "targetNodeCode": "WEATHER_TIPS",
- "sourceNodeCode": "PRE_TRIP_CARE",
- "edgeLabel": "天气建议"
- },
- {
- "targetNodeCode": "IN_TRIP_CARE",
- "sourceNodeCode": "WEATHER_TIPS",
- "edgeLabel": "行中"
- },
- {
- "targetNodeCode": "SURVEY",
- "sourceNodeCode": "IN_TRIP_CARE",
- "edgeLabel": "满意度"
- },
- {
- "targetNodeCode": "WAIT_HOLIDAY",
- "sourceNodeCode": "SURVEY",
- "edgeLabel": "节日等待"
- },
- {
- "targetNodeCode": "HOLIDAY_PROMO",
- "sourceNodeCode": "WAIT_HOLIDAY",
- "edgeLabel": "节日营销"
- },
- {
- "targetNodeCode": "END",
- "sourceNodeCode": "HOLIDAY_PROMO",
- "edgeLabel": "结束"
- }
- ],
- "description": "旅游公司销冠全流程:直播加微→破冰→采集出行需求→线路推荐→促单签单→出行前关怀→旅途中关怀→回访调研→节日营销→循环推荐",
- "templateCode": "TRAVEL_TOP_SALES_001",
- "errorMsg": "已使用行业兜底模板: validation fast fallback",
- "brandContext": {
- "advisorName": "小美",
- "companyShortName": "测试旅行社",
- "advisorRole": "金牌旅行顾问",
- "mainProduct": "云南精品线"
- },
- "_fallbackSource": "travel_lifecycle_full",
- "nodes": [
- {
- "nodeName": "开始",
- "nextNodeCode": "INIT_STAGE",
- "nodeCode": "START",
- "maxRounds": 0,
- "nodeType": 1,
- "nodeConfig": "{\"autoAdvance\":true,\"channelHint\":\"QW\"}",
- "sortNo": 1,
- "conditionExpr": "",
- "messageTemplate": "您好${customerName},我是小美,测试旅行社旅行顾问。看到您从直播间过来,打算去哪里玩呢?"
- },
- {
- "nodeName": "初始化咨询阶段",
- "nextNodeCode": "TAG_AUTO",
- "nodeCode": "INIT_STAGE",
- "maxRounds": 0,
- "nodeType": 16,
- "nodeConfig": "{\"assignments\":{\"workflowStage\":\"consult\"},\"stageGate\":true}",
- "sortNo": 2,
- "conditionExpr": "",
- "messageTemplate": ""
- },
- {
- "nodeName": "自动打标",
- "nextNodeCode": "JUDGE",
- "nodeCode": "TAG_AUTO",
- "maxRounds": 0,
- "nodeType": 9,
- "nodeConfig": "{\"sideTask\":true,\"actionOnly\":true,\"action\":\"add_tag\",\"tags\":[\"travel_lead\",\"qw_live\"],\"triggerIntents\":[\"purchase\",\"high_intent\"]}",
- "sortNo": 3,
- "conditionExpr": "",
- "messageTemplate": ""
- },
- {
- "nodeName": "签单动作",
- "nextNodeCode": "WAIT_PRE_TRIP",
- "nodeCode": "ORDER_ACTION",
- "maxRounds": 0,
- "nodeType": 7,
- "nodeConfig": "{\"sideTask\":true,\"actionOnly\":true,\"action\":\"create_order\",\"triggerIntents\":[\"purchase\",\"order\"]}",
- "sortNo": 4,
- "conditionExpr": "",
- "messageTemplate": ""
- },
- {
- "nodeName": "出行前5天等待",
- "nextNodeCode": "PRE_TRIP_CARE",
- "nodeCode": "WAIT_PRE_TRIP",
- "maxRounds": 0,
- "nodeType": 4,
- "nodeConfig": "{\"waitType\":\"date_offset\",\"offsetDays\":-5,\"dateField\":\"travel_date\",\"timeoutHours\":720}",
- "sortNo": 5,
- "conditionExpr": "",
- "messageTemplate": ""
- },
- {
- "nodeName": "出行前提醒",
- "nextNodeCode": "WEATHER_TIPS",
- "nodeCode": "PRE_TRIP_CARE",
- "maxRounds": 0,
- "nodeType": 10,
- "nodeConfig": "{\"delivery\":\"proactive\",\"careType\":\"pre_trip\",\"awaitReply\":true}",
- "sortNo": 6,
- "conditionExpr": "",
- "messageTemplate": "您好,离您的云南精品线出行还有5天啦!请准备好身份证/护照、常用药品和舒适鞋服。需要我帮您核对行程清单吗?"
- },
- {
- "nodeName": "天气与玩要建议",
- "nextNodeCode": "IN_TRIP_CARE",
- "nodeCode": "WEATHER_TIPS",
- "maxRounds": 0,
- "nodeType": 14,
- "nodeConfig": "{\"apiKey\":\"weather_travel_tips\",\"sideTask\":false,\"smartApi\":true}",
- "sortNo": 7,
- "conditionExpr": "",
- "messageTemplate": "根据您目的地近期天气和同行人员情况,建议您注意防晒补水、老人小孩备常用药。具体玩游项目我会结合天气给您建议。"
- },
- {
- "nodeName": "行中关怀",
- "nextNodeCode": "SURVEY",
- "nodeCode": "IN_TRIP_CARE",
- "maxRounds": 0,
- "nodeType": 10,
- "nodeConfig": "{\"delivery\":\"proactive\",\"careType\":\"in_trip\",\"awaitReply\":true}",
- "sortNo": 8,
- "conditionExpr": "",
- "messageTemplate": "旅途还顺利吗?景点玩得怎么样?如有任何问题随时告诉我,小美一直在线。"
- },
- {
- "nodeName": "满意度调查",
- "nextNodeCode": "WAIT_HOLIDAY",
- "nodeCode": "SURVEY",
- "maxRounds": 0,
- "nodeType": 11,
- "nodeConfig": "{\"surveyType\":\"satisfaction\",\"awaitReply\":true}",
- "sortNo": 9,
- "conditionExpr": "",
- "messageTemplate": "感谢您选择测试旅行社!方便用1分钟做个满意度调查吗?您的反馈帮我们做得更好。"
- },
- {
- "nodeName": "节日营销等待",
- "nextNodeCode": "HOLIDAY_PROMO",
- "nodeCode": "WAIT_HOLIDAY",
- "maxRounds": 0,
- "nodeType": 32,
- "nodeConfig": "{\"delayDays\":30,\"cronHint\":\"holiday_minus_30d\"}",
- "sortNo": 10,
- "conditionExpr": "",
- "messageTemplate": ""
- },
- {
- "nodeName": "节日营销触达",
- "nextNodeCode": "END",
- "nodeCode": "HOLIDAY_PROMO",
- "maxRounds": 0,
- "nodeType": 13,
- "nodeConfig": "{\"repurchaseType\":\"holiday\",\"delivery\":\"proactive\"}",
- "sortNo": 11,
- "conditionExpr": "",
- "messageTemplate": "您好!临近节日,想了解下您近期有没有出行计划?云南精品线有新线路优惠,感兴趣我发您看看。"
- },
- {
- "nodeName": "意向分支",
- "nextNodeCode": "",
- "nodeCode": "JUDGE",
- "maxRounds": 0,
- "nodeType": 3,
- "nodeConfig": "{}",
- "sortNo": 12,
- "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\"}",
- "messageTemplate": ""
- },
- {
- "nodeName": "结束",
- "nextNodeCode": "",
- "nodeCode": "END",
- "maxRounds": 0,
- "nodeType": 5,
- "nodeConfig": "{}",
- "sortNo": 13,
- "conditionExpr": "",
- "messageTemplate": ""
- }
- ],
- "industryType": "travel",
- "templateName": "旅游销冠全链路(A旅游公司)",
- "_generateParam": {
- "advisorName": "小美",
- "companyShortName": "测试旅行社",
- "industryType": "travel",
- "advisorRole": "金牌旅行顾问",
- "mainProduct": "云南精品线"
- },
- "status": 1
- },
- "usedFallback": true,
- "passed": true,
- "workflowId": 47,
- "message": "generate and confirm ok"
- },
- "phase2Learning": {
- "hotReplayRowsBefore": 64,
- "hotReplayRowsAfter": 66,
- "delta": 2,
- "passed": true,
- "status": "ok",
- "hint": "async write ok",
- "message": "learning replay ok",
- "verify": {
- "companyId": 338,
- "archiveTableExists": false,
- "hotIndexExists": true,
- "hotReplayRows": 66,
- "eventLogRows": 66,
- "archiveRows": 0,
- "archiveNote": "table missing or query failed",
- "status": "ok"
- }
- }
- },
- "qualityGateConfig": {
- "enabled": true,
- "passScorePercent": 75,
- "targetScorePercent": 75,
- "minNodeScorePercent": 60,
- "minE2eAvgScorePercent": 75,
- "multiturnMinAvgScorePercent": 45
- },
- "failures": [
- "lifecycleMultiTurnDialogue: lifecycle multi-turn dialogue failed",
- "qualityGate: avg 69.75 \u003c min 75.0",
- "summary: async DB summary missing or too short",
- "memoryPipeline: no summary and no customer_fact rows"
- ],
- "passed": false,
- "durationMs": 498016,
- "templateIdUsed": 46
- }
- },
- "failures": [
- "integrationTests: 2/4 tests passed in 1222ms",
- "page./lobster/forbidden-words: \r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\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/LobsterReplaceWordMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, tenant_id, word_type, content, replace_text, enabled, sort, create_time FROM company_lobster_replace_word WHERE (tenant_id = 0 OR tenant_id = ?) AND word_type = ? ORDER BY tenant_id, sort DESC, id DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist",
- "page./lobster/typo-words: \r\n### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\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/LobsterReplaceWordMapper.xml]\r\n### The error may involve defaultParameterMap\r\n### The error occurred while setting parameters\r\n### SQL: SELECT id, tenant_id, word_type, content, replace_text, enabled, sort, create_time FROM company_lobster_replace_word WHERE (tenant_id = 0 OR tenant_id = ?) AND word_type = ? ORDER BY tenant_id, sort DESC, id DESC\r\n### Cause: java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist\n; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Table \u0027fs_tenant_cs1.company_lobster_replace_word\u0027 doesn\u0027t exist",
- "travel.lifecycleMultiTurnDialogue: lifecycle multi-turn dialogue failed",
- "travel.qualityGate: avg 69.75 \u003c min 75.0",
- "travel.summary: async DB summary missing or too short",
- "travel.memoryPipeline: no summary and no customer_fact rows"
- ],
- "passed": false,
- "durationMs": 501746,
- "pageCount": 32,
- "requiredPagesPassed": "17/19"
- }
|