feat: Permettre à l'enseignant de créer et gérer ses évaluations
Some checks failed
CI / Backend Tests (push) Has been cancelled
CI / Frontend Tests (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
CI / Naming Conventions (push) Has been cancelled
CI / Build Check (push) Has been cancelled

Les enseignants avaient besoin de définir les critères de notation
(barème, coefficient) avant de pouvoir saisir des notes. Sans cette
brique, le module Notes & Évaluations (Epic 6) ne pouvait pas démarrer.

L'évaluation est un agrégat du bounded context Scolarité avec deux
Value Objects (GradeScale 1-100, Coefficient 0.1-10). Le barème est
verrouillé dès qu'une note existe pour éviter les incohérences.
Un port EvaluationGradesChecker (stub pour l'instant) sera branché
sur le repository de notes dans la story 6.2.
This commit is contained in:
2026-03-23 23:56:37 +01:00
parent 8d950b0f3c
commit 93baeb1eaa
43 changed files with 4312 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20260323114411 extends AbstractMigration
{
public function getDescription(): string
{
return 'Create evaluations table';
}
public function up(Schema $schema): void
{
$this->addSql('CREATE TABLE evaluations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL,
class_id UUID NOT NULL REFERENCES school_classes(id),
subject_id UUID NOT NULL REFERENCES subjects(id),
teacher_id UUID NOT NULL REFERENCES users(id),
title VARCHAR(255) NOT NULL,
description TEXT,
evaluation_date DATE NOT NULL,
grade_scale SMALLINT NOT NULL DEFAULT 20,
coefficient DECIMAL(3,1) NOT NULL DEFAULT 1.0,
status VARCHAR(20) NOT NULL DEFAULT \'published\',
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
)');
$this->addSql('CREATE INDEX idx_evaluations_tenant ON evaluations(tenant_id)');
$this->addSql('CREATE INDEX idx_evaluations_class ON evaluations(class_id)');
$this->addSql('CREATE INDEX idx_evaluations_teacher ON evaluations(teacher_id)');
$this->addSql('CREATE INDEX idx_evaluations_date ON evaluations(evaluation_date)');
}
public function down(Schema $schema): void
{
$this->addSql('DROP TABLE IF EXISTS evaluations');
}
}