Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,36 @@ Toutes les évolutions notables de **Dalibi** sont consignées ici.
Le format suit [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/) et le versionnage
respecte [SemVer](https://semver.org/lang/fr/).

## [1.1.0] — 2026-09-03

### Ajouté
- **Jeu de démonstration complet** (`DemoSeeder`) : une année scolaire vivante sur toutes
les classes actives (au moins 20 élèves par classe), avec dossiers d'élèves complets,
programme et affectations des enseignants, évaluations notées et moyennes par matière,
bulletins figés, facturation et paiements, présences, emploi du temps, calendrier,
cycles de paie et dossiers courants (justificatifs, réclamations, primes, documents).
Noms, prénoms et villes réels du Togo (divisions administratives officielles),
recrutement pondéré autour de Lomé. Seeder idempotent, déterministe, et interdit en
production. Lancement : `php artisan db:seed --class=DemoSeeder`.

### Corrigé
- **Bulletin — colonne Composition toujours vide** : la colonne de source « composition »
était résolue sur une clé absente du bulletin figé (la valeur y est stockée sous
« compo »). La colonne restait vide **même quand la note existait**, quelle que soit la
période ou le barème. Correctif d'affichage : aucun bulletin à régénérer.
- **Bulletin — logo de l'en-tête surdimensionné** : les styles de l'en-tête ministériel
(dont le plafond de taille du logo) n'étaient pas embarqués dans le CSS du bulletin ; le
logo s'affichait à sa taille naturelle et écrasait l'en-tête.
- **Types d'évaluation — catégorie de la « Composition »** : lorsqu'elle avait dérivé vers
« contrôle continu », la composition était diluée dans la note de classe et la
pondération Classe/Compo du barème était ignorée. Rejouer `ReferenceDataSeeder` corrige
la donnée, puis régénérer les bulletins concernés.

### Modifié
- **Bulletin — la colonne « Classe »** (contrôle continu) s'intitule désormais « Devoir »
par défaut. Seul l'affichage change : la colonne agrège toujours interro + devoir et
alimente la moyenne. Un libellé déjà personnalisé par une école n'est pas écrasé.

## [1.0.1] — 2026-09-02

### Corrigé
Expand Down
2 changes: 1 addition & 1 deletion app/Models/BulletinTemplate.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public static function defaultColumns(): array
{
return [
['key' => 'subject', 'label' => 'Matières', 'width' => 24, 'type' => 'subject', 'source' => null],
['key' => 'classe', 'label' => 'Classe', 'width' => 9, 'type' => 'note', 'source' => 'classe'],
['key' => 'classe', 'label' => 'Devoir', 'width' => 9, 'type' => 'note', 'source' => 'classe'],
['key' => 'compo', 'label' => 'Compo', 'width' => 9, 'type' => 'note', 'source' => 'composition'],
['key' => 'coef', 'label' => 'Coef', 'width' => 6, 'type' => 'coefficient', 'source' => null],
['key' => 'moyenne', 'label' => 'Moy. {periode}', 'width' => 10, 'type' => 'note', 'source' => 'moyenne'],
Expand Down
11 changes: 9 additions & 2 deletions app/Services/BulletinRenderer.php
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,11 @@ private function noteValue(array $line, ?string $source): string
return $this->num($line['by_type'][substr($source, 5)] ?? null);
}

return $this->num($line[$source] ?? null);
// La source « composition » (NOTE_SOURCES / colonnes) correspond à la clé
// « compo » du snapshot : sans cet alias la colonne Compo reste toujours vide.
$key = $source === 'composition' ? 'compo' : $source;

return $this->num($line[$key] ?? null);
}

private function infoBlock(array $p): string
Expand Down Expand Up @@ -340,7 +344,10 @@ private function ordinal(int $rank): string

private function css(): string
{
return <<<CSS
// L'en-tête ministériel est rendu par DocumentRenderer mais ses styles
// (dont le plafond de taille du logo) ne sont pas dans le baseCss du bulletin :
// sans eux le logo s'affiche à sa taille naturelle et écrase l'en-tête.
return $this->documents->headerCss() . <<<CSS
* { box-sizing: border-box; }
body { font-family: 'DejaVu Sans', sans-serif; color: #1a1a1a; font-size: 11px; margin: 0; }
.bul-title { text-align: center; font-weight: bold; font-size: 14px; text-transform: uppercase; margin: 6px 0 10px; }
Expand Down
Loading
Loading