feat: Permettre à l'enseignant de créer et gérer ses évaluations
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:
45
backend/migrations/Version20260323114411.php
Normal file
45
backend/migrations/Version20260323114411.php
Normal 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');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user