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