ENG-001.5K — Nettoyage final du module Mairie — Rapport d'implémentation
| Mission | ENG-001.5K — Nettoyage final du module Mairie |
| Rattaché à | ENG-001.5 — Extraction de Municipal Management ; rapports ENG-001.5A à ENG-001.5J3 |
| Dépôt | dmv_api |
| Branche | feature/eng-001-5k-mairie-cleanup |
| Statut | Implémenté localement — aucun commit applicatif |
1. Objectif
Après migration d’Alertes, Services, Collectes, Élus, Infos et de la réconciliation Territory,
le module Mairie doit redevenir un module d’adaptation :
- routes workspace utiles ;
- middlewares d’accès ;
- façades HTTP ;
- délégation vers Municipal Management, Territory et Publication ;
- plus aucun métier municipal historique résiduel.
2. Inventaire du module app/Modules/Mairie
Controllers
MairieCommuneControllerMairiePublicationControllerMairieServiceController
Services
MairieReadServiceMairieWriteService
Middleware
EnsureCommuneManagerEnsureMairieAccess
Requests
CreateServiceRequestReorderServicesRequest
Jobs
ExpireAlertes
Routes
Routes/api.php
Providers
MairieServiceProvider
Models / DTO / Exceptions
- aucun modèle résiduel dans
app/Modules/Mairie - aucun DTO résiduel dans
app/Modules/Mairie - aucune exception dédiée dans
app/Modules/Mairie
3. Classification détaillée
Controllers
MairieCommuneController
- Statut : conservé
- Rôle actuel : façade HTTP
- Dépendances :
- lecture commune / infos via
MairieReadService - écriture commune / publications via
MairieWriteService - lectures et écritures métier municipal via
MunicipalManagementReader/MunicipalManagementWriter
- lecture commune / infos via
- Justification :
- porte encore les routes workspace
/mairie/communes/... - aucune logique métier lourde restante
- aucune écriture directe vers
commune_elus,commune_collectes,commune_infos
- porte encore les routes workspace
- Dette restante :
- garde locale d’existence de commune sur certaines créations pour préserver les codes HTTP historiques
MairiePublicationController
- Statut : conservé
- Rôle actuel : façade HTTP
- Justification :
- porte les routes publication mairie encore consommées
- délègue à
MairieReadService/MairieWriteService, eux-mêmes orientés Publication
MairieServiceController
- Statut : conservé
- Rôle actuel : façade HTTP
- Justification :
- porte les routes services mairie encore actives
- délégation complète à Municipal Management
- validation HTTP encore fournie par les
FormRequest
Services
MairieReadService
- Statut : conservé, allégé
- Méthodes encore utilisées :
getCommune()listInfos()listPublications()
- Méthodes supprimées comme mortes :
listElus()
- Justification de suppression :
- aucune référence runtime ni test métier ne l’utilise
MairieCommuneController::indexElus()délègue déjà directement àMunicipalManagementReader
- Rôle futur :
- adaptateur lecture commune / infos / publications uniquement
MairieWriteService
- Statut : conservé, allégé
- Méthodes encore utilisées :
createPublication()modererPublicationLocale()updateCommune()
- Méthodes supprimées comme mortes :
createElu()updateElu()deleteElu()
- Justification de suppression :
- aucune référence runtime ni test métier ne les appelle encore
MairieCommuneControllerdélègue déjà directement les élus àMunicipalManagementWriter
- Effet secondaire bénéfique :
- suppression de la dépendance inutile à
MunicipalManagementWriter
- suppression de la dépendance inutile à
Middleware
EnsureCommuneManager
- Statut : conservé
- Rôle actuel :
- contrôle d’accès workspace par commune
- résolution des permissions et modules via
ActorAccessService
- Utilisation indirecte :
- alias middleware
commune.manager - routes
Mairie
- alias middleware
- Dette restante :
- accès directs
DB::table()encore présents - dette explicitement hors périmètre de cette mission
- accès directs
EnsureMairieAccess
- Statut : conservé, non modifié
- Rôle actuel :
- vérification
kind='mairie' - contrôle d’accès / permission / module
- résolution d’
acteurIddepuis la route ou depuis certaines ressources liées
- vérification
- Dette restante documentée :
- dépendances SQL directes à
acteurs,mairie_services,publications - sujet reporté vers Authorization Platform Service
- dépendances SQL directes à
Requests
CreateServiceRequest
- Statut : conservé
- Utilisation :
MairieServiceController::store()
ReorderServicesRequest
- Statut : conservé
- Utilisation :
MairieServiceController::reorder()
Jobs
ExpireAlertes
- Statut : conservé
- Rôle actuel :
- point d’entrée scheduler historique
- délègue à
MunicipalManagementWriter::expireAlertes()
- Justification :
- aucune logique métier résiduelle
- maintien volontaire pour ne pas déplacer la déclaration du scheduler
Routes
Routes/api.php
- Statut : conservé
- Routes encore utiles :
- services publics mairie
- services protégés mairie
- publications mairie
- commune / élus / collectes / infos côté workspace mairie
- Aucune route supprimée
- Justification :
- consommateurs toujours présents
- hors périmètre de supprimer une route publique ou workspace sans preuve d’absence de consommateur
Provider
MairieServiceProvider
- Statut : conservé
- Rôle actuel :
- enregistrement des routes
- binding des deux services façade restants
4. Code supprimé
MairieReadService::listElus()MairieWriteService::createElu()MairieWriteService::updateElu()MairieWriteService::deleteElu()- dépendance inutile
MunicipalManagementWriterdansMairieWriteService
5. Code conservé
Conservé car encore utilisé ou structurellement requis :
- les trois controllers Mairie
MairieReadServiceMairieWriteServiceEnsureCommuneManagerEnsureMairieAccessCreateServiceRequestReorderServicesRequestExpireAlertesRoutes/api.phpMairieServiceProvidertests/Feature/Mairie/MairieTest.php
6. Preuves de non-utilisation avant suppression
Les suppressions ci-dessus ont été précédées d’une recherche exhaustive sur :
- références PHP directes ;
- contrôleurs ;
- routes ;
- tests ;
- provider ;
- bindings container ;
- scheduler ;
- commandes ;
- middleware ;
- imports.
Résultat observé :
- aucune référence à
MairieReadService::listElus() - aucune référence à
MairieWriteService::createElu() - aucune référence à
MairieWriteService::updateElu() - aucune référence à
MairieWriteService::deleteElu()
7. Tests et garde-fous
- garde-fou ajouté sur l’absence des méthodes élus supprimées dans
MunicipalEluDelegationTest - garde-fous architecturaux existants conservés
- tests Feature
Mairieconservés car ils valident encore les routes utiles services/publications
8. Rôle futur du module Mairie
Le module Mairie reste un module d’adaptation :
- façade HTTP workspace ;
- validation HTTP dédiée ;
- middlewares d’accès ;
- scheduler historique ;
- délégation vers :
- Municipal Management ;
- Publication ;
- Territory ;
- ActorAccessService.
Il n’est plus owner du métier municipal migré.
9. Dette restante
EnsureMairieAccessreste à traiter plus tard dans Authorization Platform ServiceEnsureCommuneManagerconserve aussi des accès SQL d’adaptationupdateCommune()reste dansMairieWriteServicecarcommunes.description/image_urlne font pas partie de cette mission- aucune suppression de route n’est justifiée à ce stade
10. Recommandations
- ne supprimer d’autres éléments du module
Mairiequ’après audit des consommateurs réels des routes workspace - traiter la dette middleware dans le chantier Authorization Platform Service, pas dans ENG-001.5K
- garder séparée la synchronisation documentaire globale du README backend