Schéma de la base de données
Les plugins Dream-U créent 8 tables dans la base MariaDB de Moodle.
AI Grader — local_dreamu_ai_config
Config par devoir. Clé unique : assignid.
| Colonne | Type | Description |
| assignid | int(10) UNIQUE | FK vers assign.id |
| enabled | int(1) | 0 ou 1 |
| prompt | text | Consignes de correction |
| maxgrade | decimal(10,2) | Note maximale (défaut 100) |
| language | char(5) | fr ou en |
AI Grader — local_dreamu_ai_grades
Résultats des corrections. Index : assignid+userid.
| Colonne | Type | Description |
| assignid | int(10) | FK vers assign.id |
| userid | int(10) | FK vers user.id |
| submissionid | int(10) | FK vers assign_submission.id |
| grade | decimal(10,2) | Note IA |
| feedback | text | Feedback HTML |
| rawresponse | text | Réponse brute IA (debug) |
| status | char(20) | pending / graded / validated / rejected / error |
| validated | int(1) | 0=attente, 1=approuvé, 2=rejeté |
QCM Generator — local_dreamu_qcm
Questions générées. Index : courseid.
| Colonne | Type | Description |
| courseid | int(10) | FK vers course.id |
| qtype | char(20) | multichoice / truefalse / shortanswer / matching / numerical |
| question | text | Énoncé |
| optiona-d | text | Options (multichoice) |
| correct | char(255) | Réponse correcte |
| extra_data | text | JSON : alternatives, pairs, tolerance/unit |
| status | char(20) | pending / approved / imported |
| verified | int(1) nullable | 1=valide, 0=invalide, null=non vérifié |
| verification_note | text | Raison du vérificateur |
Tutor IA — local_tutor_ia_config
Config par cours. Clé unique : courseid.
| Colonne | Type | Description |
| courseid | int(10) UNIQUE | FK vers course.id |
| enabled | int(1) | 0 ou 1 |
| syllabus | text | Instructions personnalisées du prof |
| socratic_mode | int(1) | 0 ou 1 |
| gamification | int(1) | 0 ou 1 |
Tutor IA — local_tutor_ia_logs
Sessions d'utilisation. Index : courseid+userid, timecreated.
| Colonne | Type | Description |
| courseid | int(10) | FK vers course.id |
| userid | int(10) | FK vers user.id |
| message_count | int(6) | Messages dans la session |
| topic_keywords | char(255) | Mots-clés (virgule) |
| tokens_used | int(10) | Tokens estimés |
| session_duration | int(10) | Durée (secondes) |
| bonus_tokens | int(10) | Messages bonus gamification |
Session = 10 min sans activité crée un nouveau log.
Tutor IA — local_tutor_ia_content_cache
Cache contenu cours. Clé unique : courseid.
| Colonne | Type | Description |
| courseid | int(10) UNIQUE | FK vers course.id |
| content_hash | char(32) | MD5 pour détecter changements |
| extracted_content | text | Contenu extrait |
| tokens_count | int(10) | Estimation tokens |
Tutor IA — local_tutor_ia_summaries
Résumés cachés. Clé unique : courseid.
| Colonne | Type | Description |
| courseid | int(10) UNIQUE | FK vers course.id |
| content_hash | char(32) | Hash du contenu source |
| summary_html | text | Résumé HTML |
| summary_raw | text | Résumé Markdown brut |
Tutor IA — local_tutor_ia_flashcards
Flashcards par étudiant. Index : courseid+userid.
| Colonne | Type | Description |
| courseid | int(10) | FK vers course.id |
| userid | int(10) | FK vers user.id |
| front | text | Recto (question) |
| back | text | Verso (réponse) |
| status | int(1) | 0=new, 1=known, 2=review |
| next_review | int(10) nullable | Prochaine révision (timestamp) |
| review_count | int(4) | Nombre de révisions |
Algorithme Leitner : intervalles « known » = 1j, 3j, 7j, 14j. « review » = reset à 1j.