Couche données et persistance¶
Cette section décrit la base SQLite locale, son initialisation et la synchronisation avec l'API ThermoNova.
Cycle de vie¶
createDbFromAsset()créethermonova.dbà partir du scriptassets/createBDD.sql(batchs de 50 statements).seedTestData()insère une seed minimale (types de logement, énergies, départements, aides sociales) de manière idempotente.fetchAPI()enchaîne lesfetch*FromAPIpour hydrater les tables depuishttps://thermonova.t404.xyz/api/v1/.
Abstraction DatabaseLayer¶
- Situé dans
utils/autres/bdd_manager.dart. - Helpers CRUD génériques (
query,insert,update,delete) et méthodes typées (getHousingList,insertHeater,removeHousing, etc.). - Chaque méthode ouvre la base via
_openDb(), exécute l'opération puis ferme la connexion.
Modèles métiers¶
- Housing, HousingType, Department : logement et localisation (fournisseurs optionnels).
- Supplier / SimpleSupplier, Energy, UnitCost, CostThreshold : offre énergétique et coûts.
- Heater : radiateurs (dimensions, puissance, coûts).
- SocialAssistance, Criteria, ConstraintType, Constraints, CurrentCriteria : aides sociales, critères et contraintes associées.
- Insulation, InsulationType : données d'isolation.
Synchronisation API¶
APIService.fetchData(endpoint)effectue lesGET; le parsing JSON est fait dans chaquefetch*.fetchSupplierFromAPI(housing)fusionne fournisseurs et coûts départementaux, calcule min/avg/max et spécialise pour le département du logement.- Les autres fonctions (
fetchEnergyFromAPI,fetchSocialAssistanceFromAPI,fetchHeaterFromAPI, etc.) parsèrent puis appellent lesinsert*correspondants.
Points d'attention¶
- Tolérance aux erreurs via de nombreux
try/catchpour éviter de bloquer l'UI. - Les booléens sont mappés manuellement (0/1) dans
CurrentCriteriaetSocialAssistance. main()appellecreateDbFromAsset(),seedTestData(), puisfetchAPI()pour garantir un schéma prêt et des données minimales.