Cas pràctic: API de gestió d'incidències
Descripció del projecte
L'Institut Sa Palomera necessita un sistema intern per gestionar les incidències TIC dels alumnes i professors. Actualment tot es fa per correu electrònic, cosa que genera desordre i pèrdua de seguiment. Es vol construir una API REST (backend) que permeti crear, assignar i tancar incidències, amb un frontend simple per als usuaris.
Durada total: 6 setmanes (3 sprints de 2 setmanes). Equip: 4 persones (2 backend, 1 frontend, 1 QA/DevOps).
Visió del projecte i Product Goal
Product Goal:
Al final del projecte, el sistema de tickets permetrà
als usuaris de l'institut crear incidencies TIC i al
servei tecnic gestionar-les i tancar-les, eliminant
la dependencia del correu electronic.
Product Backlog inicial
Epic 1: Gestio d'usuaris i autenticació
| ID | Historia | SP | Prioritat |
|---|---|---|---|
| D01 | Com a usuari, vull poder registrar-me amb el correu institucional i una contrasenya, per accedir al sistema. | 5 | Alta |
| D02 | Com a usuari, vull iniciar sessio i rebre un token JWT, per autenticar les meves peticions a l'API. | 3 | Alta |
| D03 | Com a admin, vull assignar rols (usuari, tecnic, admin), per controlar que pot fer cada persona. | 5 | Alta |
Epic 2: Gestio d'incidencies
| ID | Historia | SP | Prioritat |
|---|---|---|---|
| D04 | Com a usuari, vull crear una incidencia amb titol, descripcio i prioritat, per comunicar el problema al servei tecnic. | 5 | Alta |
| D05 | Com a tecnic, vull veure totes les incidencies obertes ordenades per prioritat, per atendre-les en ordre. | 3 | Alta |
| D06 | Com a tecnic, vull assignar una incidencia a mi mateix o a un altre tecnic, per gestionar la carrega de treball. | 3 | Alta |
| D07 | Com a tecnic, vull canviar l'estat d'una incidencia (oberta, en progres, resolta, tancada), per reflectir el progres real. | 3 | Alta |
| D08 | Com a usuari, vull rebre una notificacio per correu quan l'estat de la meva incidencia canvia, per estar informat. | 5 | Mitjana |
| D09 | Com a admin, vull veure estadistiques (temps de resolucio, incidencies per tecnic, per categoria), per gestionar l'equip. | 8 | Baixa |
Epic 3: Qualitat i desplegament
| ID | Historia | SP | Prioritat |
|---|---|---|---|
| D10 | Com a sysadmin, vull que l'API i la base de dades s'executin en contenidors Docker, per facilitar el desplegament. | 5 | Alta |
| D11 | Com a dev, vull tests automatics per als endpoints principals de l'API, per detectar regressions. | 8 | Mitjana |
| D12 | Com a dev, vull un pipeline CI/CD (GitHub Actions) que executi els tests i faci el deploy automaticament, per reduir l'error huma. | 8 | Baixa |
Planificació dels sprints
Sprint 1 — Autenticació i CRUD bàsic d'incidències
Sprint Goal: Un usuari pot registrar-se, iniciar sessió i crear/veure incidències via l'API.
| Item | SP |
|---|---|
| D01 — Registre d'usuari | 5 |
| D02 — Login + JWT | 3 |
| D04 — Crear incidencia | 5 |
| D05 — Llistar incidencies | 3 |
| D10 — Docker | 5 |
| Total | 21 |
Sprint 2 — Gestió completa i rols
Sprint Goal: Tecnics poden gestionar el cicle complet d'una incidència. Rols implementats.
| Item | SP |
|---|---|
| D03 — Rols | 5 |
| D06 — Assignar incidencia | 3 |
| D07 — Canviar estat | 3 |
| D08 — Notificacions correu | 5 |
| D11 — Tests automatics | 8 |
| Total | 24 |
Sprint 3 — Estadístiques, CI/CD i tancament
Sprint Goal: Sistema complet amb estadístiques, pipeline CI/CD i documentació de l'API.
| Item | SP |
|---|---|
| D09 — Estadistiques | 8 |
| D12 — CI/CD | 8 |
| Documentacio API (Swagger/OpenAPI) | 3 |
| Proves d'acceptacio | 3 |
| Total | 22 |
Definition of Done del projecte
Un item es considera DONE quan:
[ ] L'endpoint o funcionalitat esta implementat i els tests passen (>=80% coverage).
[ ] El codi esta revisat per un altre membre de l'equip (PR aprovat).
[ ] L'endpoint esta documentat a Swagger/OpenAPI.
[ ] El pipeline CI/CD passa sense errors.
[ ] S'han executat les proves manuals dels criteris d'acceptacio.
[ ] L'issue esta tancat a GitHub Projects.
Activitat RA5 — Sprint 1 Dev
Executeu el primer sprint del projecte d'API:
- Configureu el repositori GitHub amb la plantilla d'Issues i el tauler Projects.
- Feu el Sprint Planning i descomposeu els items en tasques de menys d'un dia.
- Manteniu el tauler actualitzat i feu la Daily cada dia de classe.
- Al final del sprint, feu la Sprint Review: l'API ha de funcionar en local via curl o Postman.
- Feu la Retrospectiva i documenteu les accions de millora.