Xray · see through your fleet
1h 6h 24h 48h 3d
custom ▾
live

Logs

Live Cloud Logging query (nothing stored) · master · last 6h · newest first · page 1 (200/page) · 200 entries in 2489 ms all app neo4j weaviate time relative absolute

reset
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.771Z",
  "version": "unknown"
}
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.771Z",
  "version": "unknown"
}
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.737Z",
  "version": "unknown"
}
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.737Z",
  "version": "unknown"
}
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.737Z",
  "version": "unknown"
}
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.691Z",
  "version": "unknown"
}
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.691Z",
  "version": "unknown"
}
35s ago2026-07-27 02:30:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:30:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace11295e01ef2cc7e86c294e639f944aee
spanfe20e38e7bcf9b94
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:30:09.691Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.644Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.643Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25431126",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.640Z",
  "transactionId": 12267984.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25431125",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.634Z",
  "transactionId": 12267983.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25431124",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.630Z",
  "transactionId": 12267983.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25431123",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.623Z",
  "transactionId": 12267982.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25431122",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.614Z",
  "transactionId": 12267981.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.611Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.610Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.610Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25431121",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.607Z",
  "transactionId": 12267980.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25431120",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.603Z",
  "transactionId": 12267980.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25431119",
  "pageFaults": 0.0,
  "pageHits": 8.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.597Z",
  "transactionId": 12267979.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25431118",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.590Z",
  "transactionId": 12267978.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25431117",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.586Z",
  "transactionId": 12267978.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25431116",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.580Z",
  "transactionId": 12267977.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:29:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25431115",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:29:09.573Z",
  "transactionId": 12267976.0,
  "waiting": 0.0
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.568Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.568Z",
  "version": "unknown"
}
1m ago2026-07-27 02:29:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:29:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace3dade72b224fb1d7e51acb8ec441abad
spanc8dd47304184f437
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:29:09.568Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.893Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.893Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25427836",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.890Z",
  "transactionId": 12266283.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25427835",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.884Z",
  "transactionId": 12266282.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25427834",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.880Z",
  "transactionId": 12266282.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25427833",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.873Z",
  "transactionId": 12266281.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25427832",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.865Z",
  "transactionId": 12266280.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.861Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.861Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.861Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25427831",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.857Z",
  "transactionId": 12266279.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25427830",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.854Z",
  "transactionId": 12266279.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25427829",
  "pageFaults": 0.0,
  "pageHits": 6.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.847Z",
  "transactionId": 12266278.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25427828",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.840Z",
  "transactionId": 12266277.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25427827",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.837Z",
  "transactionId": 12266277.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25427826",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.830Z",
  "transactionId": 12266276.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:28:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25427825",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:28:09.822Z",
  "transactionId": 12266275.0,
  "waiting": 0.0
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.818Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.818Z",
  "version": "unknown"
}
2m ago2026-07-27 02:28:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:28:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace384299f28513acf552759326e581897d
span0325ea4b39ebaa63
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:28:09.818Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.100Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.099Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25423565",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.096Z",
  "transactionId": 12264577.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25423564",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.089Z",
  "transactionId": 12264576.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25423563",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.086Z",
  "transactionId": 12264576.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25423562",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.079Z",
  "transactionId": 12264575.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25423561",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.072Z",
  "transactionId": 12264574.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.068Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.068Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.067Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 1.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25423560",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.064Z",
  "transactionId": 12264573.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25423559",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.061Z",
  "transactionId": 12264573.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25423558",
  "pageFaults": 0.0,
  "pageHits": 8.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.054Z",
  "transactionId": 12264572.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 1.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25423557",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.046Z",
  "transactionId": 12264571.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25423556",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.042Z",
  "transactionId": 12264571.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25423555",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.035Z",
  "transactionId": 12264570.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:27:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25423554",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:27:09.028Z",
  "transactionId": 12264569.0,
  "waiting": 0.0
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.023Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.023Z",
  "version": "unknown"
}
3m ago2026-07-27 02:27:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:27:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee9fe1eac8f95352d4e284afe8d42f77d
span50a7c2572d8f23fa
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:27:09.023Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.345Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.345Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25420282",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.342Z",
  "transactionId": 12262835.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25420281",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.335Z",
  "transactionId": 12262834.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25420280",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.332Z",
  "transactionId": 12262834.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25420279",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.325Z",
  "transactionId": 12262833.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25420278",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.318Z",
  "transactionId": 12262832.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.314Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.314Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.313Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 1.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25420277",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.310Z",
  "transactionId": 12262831.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25420276",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.307Z",
  "transactionId": 12262831.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25420275",
  "pageFaults": 0.0,
  "pageHits": 6.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.300Z",
  "transactionId": 12262830.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 1.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25420274",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.293Z",
  "transactionId": 12262829.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25420273",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.290Z",
  "transactionId": 12262829.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25420272",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.282Z",
  "transactionId": 12262828.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:26:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25420271",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:26:09.275Z",
  "transactionId": 12262827.0,
  "waiting": 0.0
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.270Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.270Z",
  "version": "unknown"
}
4m ago2026-07-27 02:26:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:26:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace7ae614a89c2f4f25f86b38d661411c1c
spaneb9a9e8800f4e802
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:26:09.270Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.577Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.576Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25415145",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.573Z",
  "transactionId": 12260735.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25415144",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.567Z",
  "transactionId": 12260734.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25415143",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.564Z",
  "transactionId": 12260734.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25415141",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.557Z",
  "transactionId": 12260733.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25415139",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.550Z",
  "transactionId": 12260732.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.546Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.545Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.545Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25415138",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.542Z",
  "transactionId": 12260731.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25415136",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.539Z",
  "transactionId": 12260731.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25415134",
  "pageFaults": 0.0,
  "pageHits": 6.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.532Z",
  "transactionId": 12260729.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25415130",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.526Z",
  "transactionId": 12260726.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25415128",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.522Z",
  "transactionId": 12260726.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25415126",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.515Z",
  "transactionId": 12260724.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:25:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25415122",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:25:09.508Z",
  "transactionId": 12260721.0,
  "waiting": 0.0
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.504Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.504Z",
  "version": "unknown"
}
5m ago2026-07-27 02:25:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:25:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace056971c6a673638dd8bd7f9805ae574e
span82254bf293b1665a
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:25:09.504Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.953Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.953Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25406620",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.950Z",
  "transactionId": 12258798.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25406617",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.943Z",
  "transactionId": 12258797.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25406615",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.940Z",
  "transactionId": 12258797.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25406614",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.933Z",
  "transactionId": 12258796.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25406612",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.925Z",
  "transactionId": 12258795.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.921Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.921Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.921Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25406609",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.917Z",
  "transactionId": 12258794.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25406607",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.914Z",
  "transactionId": 12258794.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25406605",
  "pageFaults": 0.0,
  "pageHits": 6.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.908Z",
  "transactionId": 12258793.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 1.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25406603",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.900Z",
  "transactionId": 12258792.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25406601",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.897Z",
  "transactionId": 12258792.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25406599",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.890Z",
  "transactionId": 12258791.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:24:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25406596",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:24:09.882Z",
  "transactionId": 12258790.0,
  "waiting": 0.0
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.878Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.878Z",
  "version": "unknown"
}
6m ago2026-07-27 02:24:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:24:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracee7dbddd46e096642a30e9f1705fb2de3
span3062e267c3c1a7b7
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:24:09.878Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.693Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.692Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25398599",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.689Z",
  "transactionId": 12257046.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25398598",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.682Z",
  "transactionId": 12257045.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25398597",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.680Z",
  "transactionId": 12257045.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25398596",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.673Z",
  "transactionId": 12257044.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25398595",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.666Z",
  "transactionId": 12257043.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.662Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.662Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.661Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25398593",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.658Z",
  "transactionId": 12257041.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25398592",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.654Z",
  "transactionId": 12257041.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25398591",
  "pageFaults": 0.0,
  "pageHits": 6.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.648Z",
  "transactionId": 12257040.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25398590",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.641Z",
  "transactionId": 12257039.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25398589",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.638Z",
  "transactionId": 12257039.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25398588",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.631Z",
  "transactionId": 12257038.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:23:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25398587",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:23:09.624Z",
  "transactionId": 12257037.0,
  "waiting": 0.0
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.620Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.620Z",
  "version": "unknown"
}
7m ago2026-07-27 02:23:09 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:23:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracef9000f802b1b9ce5e4ab5a2563be8a56
span3e1175e67cde3362
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:23:09.619Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.825Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.825Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25390688",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.822Z",
  "transactionId": 12255157.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25390686",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.815Z",
  "transactionId": 12255156.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25390685",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.812Z",
  "transactionId": 12255156.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25390684",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.806Z",
  "transactionId": 12255155.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25390682",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.798Z",
  "transactionId": 12255154.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.794Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.794Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.794Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25390681",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.790Z",
  "transactionId": 12255153.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25390680",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.787Z",
  "transactionId": 12255153.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25390678",
  "pageFaults": 0.0,
  "pageHits": 6.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.781Z",
  "transactionId": 12255152.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25390676",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.774Z",
  "transactionId": 12255151.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25390675",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.770Z",
  "transactionId": 12255151.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25390674",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.764Z",
  "transactionId": 12255150.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:22:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25390673",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:22:10.756Z",
  "transactionId": 12255149.0,
  "waiting": 0.0
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.752Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.752Z",
  "version": "unknown"
}
8m ago2026-07-27 02:22:10 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:22:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
tracea4e90dba790548da15bd1efcdf5b3d34
spand1b2322a5833d532
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:22:10.752Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.132Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.132Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25381885",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.129Z",
  "transactionId": 12253439.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25381884",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.121Z",
  "transactionId": 12253438.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25381883",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.118Z",
  "transactionId": 12253438.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25381881",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.111Z",
  "transactionId": 12253437.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25381880",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.103Z",
  "transactionId": 12253436.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.098Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.098Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.098Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25381878",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.094Z",
  "transactionId": 12253435.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25381877",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.091Z",
  "transactionId": 12253435.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization) RETURN...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]->(o:Organization)
            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required
