{
  "name": "Vorlux AI | Agent Performance Review",
  "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: '\ud83d\udcca **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"
  }
}