Aller au contenu principal

Projet B: Systeme de Gestion de Taches

Description​

Developper une API RESTful pour un systeme de gestion de projets et taches, permettant aux equipes de collaborer, suivre l'avancement et gerer leur temps.


Fonctionnalites Requises​

1. Gestion des Utilisateurs​

POST   /api/auth/register     - Inscription
POST /api/auth/login - Connexion (retourne JWT)
GET /api/users/me - Profil utilisateur
PUT /api/users/me - Modifier profil
GET /api/users - Liste utilisateurs (ADMIN/MANAGER)

Entite User:

  • id, email, password, firstName, lastName
  • role (ADMIN, MANAGER, MEMBER)
  • department, createdAt

2. Gestion des Projets​

GET    /api/projects              - Mes projets
POST /api/projects - Creer projet
GET /api/projects/{id} - Detail projet
PUT /api/projects/{id} - Modifier projet
DELETE /api/projects/{id} - Supprimer projet
POST /api/projects/{id}/members - Ajouter membre
DELETE /api/projects/{id}/members/{userId} - Retirer membre

Entite Project:

  • id, name, description
  • owner (User)
  • members (ManyToMany User)
  • status (PLANNING, ACTIVE, ON_HOLD, COMPLETED)
  • startDate, endDate, createdAt

3. Gestion des Taches​

GET    /api/projects/{id}/tasks       - Taches du projet
POST /api/projects/{id}/tasks - Creer tache
GET /api/tasks/{id} - Detail tache
PUT /api/tasks/{id} - Modifier tache
DELETE /api/tasks/{id} - Supprimer tache
PUT /api/tasks/{id}/status - Changer statut
PUT /api/tasks/{id}/assign - Assigner tache
GET /api/tasks/my-tasks - Mes taches

Entite Task:

  • id, title, description
  • project (ManyToOne)
  • assignee (User)
  • priority (LOW, MEDIUM, HIGH, URGENT)
  • status (TODO, IN_PROGRESS, IN_REVIEW, DONE)
  • dueDate, estimatedHours, createdAt

4. Commentaires et Activite​

GET    /api/tasks/{id}/comments       - Commentaires
POST /api/tasks/{id}/comments - Ajouter commentaire
DELETE /api/comments/{id} - Supprimer commentaire
GET /api/tasks/{id}/activity - Historique activite

Entite Comment:

  • id, task, author, content, createdAt

Entite Activity:

  • id, task, user, action, details, createdAt

5. Suivi du Temps​

POST   /api/tasks/{id}/time-entries   - Logger du temps
GET /api/tasks/{id}/time-entries - Temps sur la tache
GET /api/time-entries/my-entries - Mon temps
GET /api/projects/{id}/time-report - Rapport temps projet

Entite TimeEntry:

  • id, task, user, hours, description, date

Schema de Base de Donnees​

users
├── id (PK)
├── email (UNIQUE)
├── password
├── first_name
├── last_name
├── role
├── department
└── created_at

projects
├── id (PK)
├── name
├── description
├── owner_id (FK)
├── status
├── start_date
├── end_date
└── created_at

project_members
├── project_id (FK)
└── user_id (FK)

tasks
├── id (PK)
├── title
├── description
├── project_id (FK)
├── assignee_id (FK)
├── priority
├── status
├── due_date
├── estimated_hours
└── created_at

comments
├── id (PK)
├── task_id (FK)
├── author_id (FK)
├── content
└── created_at

activities
├── id (PK)
├── task_id (FK)
├── user_id (FK)
├── action
├── details
└── created_at

time_entries
├── id (PK)
├── task_id (FK)
├── user_id (FK)
├── hours
├── description
└── date

Regles Metier​

Projets​

  • Seul le owner ou ADMIN peut supprimer un projet
  • MANAGER peut creer des projets
  • Un membre peut voir les projets auxquels il appartient

Taches​

  • Seuls les membres du projet peuvent voir les taches
  • Assigner une tache cree une activite
  • Changement de statut cree une activite

Transitions de Statut Tache​

TODO -> IN_PROGRESS -> IN_REVIEW -> DONE
<- (peut revenir en arriere)

Permissions​

RoleProjetsTachesMembres
ADMINCRUD allCRUD allGerer tous
MANAGERCRUD ownsCRUD projetsGerer projets
MEMBERRead assignedCRUD assigned-

Endpoints Detailles​

Projets​

POST /api/projects
Authorization: Bearer <token>
Content-Type: application/json

{
"name": "Website Redesign",
"description": "Complete redesign of company website",
"startDate": "2024-02-01",
"endDate": "2024-04-30"
}

Response 201:
{
"id": 1,
"name": "Website Redesign",
"description": "Complete redesign of company website",
"owner": { "id": 1, "firstName": "John", "lastName": "Doe" },
"status": "PLANNING",
"startDate": "2024-02-01",
"endDate": "2024-04-30",
"members": [],
"createdAt": "2024-01-15T10:30:00"
}

Taches​

POST /api/projects/1/tasks
Authorization: Bearer <token>
Content-Type: application/json

{
"title": "Design Homepage",
"description": "Create new homepage design mockups",
"priority": "HIGH",
"dueDate": "2024-02-15",
"estimatedHours": 16,
"assigneeId": 2
}

Response 201:
{
"id": 1,
"title": "Design Homepage",
"description": "Create new homepage design mockups",
"project": { "id": 1, "name": "Website Redesign" },
"assignee": { "id": 2, "firstName": "Jane", "lastName": "Smith" },
"priority": "HIGH",
"status": "TODO",
"dueDate": "2024-02-15",
"estimatedHours": 16
}

Suivi du Temps​

POST /api/tasks/1/time-entries
Authorization: Bearer <token>
Content-Type: application/json

{
"hours": 4.5,
"description": "Initial design concepts",
"date": "2024-02-01"
}

Response 201:
{
"id": 1,
"task": { "id": 1, "title": "Design Homepage" },
"user": { "id": 2, "firstName": "Jane" },
"hours": 4.5,
"description": "Initial design concepts",
"date": "2024-02-01"
}

Rapport Temps​

GET /api/projects/1/time-report
Authorization: Bearer <token>

Response 200:
{
"project": { "id": 1, "name": "Website Redesign" },
"totalHours": 45.5,
"estimatedHours": 120,
"byUser": [
{ "user": "Jane Smith", "hours": 28.5 },
{ "user": "Bob Wilson", "hours": 17.0 }
],
"byTask": [
{ "task": "Design Homepage", "logged": 16, "estimated": 16 },
{ "task": "Implement Header", "logged": 12.5, "estimated": 24 }
]
}

Tests Requis​

Tests Unitaires​

  • ProjectService: CRUD, member management
  • TaskService: CRUD, status transitions
  • TimeEntryService: logging, calculations

Tests Integration​

  • ProjectController: all endpoints
  • TaskController: task workflow
  • Security: role-based access

Bonus Points​

FonctionnalitePoints
WebSocket notifications+5
Kanban board data endpoint+3
Email notifications (simulation)+3
Taches recurrentes+3
Export rapport PDF+3
Dashboard statistiques+5

Estimation Temps​

TacheHeures
Setup projet et DB2
Entites et repositories5
Services metier8
Controllers REST5
Securite et permissions5
Tests6
Documentation2
Bonus4-8
Total33-41

Retour au Projet Final