raw payload (15 fields)
{
  "allocatedBytes": 328.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E5CF3BBC",
  "id": "25381876",
  "pageFaults": 0.0,
  "pageHits": 6.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $wo})-[:WORK_ORDER_TO_ORGANIZATION]-\u003e(o:Organization)\n            RETURN COALESCE(o.reminderApprovalRequired, true) AS approval_required\n            ",
  "queryParameters": "{wo: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.085Z",
  "transactionId": 12253434.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7560.0,
  "cpu": 1.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25381875",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.077Z",
  "transactionId": 12253433.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25381874",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.073Z",
  "transactionId": 12253433.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25381873",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.066Z",
  "transactionId": 12253432.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:21:10 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25381871",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:21:10.059Z",
  "transactionId": 12253431.0,
  "waiting": 0.0
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.055Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant [daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order d4a889a1-a6b0-4bdd-9ede-fae571005b67",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.054Z",
  "version": "unknown"
}
9m ago2026-07-27 02:21:10 UTC DEBUG virtual-assistant 🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
time2026-07-27 02:21:10 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:362
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace2ce7cf386aaeb774eb15c5b3556df1a0
span396ab5bef8a6ace0
podvirtual-assistant-65b975d66b-l8wpw
message
🏢 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:362",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\ud83c\udfe2 Processing organization 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 (2 work orders)",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:21:10.054Z",
  "version": "unknown"
}
10m ago2026-07-27 02:20:09 UTC DEBUG virtual-assistant ✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
time2026-07-27 02:20:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:377
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podvirtual-assistant-65b975d66b-l8wpw
message
✅ Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:377",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "\u2705 Org 8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30 summary: processed=2, reminders_sent=0, moved_to_need_attention=0",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:20:09.425Z",
  "version": "unknown"
}
10m ago2026-07-27 02:20:09 UTC DEBUG virtual-assistant [reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
time2026-07-27 02:20:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:220
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) — nothing to do
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:220",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e no reminder policy (NONE) \u2014 nothing to do",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:20:09.424Z",
  "version": "unknown"
}
10m ago2026-07-27 02:20:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact) WHERE f.delpending = false ...
time2026-07-27 02:20:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})<-[:FACT_TO_WORK_ORDER]-(f:Fact)
            WHERE f.delpending = false
            RETURN f
            ORDER BY f.createdat ASC
