TypeScript 98.3%
CSS 0.9%
Shell 0.7%
1# Ingestion du matériel de cours23Architecture détaillée : `rag-architecture.md`. Dernier rapport d'exécution : `ingestion-report.md`.45## Exécution67```bash8pnpm ingest # incrémentale (sommes de contrôle SHA-256 — seuls les fichiers modifiés sont retraités)9pnpm reindex # complète (--force)10```11Ou depuis l'admin : Cours & contenu → « Relancer l'ingestion ».1213## Ce qui est ingéré1415| Source | Type | Espace | Fragmentation |16|---|---|---|---|17| `slides/seanceNN*.tex` | Diapositives beamer | `official-*` | 1 frame = 1 fragment, numéroté comme le PDF (frames `noframenumbering` exclues), boîtes sémantiques étiquetées (Définition/Important/Exemple/Note/Question éclair), tableaux aplatis |18| `plan_de_cours.tex` | Plan | `official-*` | Par section/sous-section (+ redécoupage > 1 800 caractères avec chevauchement) |19| `exercices/enonce_*.tex`, `solution_*.tex` | Ateliers | `official-*` | Par section/exercice |20| `aide_memoire.tex`, `glossaire.tex` | Références | `official-*` | Par section (entrées de glossaire en lignes de tableau) |21| `README.md`, `description_moodle.md` | Infos | `official-*` | Par titre |22| `examen*`, `*_exam*`, `*solutionnaire*`, `*blueprint*`, `*grille_correction*`, `output/course-analysis/*.md` | Matériel d'évaluation | **`instructor-private`** (invisible aux étudiants) | Par section |23| Téléversements étudiants (chat) | PDF/DOCX/XLSX/CSV/TXT | `student-temporary-upload` (lié à la conversation et au propriétaire) | Par page/bloc |2425**Exclus** : artefacts LaTeX (`.aux`, `.log`…), images, scripts Python/JS, `plateforme_ateliers/`26(contient `submissions.db` avec données étudiantes), `.git`.2728## Métadonnées par fragment2930cours, espace, document, type de référence (slide/section/exercise/glossary/page), numéro31(diapositive/page), libellé (« Séance 4 — Diapositive 18 »), section courante, titre, types de32boîtes, semaine, somme de contrôle du document parent, date d'ingestion, propriétaire éventuel.3334## Indexation35361. **FTS5** (`unicode61 remove_diacritics 2`) — « depreciation » trouve « dépréciation ».372. **Embeddings locaux** `Xenova/multilingual-e5-small` (384 d, préfixes E5 `passage:`/`query:`),38 stockés en blob ; premier lancement : téléchargement ~120 Mo dans `data/models/`, ensuite hors-ligne.3940Mesuré sur le corpus réel : 52 fichiers → 2 065 fragments en ~70 s (Apple Silicon).4142## Rapport et erreurs4344Chaque exécution est journalisée (`ingestion_runs`) avec rapport détaillé par fichier (✓/⚠/✗),45consultable dans l'admin, et écrite dans `docs/ingestion-report.md` par le script CLI. Un fichier en46erreur n'interrompt pas le lot ; il apparaît en statut `error` avec son message.47