Files
sans-paper-public/application_architecture_simplified.mm

55 lines
1.8 KiB
Plaintext

flowchart TB
subgraph Inputs["Inputs"]
HC["Helm Chart Directory"]
PROMPTS["System & User Prompts"]
CONFIG["Configuration<br>• API Keys<br>• Models<br>• Run Count"]
end
subgraph subGraph1["API Selection"]
DECISION{"API Key Available?"}
ANTHROPIC["Anthropic API<br>Claude Models"]
OPENAI["OpenAI API<br>GPT Models"]
OPENROUTER["OpenRouter API<br>Fallback"]
end
subgraph subGraph2["Analysis Engine"]
LOAD["Load Helm Files"]
ANALYZE["Security Analysis"]
PARSE["Parse AI Response"]
end
subgraph Results["Results"]
CSV["CSV Report<br>• MITRE ATT&amp;CK Data<br>• Risk Priorities"]
MD["Markdown Report<br>• Full Responses<br>• Token Usage"]
end
HC --> ANALYZER["Helm Security Analyzer"]
PROMPTS --> ANALYZER
CONFIG --> ANALYZER
ANALYZER --> LOAD
LOAD --> ANALYZE
ANALYZE --> DECISION
DECISION -- Anthropic Key --> ANTHROPIC
DECISION -- OpenAI Key --> OPENAI
DECISION -- No Direct Key --> OPENROUTER
ANTHROPIC --> PARSE
OPENAI --> PARSE
OPENROUTER --> PARSE
PARSE --> CSV & MD
HC:::input
PROMPTS:::input
CONFIG:::input
DECISION:::decision
ANTHROPIC:::api
OPENAI:::api
OPENROUTER:::api
LOAD:::process
ANALYZE:::process
PARSE:::process
CSV:::output
MD:::output
ANALYZER:::core
classDef input fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef core fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef api fill:#fff3e0,stroke:#f57c00,stroke-width:2px
classDef process fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef output fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#fbc02d,stroke-width:2px