{
  "id":"port11DiagnosticAggregation","name":"Portfolio 11C - Anonymized Diagnostic Aggregation","active":false,
  "nodes":[
    {"parameters":{"httpMethod":"POST","path":"portfolio-diagnostic-aggregate","responseMode":"responseNode","options":{}},"webhookId":"d1130000-0000-4000-8000-000000000098","id":"d1130000-0000-4000-8000-000000000001","name":"Aggregation Webhook","type":"n8n-nodes-base.webhook","typeVersion":2.1,"position":[-1000,0]},
    {"parameters":{"jsCode":"const i=$json.body??$json; const required=['providerEventId','caseKey','promptKey','promptVersion']; const missing=required.filter(k=>i[k]===undefined||i[k]===null||i[k]===''); if(missing.length)return[{json:{valid:false,error:`Missing aggregation fields: ${missing.join(', ')}`}}]; return[{json:{valid:true,providerEventId:String(i.providerEventId),caseKey:String(i.caseKey),promptKey:String(i.promptKey),promptVersion:Number(i.promptVersion),simulateLlmFailure:i.simulateLlmFailure===true,idempotencyKey:`diagnostic:aggregate:${i.providerEventId}`}}];"},"id":"d1130000-0000-4000-8000-000000000002","name":"Validate Aggregation Request","type":"n8n-nodes-base.code","typeVersion":2,"position":[-780,0]},
    {"parameters":{"conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"conditions":[{"id":"d1130000-0000-4000-8000-000000000003","leftValue":"={{ $json.valid }}","rightValue":true,"operator":{"type":"boolean","operation":"true","singleValue":true}}],"combinator":"and"},"options":{}},"id":"d1130000-0000-4000-8000-000000000004","name":"Valid Aggregation Request?","type":"n8n-nodes-base.if","typeVersion":2.2,"position":[-560,0]},
    {"parameters":{"method":"POST","url":"http://127.0.0.1:8787/diagnostic/aggregate","sendBody":true,"contentType":"raw","rawContentType":"application/json","body":"={{ JSON.stringify($json) }}","options":{"timeout":15000}},"id":"d1130000-0000-4000-8000-000000000005","name":"Anonymize Load Prompt and Aggregate","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[-320,-100],"onError":"continueRegularOutput","retryOnFail":true,"maxTries":3,"waitBetweenTries":1000},
    {"parameters":{"conditions":{"options":{"caseSensitive":true,"typeValidation":"strict","version":2},"conditions":[{"id":"d1130000-0000-4000-8000-000000000006","leftValue":"={{ Boolean($json.aggregationId) }}","rightValue":true,"operator":{"type":"boolean","operation":"true","singleValue":true}}],"combinator":"and"},"options":{}},"id":"d1130000-0000-4000-8000-000000000007","name":"Aggregation Created?","type":"n8n-nodes-base.if","typeVersion":2.2,"position":[-80,-100]},
    {"parameters":{"method":"POST","url":"http://127.0.0.1:8787/diagnostic/logs","sendBody":true,"contentType":"raw","rawContentType":"application/json","body":"={{ JSON.stringify({correlationId:$json.providerEventId,workflowKey:'diagnostic-aggregation',severity:'info',eventType:'aggregation-created',caseKey:$json.caseKey}) }}","options":{"timeout":10000}},"id":"d1130000-0000-4000-8000-000000000008","name":"Write Aggregation Log","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[160,-180]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:true,status:'aggregation-created',aggregation:$('Anonymize Load Prompt and Aggregate').item.json,logId:$json.logId}) }}","options":{"responseCode":200}},"id":"d1130000-0000-4000-8000-000000000009","name":"Return Aggregation Success","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[400,-180]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:false,status:'invalid-aggregation-request',error:$json.error}) }}","options":{"responseCode":400}},"id":"d1130000-0000-4000-8000-000000000010","name":"Return Invalid Aggregation","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[-320,180]},
    {"parameters":{"method":"POST","url":"http://127.0.0.1:8787/diagnostic/admin-alerts","sendBody":true,"contentType":"raw","rawContentType":"application/json","body":"={{ JSON.stringify({correlationId:$('Validate Aggregation Request').item.json.providerEventId,workflowKey:'diagnostic-aggregation',error:'Aggregation or LLM call failed after retries'}) }}","options":{"timeout":10000}},"id":"d1130000-0000-4000-8000-000000000011","name":"Escalate Aggregation Failure","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[160,40]},
    {"parameters":{"respondWith":"json","responseBody":"={{ JSON.stringify({ok:false,status:'aggregation-service-unavailable',retryable:true,adminAlertId:$json.alertId}) }}","options":{"responseCode":503}},"id":"d1130000-0000-4000-8000-000000000012","name":"Return Aggregation Failure","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.4,"position":[400,40]}
  ],
  "connections":{"Aggregation Webhook":{"main":[[{"node":"Validate Aggregation Request","type":"main","index":0}]]},"Validate Aggregation Request":{"main":[[{"node":"Valid Aggregation Request?","type":"main","index":0}]]},"Valid Aggregation Request?":{"main":[[{"node":"Anonymize Load Prompt and Aggregate","type":"main","index":0}],[{"node":"Return Invalid Aggregation","type":"main","index":0}]]},"Anonymize Load Prompt and Aggregate":{"main":[[{"node":"Aggregation Created?","type":"main","index":0}]]},"Aggregation Created?":{"main":[[{"node":"Write Aggregation Log","type":"main","index":0}],[{"node":"Escalate Aggregation Failure","type":"main","index":0}]]},"Write Aggregation Log":{"main":[[{"node":"Return Aggregation Success","type":"main","index":0}]]},"Escalate Aggregation Failure":{"main":[[{"node":"Return Aggregation Failure","type":"main","index":0}]]}},
  "settings":{"executionOrder":"v1"},"pinData":{},"versionId":"d1130000-0000-4000-8000-000000000099","meta":{"templateCredsSetupCompleted":true},"tags":[]
}