raw payload (15 fields)
{
  "allocatedBytes": 724.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "23A43F51",
  "id": "25377206",
  "pageFaults": 0.0,
  "pageHits": 5.0,
  "planning": 0.0,
  "query": "\n            MATCH (w:WorkOrder {tildaid: $work_order_id})\u003c-[:FACT_TO_WORK_ORDER]-(f:Fact)\n            WHERE f.delpending = false\n            RETURN f\n            ORDER BY f.createdat ASC\n            ",
  "queryParameters": "{work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:20:09.421Z",
  "transactionId": 12251657.0,
  "waiting": 0.0
}
10m ago2026-07-27 02:20:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:20:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 3272.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25377204",
  "pageFaults": 0.0,
  "pageHits": 9.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 1, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:20:09.415Z",
  "transactionId": 12251656.0,
  "waiting": 0.0
}
10m ago2026-07-27 02:20:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:20:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25377203",
  "pageFaults": 0.0,
  "pageHits": 10.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:20:09.412Z",
  "transactionId": 12251656.0,
  "waiting": 0.0
}
10m ago2026-07-27 02:20:09 UTC neo4j virtual-assistant MATCH (wo:WorkOrder {tildaid: $wo_id}) OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type:...
time2026-07-27 02:20:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podserver-2-dev-0
query
MATCH (wo:WorkOrder {tildaid: $wo_id})
        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity {activity_type: 'U_REPLY'})
        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts
