Server
Server Overview
Vue d'ensemble du Serveur
Le serveur fournit l'API backend pour le frontend Web. Il gère l'authentification, la persistance, le pipeline documentaire, le système de tags/rôles, et déclenche la régénération des index FAISS.
Stack
| Technologie | Usage |
|---|---|
| Bun | Runtime TypeScript (démarrage rapide, API Web standards) |
| Hono | Framework HTTP léger |
| ORPC | RPC type-safe (@orpc/server) — procédures public/protected/admin |
| Drizzle ORM | Accès PostgreSQL type-safe + migrations |
| Better Auth | Auth (sessions, OAuth Microsoft, plugin admin) |
| Resend | Email transactionnel |
| PostgreSQL | Base de données principale |
Responsabilités
- Authentification & sessions (Better Auth), RBAC (roles Better Auth + rôles applicatifs)
- Pipeline documentaire: upload →
document-processor→ chunks → DB - Gestion fichiers/chunks/QA: CRUD, catégorisation, historique, assignations
- Système Tags & Rôles applicatifs (filtrage index FAISS per-role)
- Régénération d'index FAISS (délégation au service Index API du chatbot)
- Endpoints santé:
GET /,GET /health,GET /ready - i18n:
GET /api/i18n(traductions frontend depuis ConfigMap/fichier) - Initialisation des rôles par défaut (
admin,user) au démarrage
Flux d'une requête type
Client (web)
→ POST /rpc/naivi.processUploadedFile (ORPC, admin)
→ createContext(): getSession() + update lastConnection
→ adminProcedure guard: role === 'admin' ?
→ regular-processing.ts:
→ INSERT files (pending)
→ POST http://DOCUMENT_PROCESSOR_URL/process
→ INSERT chunks[]
→ Response: { success, fileId, chunkCount }Client (web)
→ GET /api/i18n (REST public)
→ Lit I18N_JSON (env) → /app/i18n.json (Docker) → ../../i18n.json (local)
→ Response: JSON traductionsRouters ORPC
| Router | Fichier | Périmètre |
|---|---|---|
authRouter | routers/auth.ts | Utilisateurs, sessions |
naiviRouter | routers/naivi.ts | Fichiers, chunks, QA, logo, index |
rolesTagsRouter | routers/roles-tags.ts | Tags, rôles, associations, rôle utilisateur |
healthCheck | routers/index.ts | GET /rpc/healthCheck |
i18n | routers/index.ts | Traductions frontend |
Variables d'environnement clés
| Variable | Description |
|---|---|
DATABASE_URL | URL PostgreSQL |
BETTER_AUTH_SECRET | Secret JWT Better Auth |
CORS_ORIGIN | Origines CORS autorisées (séparées par virgule) |
DOCUMENT_PROCESSOR_URL | URL du microservice document-processor |
INDEX_API_URL | URL du service Index API du chatbot |
I18N_JSON | JSON i18n inline (alternative au fichier) |
MICROSOFT_CLIENT_ID | OAuth Microsoft |
MICROSOFT_CLIENT_SECRET | OAuth Microsoft |
Choix architecturaux
- Bun + Hono: démarrage rapide, overhead minimal, APIs Web standards.
- ORPC: contrats forts entre frontend/backend, composition guards publics/protégés/admin, inférence de types automatique côté client.
- Drizzle: schémas TypeScript typés, migrations explicites, requêtes SQL lisibles.
- Better Auth: sessions robustes, OAuth Microsoft, plugin admin, hooks serveur.
- Microservice document-processor: isolation des dépendances de parsing (PyMuPDF, python-docx…) du runtime TypeScript.
Kalli