Architecture - Vue d'Ensemble¶
Architecture technique complète de JARVIS.
Diagramme Système¶
graph TB
subgraph Client
A[Angular Frontend]
end
subgraph API Layer
B[FastAPI Backend]
C[Middlewares]
end
subgraph Services
D[LLM Router]
E[RAG Service]
F[Auth Service]
end
subgraph Data
G[(PostgreSQL)]
H[(Redis)]
I[(MinIO)]
end
subgraph LLM
J[Ollama Local]
K[Claude API]
L[GPT-4 API]
end
A --> B
B --> C
C --> D
C --> E
C --> F
D --> J
D --> K
D --> L
E --> G
F --> G
B --> H
E --> I Stack Technologique¶
| Couche | Technologies |
|---|---|
| API | FastAPI 0.104, Pydantic 2.5, Uvicorn |
| ORM | SQLAlchemy 2.0 (async), Alembic |
| Database | PostgreSQL 16, pgvector |
| Cache | Redis 7 (hiredis) |
| Storage | MinIO (S3-compatible) |
| LLM | LangChain, Anthropic, OpenAI, Ollama |
| Auth | JWT (python-jose), bcrypt |
| Monitoring | Prometheus, Sentry |
Principes Architecturaux¶
1. Multi-Tenancy¶
- Row-Level Security (RLS) PostgreSQL
- Isolation complète des données par tenant
- Contexte injecté via middleware
2. Routage LLM Intelligent¶
graph LR
A[Input] --> B{PII Detector}
B -->|Score > 0.7| C[Ollama Local]
B -->|Score < 0.7| D[Claude Cloud] 3. Architecture Hexagonale¶
- Routers: Points d'entrée API
- Services: Logique métier
- Repositories: Accès données
- Models: Entités ORM
Structure des Fichiers¶
backend/app/
├── main.py # Entry point
├── config.py # Configuration
├── models/ # SQLAlchemy ORM
├── schemas/ # Pydantic validation
├── routers/ # API endpoints
├── services/ # Business logic
├── middleware/ # Request pipeline
└── utils/ # Helpers