raw payload (15 fields)
{
  "allocatedBytes": 928.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "4C51129A",
  "id": "25377200",
  "pageFaults": 0.0,
  "pageHits": 14.0,
  "planning": 0.0,
  "query": "\n        MATCH (wo:WorkOrder {tildaid: $wo_id})\n        OPTIONAL MATCH (wo)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity {activity_type: \u0027U_REPLY\u0027})\n        RETURN wo.createdat AS created_at, max(a.timestamp) AS latest_reply_ts\n        ",
  "queryParameters": "{wo_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:20:09.406Z",
  "transactionId": 12251655.0,
  "waiting": 0.0
}
10m ago2026-07-27 02:20:09 UTC neo4j virtual-assistant MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n
time2026-07-27 02:20:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podserver-2-dev-0
query
MATCH (n:WorkOrder {tildaid: $node_id}) 
RETURN n
raw payload (15 fields)
{
  "allocatedBytes": 312.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "E0146DD7",
  "id": "25377199",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "MATCH (n:WorkOrder {tildaid: $node_id}) RETURN n",
  "queryParameters": "{node_id: \u002757c957cb-a23f-4f3a-8bf1-bb9e566a2b6e\u0027}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:20:09.399Z",
  "transactionId": 12251654.0,
  "waiting": 0.0
}
10m ago2026-07-27 02:20:09 UTC DEBUG virtual-assistant [daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:20:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:135
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:135",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] Starting processing for work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:20:09.395Z",
  "version": "unknown"
}
10m ago2026-07-27 02:20:09 UTC DEBUG virtual-assistant [daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
time2026-07-27 02:20:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:368
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podvirtual-assistant-65b975d66b-l8wpw
message
[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:368",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[daily_cron] About to process work order 57c957cb-a23f-4f3a-8bf1-bb9e566a2b6e",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:20:09.395Z",
  "version": "unknown"
}
10m ago2026-07-27 02:20:09 UTC DEBUG virtual-assistant [reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
time2026-07-27 02:20:09 UTC
severityDEBUG
servicevirtual-assistant
sourcejobs/daily_work_order_cron.py:200
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
versionunknown
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podvirtual-assistant-65b975d66b-l8wpw
message
[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending — skipping reminder (no send, no draft) to preserve user intent
raw payload (8 fields)
{
  "caller": "jobs/daily_work_order_cron.py:200",
  "cluster": "master",
  "environment": "DEVELOPMENT",
  "message": "[reminder] wo=d4a889a1-a6b0-4bdd-9ede-fae571005b67 draft already pending \u2014 skipping reminder (no send, no draft) to preserve user intent",
  "org_alias": "8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30",
  "service": "virtual-assistant",
  "timestamp": "2026-07-27T02:20:09.395Z",
  "version": "unknown"
}
10m ago2026-07-27 02:20:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:20:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        OPTIONAL MATCH (d:Document)
        WHERE d.tildaid IN COALESCE(a.docIds, [])
        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents
        // Compute latest AI_MSG draft id per work order for gating REGENERATE
        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]->(ai:WorkOrderActivity)
        WHERE ai.activity_type = 'AI_MSG'  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck
        WITH w, a, documents,
             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,
             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs
        WITH a, documents,
             CASE
               WHEN size(ai_msgs) = 0 THEN false
               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)
             END AS is_latest_draft
        RETURN a,
               CASE WHEN size(documents) > 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,
               is_latest_draft
        ORDER BY a.createdat DESC
        SKIP $skip
        LIMIT $limit
raw payload (15 fields)
{
  "allocatedBytes": 7656.0,
  "cpu": 0.0,
  "elapsedTimeMs": 1.0,
  "executionPlanCacheKeyHash": "2A13D7A9",
  "id": "25377197",
  "pageFaults": 0.0,
  "pageHits": 11.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        OPTIONAL MATCH (d:Document)\n        WHERE d.tildaid IN COALESCE(a.docIds, [])\n        WITH w, a, COLLECT(DISTINCT {tildaid: d.tildaid, fileName: d.fileName, contentType: d.contentType}) as documents\n        // Compute latest AI_MSG draft id per work order for gating REGENERATE\n        OPTIONAL MATCH (w)-[:WORK_ORDER_TO_ACTIVITY]-\u003e(ai:WorkOrderActivity)\n        WHERE ai.activity_type = \u0027AI_MSG\u0027  // any status: a newer SENT/QUEUED must supersede an older FindingsChanged draft, else REGENERATE stays stuck\n        WITH w, a, documents,\n             max(coalesce(ai.updatedat, ai.createdat)) AS latest_any_ts,\n             collect({id: ai.tildaid, ts: coalesce(ai.updatedat, ai.createdat), status: ai.status, ignoreType: ai.ignoreType}) AS ai_msgs\n        WITH a, documents,\n             CASE\n               WHEN size(ai_msgs) = 0 THEN false\n               ELSE any(x IN ai_msgs WHERE x.id = a.tildaid AND x.ts = latest_any_ts)\n             END AS is_latest_draft\n        RETURN a,\n               CASE WHEN size(documents) \u003e 0 AND documents[0].tildaid IS NOT NULL THEN documents ELSE [] END AS documents,\n               is_latest_draft\n        ORDER BY a.createdat DESC\n        SKIP $skip\n        LIMIT $limit\n        ",
  "queryParameters": "{limit: 25, statuses: [\u0027DRAFT\u0027], skip: 0, work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:20:09.392Z",
  "transactionId": 12251652.0,
  "waiting": 0.0
}
10m ago2026-07-27 02:20:09 UTC neo4j virtual-assistant MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity) WHERE 1=1 AND a.activity_type IN...
time2026-07-27 02:20:09 UTC
severityINFO
servicevirtual-assistant
clustermaster
org8a8c3a76-7bd6-45d4-9ca3-c9330f4aba30
trace50cedc26cd308dff9dc8fc10c628c349
span45246ac4bd9762fc
podserver-2-dev-0
query
MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]->(a:WorkOrderActivity)
        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses 
        RETURN count(a) as total
