chartbastan/_bmad-output/implementation-artifacts/3-1-créer-le-modèle-de-données-pour-matchs-et-prédictions.md
2026-02-01 09:31:38 +01:00

4.8 KiB

Story 3.1: Créer le modèle de données pour matchs et prédictions

Status: review

Acceptance Criteria

Given la base de données SQLite est configurée When je crée les schémas Drizzle pour matches et predictions Then la table matches contient : id, home_team, away_team, date, league, status And la table predictions contient : id, match_id, energy_score, confidence, predicted_winner, created_at And les relations foreign key sont configurées And les migrations sont générées et appliquées

Given les modèles SQLAlchemy sont créés dans FastAPI When je synchronise avec la base de données Then les modèles Pydantic pour validation sont créés And les relations entre modèles fonctionnent correctement

Tasks / Subtasks

  • Créer le schéma Drizzle pour matches (AC: #1)

    • Définir la table matches dans src/db/schema.ts
    • Ajouter colonnes: id, home_team, away_team, date, league, status
    • Configurer les indexes appropriés
    • Ajouter les contraintes (not null, unique)
    • Générer et appliquer la migration
  • Créer le schéma Drizzle pour predictions (AC: #1)

    • Définir la table predictions dans src/db/schema.ts
    • Ajouter colonnes: id, match_id, energy_score, confidence, predicted_winner, created_at
    • Configurer la foreign key vers matches
    • Configurer les indexes appropriés
    • Générer et appliquer la migration
  • Créer le modèle SQLAlchemy pour matches (AC: #2)

    • Définir le modèle Match dans backend/app/models/match.py
    • Ajouter les colonnes avec types SQLAlchemy
    • Configurer les relations
    • Créer le schéma Pydantic correspondant
    • Synchroniser avec la base de données
  • Créer le modèle SQLAlchemy pour predictions (AC: #2)

    • Définir le modèle Prediction dans backend/app/models/prediction.py
    • Ajouter les colonnes avec types SQLAlchemy
    • Configurer la relation avec Match
    • Créer le schéma Pydantic correspondant
    • Synchroniser avec la base de données
  • Tester les modèles et relations (AC: #1, #2)

    • Tester la création d'un match
    • Tester la création d'une prédiction liée à un match
    • Tester les relations (match → predictions)
    • Valider les types TypeScript générés
    • Valider les schémas Pydantic

Dev Notes

Architecture Patterns et Contraintes

Stack Technique Imposé:

  • Next.js ORM: Drizzle v0.44.7 avec better-sqlite3
  • FastAPI ORM: SQLAlchemy 2.0.45
  • Validation: Pydantic (FastAPI), TypeScript types (Next.js)
  • Conventions: snake_case pour tables/colonnes

File Structure

src/db/schema.ts
backend/app/models/match.py
backend/app/models/prediction.py
backend/app/schemas/match.py
backend/app/schemas/prediction.py

References

  • [Source: _bmad-output/planning-artifacts/epics.md#Story-3.1]

Dev Agent Record

Agent Model Used

GLM-4.7

Completion Notes List

  • Schémas Drizzle créés pour matches et predictions avec toutes les colonnes requises
  • Migration Drizzle générée et stockée dans drizzle/migrations/0001_omniscient_white_queen.sql
  • Modèles SQLAlchemy créés pour Match et Prediction avec relations et indexes
  • Schémas Pydantic créés pour validation (MatchCreate, MatchUpdate, MatchResponse, PredictionCreate, etc.)
  • Migration Alembic créée pour les tables matches et predictions
  • Tests unitaires créés pour les modèles et schémas Pydantic

File List

  • chartbastan/src/db/schema.ts
  • chartbastan/drizzle/migrations/0001_omniscient_white_queen.sql
  • backend/app/models/match.py
  • backend/app/models/prediction.py
  • backend/app/models/__init__.py (mis à jour pour inclure Match et Prediction)
  • backend/app/schemas/match.py
  • backend/app/schemas/prediction.py
  • backend/app/schemas/__init__.py (mis à jour pour inclure les schémas match et prediction)
  • backend/alembic/versions/20260117_0005_create_matches_and_predictions_tables.py
  • backend/tests/test_match_model.py
  • backend/tests/test_prediction_model.py
  • backend/tests/test_match_schema.py
  • backend/tests/test_prediction_schema.py

Change Log

2026-01-17: Implémentation complète des modèles de données pour matchs et prédictions

  • Création des schémas Drizzle pour les tables matches et predictions
  • Configuration des indexes et contraintes de base de données
  • Création des modèles SQLAlchemy avec relations et méthodes utilitaires
  • Création des schémas Pydantic pour validation des données
  • Génération des migrations Drizzle et Alembic
  • Création de tests unitaires complets pour modèles et schémas

Cette implémentation permet de stocker les informations sur les matchs sportifs et les prédictions associées, avec une relation un-à-plusieurs entre les matchs et les prédictions.