Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,11 @@
coverage*.json
coverage*.xml
coverage*.info

# SQLite — fichier de base de données généré au démarrage (artefact, pas du code source)
*.db
*.db-shm
*.db-wal

# Claude Code — configuration locale, non versionnée
.claude/
73 changes: 38 additions & 35 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,66 +1,69 @@
# CLAUDE.md — Tasks API
# CLAUDE.md — Support Tickets API

## Contexte
Projet d'exercice pour apprendre/réviser ASP.NET Core Web API sur .NET 10.
L'objectif est pédagogique : comprendre les concepts du framework, pas d'aller en production.
API REST de gestion de tickets de support construite avec ASP.NET Core Web API (.NET 10).
Architecture DDD en couches avec Entity Framework Core et SQLite.

## Stack technique
- **Framework** : ASP.NET Core Web API (.NET 10)
- **Stockage** : liste statique en mémoire (`TaskRepository.cs`), pas de base de données
- **Persistance** : SQLite via Entity Framework Core
- **Pattern** : DDD — Aggregate Root, Value Object, Application Service
- **Architecture** : Domain / Application / Infrastructure / API

## Structure du projet
```
tasks/
Program.cs — configuration de l'application
Program.cs — configuration, DI, migrations au démarrage
appsettings.json — chaîne de connexion SQLite
Domain/
TaskItem.cs — Aggregate Root (setters privés, méthodes métier)
TaskTitle.cs — Value Object (validation du titre)
Ticket.cs — Aggregate Root (setters privés, méthodes métier)
TicketTitle.cs — Value Object (validation 3-100 chars)
TicketStatus.cs — Value Object (transitions contrôlées)
Priority.cs — Enum (Low/Medium/High/Critical)
Category.cs — Enum (Bug/Feature/Question/Improvement)
exception/
ValidationException.cs
NotFoundException.cs
ConflictException.cs
InvalidTransitionException.cs — transition de statut non autorisée
Application/
ITaskService.cs — interface du service applicatif
ITaskRepository.cs — interface du repository (abstraction)
TaskService.cs — orchestration (sans règles métier)
ITicketService.cs — interface du service applicatif
ITicketRepository.cs — interface du repository (abstraction)
TicketService.cs — orchestration (sans règles métier)
DTOs/
CreateTaskDto.cs
UpdateTaskDto.cs
PatchTaskDto.cs
CreateTicketDto.cs
UpdateTicketDto.cs
PatchTicketDto.cs
TransitionDto.cs
TicketDto.cs
Infrastructure/
Persistence/
AppDbContext.cs — DbContext EF Core
AppDbContextFactory.cs — factory pour les outils de migration CLI
TicketSeeder.cs — données initiales (idempotent)
Configurations/
TicketConfiguration.cs — ValueConverters TicketTitle/TicketStatus ↔ string
Repositories/
TaskRepository.cs — implémentation en mémoire (liste statique)
TicketRepository.cs — implémentation EF Core
Migrations/ — migrations EF Core générées
API/
Controllers/
TasksController.cs — endpoints REST
TicketsController.cs — endpoints REST
Middleware/
ExceptionMiddleware.cs — gestion centralisée des erreurs
ExceptionMiddleware.cs — gestion centralisée des erreurs
```

## Commandes
```bash
dotnet run # Lancer l'API (depuis tasks/)
dotnet build # Compiler (depuis tasks/)
dotnet build # Compiler (depuis dotnet-api-sandbox/)
dotnet run --project tasks # Lancer l'API
dotnet test # Lancer les tests
```

## Conventions utilisées
- Routes en minuscules (`/tasks`, `/tasks/{id}`)
## Conventions
- Routes en minuscules (`/tickets`, `/tickets/{id}`)
- `ActionResult<T>` pour les endpoints GET
- `IActionResult` pour PUT, PATCH, DELETE
- Codes HTTP explicites : 200, 201, 204, 400, 404, 409

## Ressources pédagogiques

| Fichier | Contenu | Niveau |
|---|---|---|
| `docs/quiz/phases1_a_6_quiz.md` | Q1–Q39 — bases, architecture, DI, DTOs, erreurs, tests | Junior+ / Intermédiaire |
| `docs/quiz/phases7_a_10_quiz.md` | Q40–Q60 — SOLID, DDD, EF Core, tests intégration | Intermédiaire |
| `docs/quiz/phases11_a_13_quiz.md` | Q61–Q75 — validation, logging, configuration | Intermédiaire confirmé |
| `docs/quiz/phases14_a_16_quiz.md` | Q76–Q88 — JWT, versioning, Swagger | Senior junior |
| `docs/quiz/phase17_quiz.md` | Q89–Q93 — Clean Architecture, CQRS, MediatR | Senior / Avancé |

Chaque question est taguée `[Facile]`, `[Normal]` ou `[Difficile]`.
Pour un quiz interactif avec exemples tirés du projet : demande "fais-moi le quiz phases X-Y en mode [facile|normal|complet]".

- Codes HTTP explicites : 200, 201, 204, 400, 404, 409, 422
- 422 Unprocessable Entity pour les transitions de statut invalides
- Commits conventionnels : `feat`, `fix`, `docs`, `refactor`, `test`
104 changes: 0 additions & 104 deletions FIN_DE_PHASE.md

This file was deleted.

Loading
Loading