raw payload (15 fields)
{
  "allocatedBytes": 488.0,
  "cpu": 0.0,
  "elapsedTimeMs": 0.0,
  "executionPlanCacheKeyHash": "FA66F084",
  "id": "25377194",
  "pageFaults": 0.0,
  "pageHits": 7.0,
  "planning": 0.0,
  "query": "\n        MATCH (w:WorkOrder {tildaid: $work_order_id})-[:WORK_ORDER_TO_ACTIVITY]-\u003e(a:WorkOrderActivity)\n        WHERE 1=1 AND a.activity_type IN $activity_types AND a.status IN $statuses \n        RETURN count(a) as total\n        ",
  "queryParameters": "{statuses: [\u0027DRAFT\u0027], work_order_id: \u0027d4a889a1-a6b0-4bdd-9ede-fae571005b67\u0027, activity_types: [\u0027AI_MSG\u0027]}",
  "runtime": "pipelined",
  "source": "bolt-session\tbolt\tneo4j-python/5.28.0 Python/3.12.13-final-0 (linux)\t\tclient/10.129.4.156:51512\tserver/10.173.0.8:7687\u003e",
  "timestamp": "2026-07-27T02:20:09.388Z",
  "transactionId": 12251652.0,
  "waiting": 0.0
}

Paginated with Cloud Logging page cursors, so you can walk the whole 6h window — not just the newest page. Click any filter by value to scope the view (resets to page 1). Paste a trace id to see every log line across all services for that one request.