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
matchesdanssrc/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
- Définir la table
-
Créer le schéma Drizzle pour predictions (AC: #1)
- Définir la table
predictionsdanssrc/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
- Définir la table
-
Créer le modèle SQLAlchemy pour matches (AC: #2)
- Définir le modèle
Matchdansbackend/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
- Définir le modèle
-
Créer le modèle SQLAlchemy pour predictions (AC: #2)
- Définir le modèle
Predictiondansbackend/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
- Définir le modèle
-
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_casepour 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.tschartbastan/drizzle/migrations/0001_omniscient_white_queen.sqlbackend/app/models/match.pybackend/app/models/prediction.pybackend/app/models/__init__.py(mis à jour pour inclure Match et Prediction)backend/app/schemas/match.pybackend/app/schemas/prediction.pybackend/app/schemas/__init__.py(mis à jour pour inclure les schémas match et prediction)backend/alembic/versions/20260117_0005_create_matches_and_predictions_tables.pybackend/tests/test_match_model.pybackend/tests/test_prediction_model.pybackend/tests/test_match_schema.pybackend/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
matchesetpredictions - 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.