Projecte 5 — PeixExprés
| Camp | Valor |
|---|---|
| Empresa | PeixExprés (repartiment de peix fresc del port de Blanes) |
| Sector | Logística d'última milla |
| Nivell | Mitjà — temps real i escala: el teu domini a PeixExprés |
| Durada estimada | 7 hores |
| Blocs relacionats | Bloc 4 (arquitectura, particionament), Bloc 5 (ETL) |
Context
PeixExprés neix del port de pescadors de Blanes: compra peix directament de la llotja cada matinada i el reparteix fresc a restaurants de tota Catalunya en menys de 6 hores. Cada furgoneta porta un GPS que envia la seva posició cada 15 segons, i el negoci depèn totalment de complir el compromís de temps de lliurament (SLA) amb els restaurants.
Dia 1 — Ingesta de dades GPS en streaming
Cada furgoneta emet events com aquest, cada 15 segons:
{"id_furgoneta": "VAN-07", "lat": 41.6753, "lon": 2.7912, "velocitat_kmh": 42, "timestamp": "2026-06-15T07:32:15Z"}
Datasets
Amb 40 furgonetes emetent cada 15 segons seria inviable repartir un fitxer amb tota la flota; per treballar-hi, se't dona una mostra real de 5 furgonetes fent el seu trajecte complet el 15 de juny de 2026:
| Fitxer | Contingut | Files |
|---|---|---|
gps_events.jsonl |
Events GPS (id_furgoneta, lat, lon, velocitat_kmh, timestamp) de 5 furgonetes (VAN-01 a VAN-05) |
3.300 |
comandes_entrega.csv |
Una comanda per furgoneta amb hora de sortida i d'entrega confirmada (una incompleix el SLA de 6 hores) | 5 |
Tasca: amb un volum de 40 furgonetes emetent cada 15 segons, calcula quants events es generen per hora i per dia. Proposa una arquitectura d'ingesta (cua d'events + processament en streaming) adequada a aquest volum, i explica per què escriure cada event directament com un fitxer individual al Data Lake seria un error (relaciona-ho amb el small file problem del Bloc 4).
Dia 2 — Càlcul de l'ETA (temps estimat d'arribada)
Tasca: amb la posició GPS actual d'una furgoneta i la ubicació del restaurant de destinació, dissenya (en pseudocodi) el càlcul d'un ETA simple basat en la distància restant i la velocitat mitjana dels últims 10 minuts. Explica quines dades caldria emmagatzemar en una taula agregada (finestra temporal de 10 minuts) per no haver de recalcular-ho des de zero a cada event GPS nou.
Dia 3 — Detecció d'incompliments de SLA
El compromís amb els restaurants és: el peix arriba en menys de 6 hores des de la sortida de la llotja, o el client rep un avís i un descompte automàtic.
Tasca: escriu la lògica (SQL o Python) que, per a cada comanda, comprovi si el temps transcorregut entre hora_sortida_llotja i hora_entrega_confirmada supera les 6 hores, i generi una alerta si l'ETA calculat al Dia 2 ja indica que se superarà el termini abans que passi (per poder avisar el client amb antelació, no només després del fet).
Dia 4 — El problema de l'escala
PeixExprés ha crescut de 5 a 40 furgonetes en un any, i les consultes que abans trigaven segons ara triguen minuts. L'equip tècnic sospita que el problema és com estan particionades les dades històriques de posicions GPS.
Tasca: el dataset actual està particionat únicament per dia (data=2026-06-15/). Les consultes més habituals filtren per furgoneta i per franja horària concreta (per exemple, "on era la VAN-07 entre les 7:00 i les 8:00 del 15 de juny?"). Proposa un esquema de particionament millor (justifica quantes columnes de partició i en quin ordre), tenint en compte el compromís entre partition pruning efectiu i el risc de crear massa particions petites (small file problem, Bloc 4).
Lliurament
- Càlcul de volum d'events i proposta d'arquitectura d'ingesta (Dia 1).
- Disseny del càlcul d'ETA (Dia 2).
- Lògica de detecció proactiva d'incompliment de SLA (Dia 3).
- Proposta i justificació del nou esquema de particionament (Dia 4).
Mòdul M5074 Sistemes de Big Data | Institut Sa Palomera (Blanes) | Curs CEIABD 2026-2027