# adibuzz/aetcg-platform architecture

> Architecture diagram of the GitHub repository adibuzz/aetcg-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/adibuzz/aetcg-platform
- Repository: https://github.com/adibuzz/aetcg-platform

## Overview

AETCG accepts ticket submissions through an API, validates and sanitizes them, queues asynchronous analysis, and exposes job state and an approval endpoint. The worker coordinates triage, compliance critique, and risk-based review state; Redis backs the queue and cached state, while agents call a configurable LLM endpoint. The README also describes policy routing and audit capabilities, though the sampled implementation shows only a simple risk threshold and structured API logging. Links reflect excerpts, SOURCE INDEX references, or README statements; unsampled capabilities are not given speculative implementation paths.

Main entry points: [`main.py`](https://github.com/adibuzz/aetcg-platform/blob/main/main.py) (Triage API), [`pipeline/orchestrator.py`](https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/orchestrator.py) (Workflow Orchestrator), [`worker.py`](https://github.com/adibuzz/aetcg-platform/blob/main/worker.py) (Background Worker), [`config/settings.py`](https://github.com/adibuzz/aetcg-platform/blob/main/config/settings.py) (Runtime Settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["Intake API"]
  node_api["Triage API<br/>[main.py]"]
  node_schema["Ticket Validation<br/>[validation.py]"]
  node_sanitizer["PII Sanitizer<br/>[validation.py]"]
end

subgraph group_processing["Async Processing"]
  node_queue_dispatch["Job Enqueue<br/>[worker.py]"]
  node_worker["Background Worker<br/>[worker.py]"]
  node_orchestrator["Workflow Orchestrator<br/>[orchestrator.py]"]
  node_triage["Triage Agent<br/>[agents.py]"]
  node_critic["Compliance Critic<br/>[agents.py]"]
end

subgraph group_governance["Governance"]
  node_routing["Risk Routing Gate<br/>[orchestrator.py]"]
  node_approval["Human Approval<br/>[main.py]"]
  node_state_api["Job State API<br/>[main.py]"]
  node_audit["Audit Telemetry<br/>[main.py]"]
end

subgraph group_platform["Runtime Services"]
  node_settings["Runtime Settings<br/>[settings.py]"]
  node_redis_queue["Redis Job Queue"]
  node_redis_state[("Redis State Cache")]
end

node_reporter(("Enterprise Submitter"))
node_llm{{"LLM Endpoint"}}

node_reporter -->|"submits ticket"| node_api
node_api -->|"validates payload"| node_schema
node_api -->|"enqueues job"| node_queue_dispatch
node_queue_dispatch -->|"enqueues task"| node_redis_queue
node_worker -->|"consumes jobs"| node_redis_queue
node_worker -->|"runs workflow"| node_orchestrator
node_orchestrator -->|"scrubs text"| node_sanitizer
node_orchestrator -->|"requests analysis"| node_triage
node_orchestrator -->|"requests critique"| node_critic
node_triage -->|"calls model"| node_llm
node_critic -->|"calls model"| node_llm
node_orchestrator -->|"checks risk"| node_routing
node_routing -->|"stores review state"| node_redis_state
node_api -->|"reads and writes state"| node_redis_state
node_api -->|"logs events"| node_audit
node_worker -->|"caches result"| node_redis_state
node_api -->|"handles approval"| node_approval
node_api -->|"serves job state"| node_state_api
node_api -->|"reads settings"| node_settings
node_worker -->|"reads settings"| node_settings
node_triage -->|"reads endpoint config"| node_settings
node_critic -->|"reads endpoint config"| node_settings

click node_api "https://github.com/adibuzz/aetcg-platform/blob/main/main.py"
click node_schema "https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/validation.py"
click node_sanitizer "https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/validation.py"
click node_queue_dispatch "https://github.com/adibuzz/aetcg-platform/blob/main/worker.py"
click node_worker "https://github.com/adibuzz/aetcg-platform/blob/main/worker.py"
click node_orchestrator "https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/orchestrator.py"
click node_triage "https://github.com/adibuzz/aetcg-platform/blob/main/services/agents.py"
click node_critic "https://github.com/adibuzz/aetcg-platform/blob/main/services/agents.py"
click node_routing "https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/orchestrator.py"
click node_approval "https://github.com/adibuzz/aetcg-platform/blob/main/main.py"
click node_state_api "https://github.com/adibuzz/aetcg-platform/blob/main/main.py"
click node_audit "https://github.com/adibuzz/aetcg-platform/blob/main/main.py"
click node_settings "https://github.com/adibuzz/aetcg-platform/blob/main/config/settings.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_schema,node_sanitizer toneBlue
class node_queue_dispatch,node_worker,node_orchestrator,node_triage,node_critic toneAmber
class node_routing,node_approval,node_state_api,node_audit toneMint
class node_settings,node_redis_queue,node_redis_state toneRose
class node_reporter,node_llm toneIndigo
```

## Components

### Intake API

- [Triage API](https://github.com/adibuzz/aetcg-platform/blob/main/main.py): `main.py`
- [Ticket Validation](https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/validation.py): `pipeline/validation.py`
- [PII Sanitizer](https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/validation.py): `pipeline/validation.py`

### Async Processing

- [Job Enqueue](https://github.com/adibuzz/aetcg-platform/blob/main/worker.py): `worker.py`
- [Background Worker](https://github.com/adibuzz/aetcg-platform/blob/main/worker.py): `worker.py`
- [Workflow Orchestrator](https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/orchestrator.py): `pipeline/orchestrator.py`
- [Triage Agent](https://github.com/adibuzz/aetcg-platform/blob/main/services/agents.py): `services/agents.py`
- [Compliance Critic](https://github.com/adibuzz/aetcg-platform/blob/main/services/agents.py): `services/agents.py`

### Governance

- [Risk Routing Gate](https://github.com/adibuzz/aetcg-platform/blob/main/pipeline/orchestrator.py): `pipeline/orchestrator.py`
- [Human Approval](https://github.com/adibuzz/aetcg-platform/blob/main/main.py): `main.py`
- [Job State API](https://github.com/adibuzz/aetcg-platform/blob/main/main.py): `main.py`
- [Audit Telemetry](https://github.com/adibuzz/aetcg-platform/blob/main/main.py): `main.py`

### Runtime Services

- [Runtime Settings](https://github.com/adibuzz/aetcg-platform/blob/main/config/settings.py): `config/settings.py`
- **Redis Job Queue**
- **Redis State Cache**

### Other components

- **Enterprise Submitter**
- **LLM Endpoint**

## Connections

- Enterprise Submitter → Triage API: submits ticket (evidence: `README.md`)
- Triage API → Ticket Validation: validates payload (evidence: `main.py`)
- Triage API → Job Enqueue: enqueues job (evidence: `main.py`)
- Job Enqueue → Redis Job Queue: enqueues task (evidence: `worker.py`)
- Background Worker → Redis Job Queue: consumes jobs (evidence: `worker.py`)
- Background Worker → Workflow Orchestrator: runs workflow (evidence: `worker.py`)
- Workflow Orchestrator → PII Sanitizer: scrubs text (evidence: `pipeline/orchestrator.py`)
- Workflow Orchestrator → Triage Agent: requests analysis (evidence: `pipeline/orchestrator.py`)
- Workflow Orchestrator → Compliance Critic: requests critique (evidence: `pipeline/orchestrator.py`)
- Triage Agent → LLM Endpoint: calls model (evidence: `services/agents.py`)
- Compliance Critic → LLM Endpoint: calls model (evidence: `services/agents.py`)
- Workflow Orchestrator → Risk Routing Gate: checks risk (evidence: `pipeline/orchestrator.py`)
- Risk Routing Gate → Redis State Cache: stores review state (evidence: `pipeline/orchestrator.py`)
- Triage API → Redis State Cache: reads and writes state (evidence: `main.py`)
- Triage API → Audit Telemetry: logs events (evidence: `main.py`)
- Background Worker → Redis State Cache: caches result (evidence: `worker.py`)
- Triage API → Human Approval: handles approval (evidence: `main.py`)
- Triage API → Job State API: serves job state (evidence: `main.py`)
- Triage API → Runtime Settings: reads settings (evidence: `main.py`)
- Background Worker → Runtime Settings: reads settings (evidence: `worker.py`)
- Triage Agent → Runtime Settings: reads endpoint config (evidence: `services/agents.py`)
- Compliance Critic → Runtime Settings: reads endpoint config (evidence: `services/agents.py`)
