Files
Classeo/backend/migrations/Version20260323114411.php
Mathias STRASSER 93baeb1eaa
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
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.
2026-03-23 23:56:37 +01:00

46 lines
1.6 KiB
PHP

<?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');
}
}