# riyad03/ppt architecture

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

- Interactive diagram: https://gitdiagram.com/riyad03/ppt
- Repository: https://github.com/riyad03/ppt

## Overview

atlas_deck génère des notes réglementaires en PowerPoint : une demande et son contexte alimentent un plan de slides structuré, rendu de façon déterministe selon le thème du tenant, puis contrôlé pour repérer les débordements. Les avertissements peuvent relancer la planification, dans la limite de deux itérations. Le README documente huit types de slides, couverts par le contrat et le renderer. Le graphe et le renderer sont échantillonnés ; les capacités de slide sont donc regroupées plutôt que détaillées en helpers non vérifiés.

Main entry points: [`atlas_deck/graph.py`](https://github.com/riyad03/ppt/blob/main/atlas_deck/graph.py) (Plan et contenu), [`agent.py`](https://github.com/riyad03/ppt/blob/main/agent.py) (CLI agent), [`atlas_deck/llm.py`](https://github.com/riyad03/ppt/blob/main/atlas_deck/llm.py) (Fabrique LLM), [`atlas_deck/renderer.py`](https://github.com/riyad03/ppt/blob/main/atlas_deck/renderer.py) (Rendu PowerPoint)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entrées"]
  node_cli["CLI agent<br/>[agent.py]"]
  node_llm_factory["Fabrique LLM<br/>[llm.py]"]
end

subgraph group_planning["Planification"]
  node_plan["Plan et contenu<br/>[graph.py]"]
  node_deck_schema["Contrat Deck<br/>[schema.py]"]
  node_render_step["Étape rendu<br/>[graph.py]"]
  node_qa["Contrôle qualité<br/>[graph.py]"]
end

subgraph group_presentation["Présentation"]
  node_renderer["Rendu PowerPoint<br/>[renderer.py]"]
  node_pptx["Note PPTX"]
end

subgraph group_themes["Thèmes"]
  node_theme_loader["Résolution thème<br/>[theme.py]"]
  node_theme_file["Thème tenant<br/>[default.yaml]"]
end

node_user(("Demandeur"))
node_ollama{{"Ollama local"}}
node_compatible_api{{"API compatible"}}
node_model{{"Modèle de langage"}}
node_consumer(("Agent intégrateur"))

node_user -->|"fournit demande"| node_cli
node_cli -->|"crée modèle"| node_llm_factory
node_llm_factory -->|"configure local"| node_ollama
node_llm_factory -.->|"configure distant"| node_compatible_api
node_cli -->|"invoque graphe"| node_plan
node_consumer -.->|"invoque graphe"| node_plan
node_plan -->|"sollicite plan"| node_model
node_plan -->|"valide Deck"| node_deck_schema
node_plan -->|"transmet Deck"| node_render_step
node_render_step -->|"charge thème"| node_theme_loader
node_theme_loader -->|"lit YAML"| node_theme_file
node_render_step -->|"rend le deck"| node_renderer
node_renderer -->|"écrit fichier"| node_pptx
node_renderer -->|"renvoie avertissements"| node_qa
node_qa -->|"relance si besoin"| node_plan
node_cli -->|"affiche chemin"| node_pptx

click node_cli "https://github.com/riyad03/ppt/blob/main/agent.py"
click node_llm_factory "https://github.com/riyad03/ppt/blob/main/atlas_deck/llm.py"
click node_plan "https://github.com/riyad03/ppt/blob/main/atlas_deck/graph.py"
click node_deck_schema "https://github.com/riyad03/ppt/blob/main/atlas_deck/schema.py"
click node_render_step "https://github.com/riyad03/ppt/blob/main/atlas_deck/graph.py"
click node_qa "https://github.com/riyad03/ppt/blob/main/atlas_deck/graph.py"
click node_renderer "https://github.com/riyad03/ppt/blob/main/atlas_deck/renderer.py"
click node_theme_loader "https://github.com/riyad03/ppt/blob/main/atlas_deck/theme.py"
click node_theme_file "https://github.com/riyad03/ppt/blob/main/atlas_deck/themes/default.yaml"

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_cli,node_llm_factory toneBlue
class node_plan,node_deck_schema,node_render_step,node_qa toneAmber
class node_renderer,node_pptx,node_compatible_api toneMint
class node_theme_loader,node_theme_file toneRose
class node_user,node_ollama,node_model,node_consumer toneIndigo
```

## Components

### Entrées

- [CLI agent](https://github.com/riyad03/ppt/blob/main/agent.py): `agent.py`
- [Fabrique LLM](https://github.com/riyad03/ppt/blob/main/atlas_deck/llm.py): `atlas_deck/llm.py`

### Planification

- [Plan et contenu](https://github.com/riyad03/ppt/blob/main/atlas_deck/graph.py): `atlas_deck/graph.py`
- [Contrat Deck](https://github.com/riyad03/ppt/blob/main/atlas_deck/schema.py): `atlas_deck/schema.py`
- [Étape rendu](https://github.com/riyad03/ppt/blob/main/atlas_deck/graph.py): `atlas_deck/graph.py`
- [Contrôle qualité](https://github.com/riyad03/ppt/blob/main/atlas_deck/graph.py): `atlas_deck/graph.py`

### Présentation

- [Rendu PowerPoint](https://github.com/riyad03/ppt/blob/main/atlas_deck/renderer.py): `atlas_deck/renderer.py`
- **Note PPTX**

### Thèmes

- [Résolution thème](https://github.com/riyad03/ppt/blob/main/atlas_deck/theme.py): `atlas_deck/theme.py`
- [Thème tenant](https://github.com/riyad03/ppt/blob/main/atlas_deck/themes/default.yaml): `atlas_deck/themes/default.yaml`

### Other components

- **Demandeur**
- **Ollama local**
- **API compatible**
- **Modèle de langage**
- **Agent intégrateur**

## Connections

- Demandeur → CLI agent: fournit demande
- CLI agent → Fabrique LLM: crée modèle
- Fabrique LLM → Ollama local: configure local
- Fabrique LLM → API compatible: configure distant
- CLI agent → Plan et contenu: invoque graphe
- Agent intégrateur → Plan et contenu: invoque graphe
- Plan et contenu → Modèle de langage: sollicite plan
- Plan et contenu → Contrat Deck: valide Deck
- Plan et contenu → Étape rendu: transmet Deck
- Étape rendu → Résolution thème: charge thème
- Résolution thème → Thème tenant: lit YAML
- Étape rendu → Rendu PowerPoint: rend le deck
- Rendu PowerPoint → Note PPTX: écrit fichier
- Rendu PowerPoint → Contrôle qualité: renvoie avertissements
- Contrôle qualité → Plan et contenu: relance si besoin
- CLI agent → Note PPTX: affiche chemin
