{
  "name": "Vorlux AI | Agent Performance Review",
  "active": false,
  "nodes": [
    {
      "parameters": {
        "rule": { "interval": [{ "field": "weeks", "weeksInterval": 1 }] }
      },
      "id": "schedule-trigger",
      "name": "Weekly Schedule",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [220, 300]
    },
    {
      "parameters": {
        "url": "http://host.docker.internal:3010/api/agents/metrics",
        "method": "GET",
        "options": { "timeout": 15000 }
      },
      "id": "fetch-metrics",
      "name": "Fetch Agent Metrics",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [460, 200]
    },
    {
      "parameters": {
        "url": "http://host.docker.internal:3010/api/orchestration/metrics",
        "method": "GET",
        "options": { "timeout": 15000 }
      },
      "id": "fetch-orch-metrics",
      "name": "Fetch Orchestration Metrics",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [460, 400]
    },
    {
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const agentMetrics = $('Fetch Agent Metrics').first().json.data || $('Fetch Agent Metrics').first().json.agents || [];\nconst orchMetrics = $('Fetch Orchestration Metrics').first().json.data || $('Fetch Orchestration Metrics').first().json || {};\n\nconst reviews = agentMetrics.map(a => {\n  const tasksCompleted = a.tasks_completed || 0;\n  const tasksFailed = a.tasks_failed || 0;\n  const avgResponseTime = a.avg_response_time || 0;\n  const successRate = tasksCompleted > 0 ? (tasksCompleted / (tasksCompleted + tasksFailed)) * 100 : 0;\n  let grade = 'C';\n  if (successRate >= 95 && avgResponseTime < 5000) grade = 'A';\n  else if (successRate >= 85) grade = 'B';\n  else if (successRate < 50) grade = 'F';\n  return { agent_id: a.agent_id, display_name: a.display_name, tasksCompleted, tasksFailed, successRate: Math.round(successRate), avgResponseTime, grade };\n}).sort((a, b) => b.successRate - a.successRate);\n\nconst topPerformers = reviews.filter(r => r.grade === 'A').slice(0, 5);\nconst needsImprovement = reviews.filter(r => r.grade === 'F' || r.grade === 'D');\nconst summary = `Weekly Agent Performance Review\\n\\nTotal Agents Reviewed: ${reviews.length}\\nTop Performers: ${topPerformers.map(t => t.display_name).join(', ') || 'None'}\\nNeeds Improvement: ${needsImprovement.map(n => n.display_name).join(', ') || 'None'}\\n\\nAvg Success Rate: ${Math.round(reviews.reduce((s, r) => s + r.successRate, 0) / (reviews.length || 1))}%`;\n\nreturn [{ json: { reviews, topPerformers, needsImprovement, summary, generatedAt: new Date().toISOString() } }];"
      },
      "id": "analyze-performance",
      "name": "Analyze Performance",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [720, 300]
    },
    {
      "parameters": {
        "url": "http://host.docker.internal:3010/api/reports",
        "method": "POST",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ type: 'agent-performance', title: 'Weekly Agent Performance Review', data: $json }) }}",
        "options": { "timeout": 15000 }
      },
      "id": "save-report",
      "name": "Save Report",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [960, 200]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "={{$env.DISCORD_OPS_WEBHOOK}}",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify({ content: '📊 **Weekly Agent Performance Review**\\n' + $json.summary }) }}"
      },
      "id": "discord-notify",
      "name": "Discord Notify",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [960, 400]
    }
  ],
  "connections": {
    "Weekly Schedule": { "main": [[{ "node": "Fetch Agent Metrics", "type": "main", "index": 0 }, { "node": "Fetch Orchestration Metrics", "type": "main", "index": 0 }]] },
    "Fetch Agent Metrics": { "main": [[{ "node": "Analyze Performance", "type": "main", "index": 0 }]] },
    "Fetch Orchestration Metrics": { "main": [[{ "node": "Analyze Performance", "type": "main", "index": 0 }]] },
    "Analyze Performance": { "main": [[{ "node": "Save Report", "type": "main", "index": 0 }, { "node": "Discord Notify", "type": "main", "index": 0 }]] }
  },
  "settings": { "executionOrder": "v1" }
}
