Vai al contenuto

Debito Tecnico e Aree di Miglioramento

Obiettivo

Questo documento raccoglie il debito tecnico noto, i TODO aperti e i punti di attenzione architetturali e funzionali all'interno della codebase mobile di HapGree, utili per pianificare le future attività di refactoring e completamento.


Attività ad Alta Priorità

1. Pagina di Join Group via Route dedicata

In lib/Routing/Routes/GroupsRoutes.dart, la rotta /group/join/:tag restituisce attualmente un Container() vuoto: - La partecipazione a un gruppo tramite codice/tag avviene al momento solo tramite overlay e pop-up (JoinGroupScrollPopUp, JoinGroupWithTagScrollPopUp); - Azione richiesta: completare la vista dedicata per il deep link diretto GroupsRoutes.joinGroup.

2. Scanner Scontrini Alimentari (Food OCR) e integrazione OpenFoodFacts

Nel ReceiptScannerViewModel.dart (lib/viewModel/user/category/food/): - La chiamata diretta a OpenFoodFacts è temporaneamente disattivata a causa di rate limiting/blocchi, ed è presente un fallback con FoodItemEntity di test; - Azione richiesta: stabilizzare il parsing OCR e integrare un meccanismo robusto di caching o proxy backend per le ricerche su OpenFoodFacts.

3. Allineamento dei parametri di default nel tracking mobilità

In AutomaticTrackingViewModel.dart (lib/viewModel/user/category/DrivingAnalysis/), durante la sincronizzazione verso il backend in _loadAllSavedSessionsToDatabase(): - I campi travelReasonType e vehicleType vengono impostati con valori di default (work e dieselCar); - Azione richiesta: propagare i parametri reali selezionati dall'utente o configurati nel profilo per evitare discrepanze nelle stime di emissione.

4. Fattore di conversione compensazione parametrico

In FreeCompensationViewModel.dart (lib/viewModel/user/compensation/): - Il rapporto di conversione monetaria (1 EUR = 10 kg CO2) è attualmente hardcoded nel client; - Azione richiesta: esporre il tasso di conversione tramite un endpoint di configurazione backend per consentire variazioni di pricing senza rilasci dell'app mobile.

5. Dettaglio Certificati di Compensazione

In CertificateDetailPage.dart (lib/view/user/setting/): - Alcuni attributi secondari del progetto (location, standard, stima annua) usano fallback locali legati al project_id; - Azione richiesta: estendere il DTO del certificato nelle OpenAPI per rendere tutti i metadati del progetto interamente pilotati dal backend.


Attività a Media Priorità

6. Standardizzazione della gestione configurazioni e segreti

  • Le chiavi e i parametri di configurazione sono distribuiti tra lib/Configuration.dart, AndroidManifest.xml, Info.plist e file Firebase;
  • Azione richiesta: valutare l'introduzione di uno schema unificato per la gestione delle variabili d'ambiente (es. --dart-define / CI environment injection).

7. Gestione della Google Maps API Key

  • La chiave Google Maps è inserita nei file nativi (AndroidManifest.xml e Info.plist);
  • Azione richiesta: verificare che sulla Google Cloud Console siano sempre attive le restrizioni per package name (Android SHA-1) e Bundle ID (iOS).

8. Evoluzione dello storage locale per la coda viaggi

  • Il tracking automatico utilizza SharedPreferences (chiave driving_history) come buffer di sincronizzazione per i viaggi offline;
  • Azione richiesta: per carichi di tracciamento intensivi o sessioni prolungate, valutare la migrazione a un database locale (es. SQLite / Isar) per garantire transazionalità avanzata.

9. Pulizia dei log di debug

  • Nel modulo di tracking e in alcune ViewModel sono presenti istruzioni print(...) introdotte durante lo sviluppo;
  • Azione richiesta: sostituire i print con un logger strutturato per ambiente (attivo solo in debug/local).

Riepilogo dei TODO aperti nel codice

File Descrizione attività
lib/viewModel/user/category/food/ReceiptScannerViewModel.dart Ripristino e ottimizzazione ricerca OpenFoodFacts
lib/viewModel/user/groups/groupOwnership/GroupOwnershipViewModel.dart Implementazione completa del metodo dispose
lib/viewModel/user/groups/joinGroup/JoinGroupConfermationViewModel.dart Implementazione completa del metodo dispose
lib/viewModel/admin/tips/DeleteTipsViewModel.dart Implementazione completa del metodo dispose
lib/view/admin/dashboard/Dashboard.dart Completamento widget search box
lib/view/admin/nav_bar_config/NavBarAdminConfig.dart Aggiunta tab secondarie per amministrazione
lib/Services/Category/Receipt/createReceipt/implementation/PostSaveReceiptService.dart Completamento implementazione saveReceipt
lib/Services/Category/Receipt/createReceipt/implementations/HapGreeCreateReceiptService.dart Completamento implementazione makeRequest

Aree con Mock o Dati Placeholder

File Note
lib/view/user/setting/NotificationSocialAndGroupInvitation.dart Dati grafici di anteprima per inviti social
lib/view/user/setting/CertificateDetailPage.dart Dettagli informativi estesi per progetti di compensazione
lib/view/user/setting/CompensationCertificatesPage.dart Modello di visualizzazione basato sulla struttura API
lib/features/onboarding/onboarding_slide.dart Testi e asset delle schermate introduttive

Raccomandazioni per le Prossime Iterazioni

  1. Flusso Gruppi: Completare la vista dedicata per il deep link /group/join/:tag.
  2. Scanner Scontrini: Stabilizzare l'integrazione OCR con OpenFoodFacts o delegare la ricerca al backend.
  3. Parametri di Guida e Compensazione: Rimuovere i default statici per tipo veicolo e tasso di cambio CO2.
  4. Toolchain e CI/CD: Automatizzare la generazione del client OpenAPI e la firma delle build tramite pipeline CI.