LogoKalli
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

TechnologieUsage
BunRuntime TypeScript (démarrage rapide, API Web standards)
HonoFramework HTTP léger
ORPCRPC type-safe (@orpc/server) — procédures public/protected/admin
Drizzle ORMAccès PostgreSQL type-safe + migrations
Better AuthAuth (sessions, OAuth Microsoft, plugin admin)
ResendEmail transactionnel
PostgreSQLBase 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 traductions

Routers ORPC

RouterFichierPérimètre
authRouterrouters/auth.tsUtilisateurs, sessions
naiviRouterrouters/naivi.tsFichiers, chunks, QA, logo, index
rolesTagsRouterrouters/roles-tags.tsTags, rôles, associations, rôle utilisateur
healthCheckrouters/index.tsGET /rpc/healthCheck
i18nrouters/index.tsTraductions frontend

Variables d'environnement clés

VariableDescription
DATABASE_URLURL PostgreSQL
BETTER_AUTH_SECRETSecret JWT Better Auth
CORS_ORIGINOrigines CORS autorisées (séparées par virgule)
DOCUMENT_PROCESSOR_URLURL du microservice document-processor
INDEX_API_URLURL du service Index API du chatbot
I18N_JSONJSON i18n inline (alternative au fichier)
MICROSOFT_CLIENT_IDOAuth Microsoft
MICROSOFT_CLIENT_SECRETOAuth 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.