TypeScript 98.3%
CSS 0.9%
Shell 0.7%
1# Modèle de données — Immbot AI23Schéma complet : `lib/db/schema.ts` (SQLite, portable PostgreSQL — types simples, FTS5 remplaçable4par tsvector, blob d'embedding par pgvector).56## Domaines78### Identité et sécurité9- `users` — rôles `student|instructor|admin`, `must_change_password`, `is_initial_admin`,10 `auth_provider` (préparé pour un SSO futur).11- `sessions` — **jeton haché SHA-256** (jamais en clair), expiration 14 j.12- `auth_events` — journal (connexions, échecs, resets, actions admin).13- `enrollments` — accès par cours (toute route cours vérifie l'inscription).1415### Contenu et RAG16- `courses` — IMM1003 / IMM1033 (chemins sources, couleur, session).17- `documents` — fichier ingéré : `space` (`official-*`, `instructor-private`, `student-*`),18 type, semaine, somme de contrôle SHA-256, statut, visibilité étudiante.19- `chunks` — fragment : référence exacte (`ref_type` slide/section/exercise/glossary/page,20 `ref_number`, `ref_label` « Séance 4 — Diapositive 18 »), contenu indexable + affichable,21 types de boîtes sémantiques, **embedding** (blob Float32 384d), propriétaire éventuel.22- `chunks_fts` — FTS5 (`unicode61 remove_diacritics 2`), rowid = chunks.id.23- `ingestion_runs` — exécutions avec rapport.2425### Conversations26- `conversations` — cours, mode, mode de connaissances, modèle, dossier/épingle/archive,27 branches (`parent_conversation_id`, `branched_from_message_id`).28- `messages` — contenu, **citations résolues** (JSON), pièces jointes, jetons, coût, feedback,29 signalement, sauvegarde.30- `uploads` — fichiers étudiants (texte extrait, persistant ou lié à une conversation).31- `report_flags` — signalements à traiter par le professeur.3233### Modèles et usage34- `model_overrides` — surcharges admin du registre OpenRouter.35- `usage_log` — chaque appel LLM (jetons, coût, latence, erreur) → budgets et statistiques.36- `settings` — clé/valeur JSON : budgets, intégrité, presets, croisement inter-cours, partage.37- `prompt_versions` — prompts système versionnés (actif = dernière version active).38- `announcements` — annonces ciblées par cours.3940### Apprentissage41- `concepts` + `concept_links` — la carte des connaissances (préalable/relation/application/42 approfondissement), 36 concepts par cours.43- `mastery` (score composite par utilisateur×concept) + `mastery_events` (chaque observation :44 type de tâche, difficulté, autonomie, confiance) — voir learning-science-strategy.md.45- `flashcards` + `card_states` (SM-2 : EF, intervalle, échéance) + `review_log` (historique complet,46 permet une migration FSRS sans perte).47- `quiz_questions` (banque : type, difficulté 1-5, options JSON, explication) +48 `quiz_sessions` + `quiz_answers`.49- `mock_exams` (composition de questions, durée, type) + `exam_attempts` (réponses, note,50 analyse par concept/axe JSON).51- `study_plans` — plan généré (JSON jours/items cochables) + configuration.52- `error_notebook` — erreurs capturées (quiz/examen) avec statut étudiant.53- `summaries` — résumés générés avec citations.54- `saved_items` — bibliothèque personnelle.55- `activity_log` — activité (séries de jours, temps d'étude estimé).56- `weekly_goals` — objectifs hebdomadaires.57