Documentation de l'application Loko

Table des matières

1. Vue d'ensemble 2. Architecture de l'application 3. Modules Django 4. Schéma des modèles et relations 5. Détail des modèles par module 6. Flux de données 7. Diagrammes

---

Vue d'ensemble

Loko est un système complet de gestion des actifs de voirie (Street Asset Management System). L'application permet de gérer, suivre et maintenir différents types d'infrastructures de rue telles que :

L'application est construite avec Django et utilise PostGIS pour la gestion des données géospatiales.

---

Architecture de l'application

loko/
├── loko/               # Configuration principale Django
│   ├── settings.py     # Paramètres de l'application
│   ├── urls.py         # Routes principales
│   └── wsgi.py         # Point d'entrée WSGI
│
├── common/             # Module commun (thématiques, utilisateurs, documents)
├── assets/             # Gestion des actifs (équipements de voirie)
├── interventions/      # Gestion des interventions de maintenance
├── contracts/          # Gestion des contrats et commandes
├── projects/           # Gestion des projets
├── observations/       # Signalements et observations terrain
├── controls/           # Contrôles et rapports de chantier
├── documents/          # Gestion documentaire avancée
├── stock/              # Gestion du stock et des entrepôts
├── api/                # API REST
├── home/               # Page d'accueil
└── mobile/             # Interface mobile

---

Modules Django

1. Module common - Données communes

Le module common contient les modèles partagés par l'ensemble de l'application.

ModèleDescription --------------------- ThematicThématiques (feux, éclairage, signalisation, etc.) RoleRôles utilisateurs (manager, technicien, admin) UserConfigConfiguration utilisateur et permissions UserThematicsAccès utilisateur par thématique UserContractAccessAccès utilisateur par contrat DocumentClasse abstraite pour les documents MunicipalityCommunes AdrStreetNoms de rues AdrPointPoints d'adresse

Liste des thématiques

Nom (FR)Nom (NL)CodeIcône BootstrapCouleur ---------------------------------------------------- Centres de contrôlesControl centerscontrolcentersbi-building-gear#000000 Eclairage publicOpenbare verlichtingpubliclightingbi-lightbulb#000000 Feux tricoloresVerkeerslichtentrafficlightsbi-stoplights#000000 ITSITSitsbi-lightning#000000 NatureNatuurnaturebi-suit-club#00ff00 Ouvrages d'artKunstwerkenstructuresbi-rainbow#000000 Patrimoine artistiqueArtistiek erfgoedartworksbi-bank#0000aa RoadsRoadsroadsbi-fullscreen-exit#000000 SignalisationSignalisatiesignbi-signpost#000000

2. Module assets - Gestion des actifs

Le module assets gère tous les équipements et infrastructures de voirie, organisés par sous-domaine.

Classes abstraites de base

ModèleDescription --------------------- AbstractLocationLocalisation abstraite (code, nom, coordonnées) AbstractAssetModelModèle d'équipement (marque, catégorie) AbstractAssetÉquipement abstrait (statut, dates d'installation) AbstractGeoAssetÉquipement géolocalisé AssetCategoryCatégorie d'équipement

Feux de signalisation (Traffic Lights)

ModèleDescription --------------------- TrafficLightIntersectionCarrefour à feux TrafficLightPolePoteau de feu TrafficLightPoleModelModèle de poteau TrafficLightLanternLanterne TrafficLightLanternModelModèle de lanterne TrafficLightCableCâble TrafficLightCableModelModèle de câble TrafficLightControllerContrôleur TrafficLightControllerModelModèle de contrôleur TrafficLightDetectorDétecteur TrafficLightDetectorModelModèle de détecteur TrafficLightContractContrat lié à un carrefour TrafficLightIntersectionDocumentDocument associé

Éclairage public (Public Lighting)

ModèleDescription --------------------- PublicLightingStreetRue d'éclairage public PublicLightingPolePoteau d'éclairage PublicLightingPoleModelModèle de poteau PublicLightingLightFixtureLuminaire PublicLightingLightFixtureModelModèle de luminaire PublicLightingStreetDocumentDocument associé

Signalisation routière (Road Signs)

ModèleDescription --------------------- SignStreetRue pour la signalisation SignPolePoteau de signalisation SignPoleModelModèle de poteau SignPanelPanneau de signalisation SignPanelModelModèle de panneau SignPanelTypeType de panneau SignStreetDocumentDocument associé

Ouvrages d'art (Structures)

ModèleDescription --------------------- StructureOuvrage d'art (tunnel, pont, viaduc...) StructureLocationLocalisation dans l'ouvrage StructureGeoAssetÉquipement géolocalisé dans l'ouvrage StructureAssetModelModèle d'équipement StructureContractContrat lié à l'ouvrage StructureDocumentDocument associé

Nature / Espaces verts

ModèleDescription --------------------- NatureLocationZone naturelle NatureGreenSurfaceSurface végétale NatureTreeArbre NatureAssetModelModèle d'équipement nature NatureGreenSurfaceDocumentDocument associé

Centres de contrôle (Control Centers)

ModèleDescription --------------------- ControlCenterCentre de contrôle ControlCenterLocationLocalisation dans le centre de contrôle ControlCenterGeoAssetÉquipement géolocalisé ControlCenterAssetModelModèle d'équipement ControlCenterContractContrat lié au centre ControlCenterGeoAssetContractContrat lié à un équipement ControlCenterDocumentDocument du centre ControlCenterAssetDocumentDocument d'équipement

Patrimoine artistique (Artworks)

ModèleDescription --------------------- ArtworkStreetRue pour le patrimoine artistique ArtworkMonumentMonument (statue, sculpture, structure...) ArtworkFountainFontaine artistique ArtworkFountainDocumentDocument de fontaine ArtworkMonumentDocumentDocument de monument

ITS - Systèmes de transport intelligents (Intelligent Transport Systems)

ModèleDescription --------------------- ITSLocationLocalisation ITS ITSGeoAssetÉquipement ITS géolocalisé ITSAssetModelModèle d'équipement ITS ITSLocationDocumentDocument de localisation ITSLocationContractContrat lié à une localisation ITSGeoAssetContractContrat lié à un équipement

Chaussées, trottoirs et mobilier urbain (Roads)

ModèleDescription --------------------- RoadStreetRue RoadwayChaussée RoadwayModelModèle de chaussée RoadwayFunctionFonctions de la chaussée (piéton, vélo, transport) RoadSidewalkTrottoir RoadSidewalkModelModèle de trottoir RoadFurnitureMobilier urbain RoadFurnitureModelModèle de mobilier urbain RoadStreetDocumentDocument associé

3. Module interventions - Gestion des interventions

Ce module gère tout le cycle de vie des interventions de maintenance.

ModèleDescription --------------------- InterventionIntervention (corrective, préventive, améliorative) InterventionSequenceNumérotation automatique des interventions InterventionTimeLineHistorique des événements InterventionPlanificationTimeLinePlanification InterventionRealizationTimeLineRéalisation InterventionOccupationTemps de travail InterventionNoteNotes et commentaires InterventionDocumentDocuments associés InterventionAssetLien vers les équipements InterventionLocationLien vers les localisations InterventionLinkLiens entre interventions InterventionContractPostPostes de contrat utilisés InterventionPostPeriodQuantityQuantités validées par période SymptomSymptôme/problème signalé SymptomRecommendationRecommandation associée au symptôme ReflexSheetFiche réflexe SourceCategorySource de l'intervention

Opérations de maintenance préventive

ModèleDescription --------------------- OperationTemplateTemplate d'opérations OperationTemplateItemItem du template OperationOpération à réaliser OperationStatusSetEnsemble de statuts possibles OperationStatusStatut d'opération MeasurementDefinitionDéfinition de mesure

4. Module contracts - Gestion des contrats

ModèleDescription --------------------- CompanySociété/Organisme CompanyTeamÉquipe CompanyMemberMembre d'équipe ContractContrat de maintenance ContractPostPoste de contrat (bordereau de prix) ContractOrderCommande ContractOrderQuoteDevis ContractOrderQuoteItemLigne de devis ContractOrderDocumentDocument de commande ContractOrderProgressStateÉtat d'avancement ContractOrderProgressStateItemItem d'état d'avancement

5. Module projects - Gestion des projets

ModèleDescription --------------------- ProjectProjet ProjectSequenceNumérotation automatique ProjectPhasePhase de projet ProjectMemberMembre du projet ProjectInterventionIntervention liée au projet ProjectDocumentDocument du projet

6. Module observations - Observations terrain

ModèleDescription --------------------- ObservationObservation/signalement ObservationPhotoPhoto de l'observation ObservationCommentCommentaire

7. Module controls - Contrôles et rapports

ModèleDescription --------------------- ControlContrôle/rapport de chantier CategoryCatégorie de contrôle ControlCheckPoint de contrôle DocumentCheckVérification documentaire CheckListListe de contrôle CheckListControlCheckItem de checklist CheckListDocumentCheckDocument de checklist ControlReportRapport généré ControlReferencePlanPlan de référence RemarkRemarque RemarkImageImage de remarque RemarkTagTag de remarque ControlReportTemplateTemplate de rapport ControlQuantityQuantité dans une remarque

8. Module documents - Gestion documentaire avancée

ModèleDescription --------------------- DocumentTypeType de document DocumentTagTag de document DocumentFolderDossier ManagedDocumentDocument géré DocumentVersionVersion de document DocumentValidationValidation de document DocumentSharePartage de document DocumentFolderSharePartage de dossier DocumentAccessLinkLien d'accès DocumentFolderAccessLinkLien d'accès dossier DocumentAttachmentPièce jointe DocumentFolderAttachmentAttachement de dossier

9. Module stock - Gestion du stock

ModèleDescription --------------------- WarehouseEntrepôt WarehouseLocationEmplacement dans l'entrepôt CategoryCatégorie de produit ProductProduit StockQuantité en stock StockMovementMouvement de stock InventoryInventaire InventoryItemLigne d'inventaire SupplierFournisseur PurchaseOrderCommande d'achat PurchaseOrderItemLigne de commande StockAlertAlerte de stock PreparationOrderOrdre de préparation PreparationOrderItemLigne de préparation

---

Schéma des modèles et relations

Diagramme des relations principales

┌─────────────────────────────────────────────────────────────────────────────────────┐
│                                    THÉMATIQUES                                       │
│                                                                                       │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐              │
│  │   Feux de   │   │  Éclairage  │   │Signalisation│   │  Ouvrages   │              │
│  │signalisation│   │   public    │   │  routière   │   │   d'art     │              │
│  └──────┬──────┘   └──────┬──────┘   └──────┬──────┘   └──────┬──────┘              │
│         │                 │                 │                 │                      │
│         ▼                 ▼                 ▼                 ▼                      │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐              │
│  │Intersection │   │   Street    │   │   Street    │   │  Structure  │              │
│  │  (Location) │   │  (Location) │   │  (Location) │   │  (Location) │              │
│  └──────┬──────┘   └──────┬──────┘   └──────┬──────┘   └──────┬──────┘              │
│         │                 │                 │                 │                      │
│         ▼                 ▼                 ▼                 ▼                      │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐              │
│  │    Pôles    │   │    Pôles    │   │    Pôles    │   │   Assets    │              │
│  │  Lanternes  │   │  Luminaires │   │  Panneaux   │   │             │              │
│  │  Câbles     │   │             │   │             │   │             │              │
│  │ Contrôleurs │   │             │   │             │   │             │              │
│  └──────┬──────┘   └──────┬──────┘   └──────┬──────┘   └──────┬──────┘              │
└─────────┼─────────────────┼─────────────────┼─────────────────┼──────────────────────┘
          │                 │                 │                 │
          └────────────┬────┴─────────────────┴─────────────────┘
                       │
                       ▼
          ┌───────────────────────┐
          │     INTERVENTIONS     │
          │                       │
          │  - Correctives        │
          │  - Préventives        │
          │  - Amélioratives      │
          └───────────┬───────────┘
                      │
          ┌───────────┴───────────┐
          │                       │
          ▼                       ▼
┌─────────────────┐     ┌─────────────────┐
│    CONTRATS     │     │     PROJETS     │
│                 │     │                 │
│  - Commandes    │     │  - Phases       │
│  - Postes       │     │  - Membres      │
│  - Devis        │     │  - Documents    │
└────────┬────────┘     └─────────────────┘
         │
         ▼
┌─────────────────┐
│  OBSERVATIONS   │
│                 │
│  - Photos       │
│  - Commentaires │
└─────────────────┘

Relations détaillées par domaine

1. Relations Thematic (Thématiques)

Thematic
    │
    ├──► AssetCategory (1:N)
    │        │
    │        └──► Assets, Symptoms, etc.
    │
    ├──► Project (M:N via thematics)
    │
    ├──► Control (M:N via thematics)
    │
    ├──► DocumentFolder (M:N)
    │
    ├──► Intervention (1:N)
    │
    ├──► Observation (1:N)
    │
    ├──► Symptom (1:N)
    │
    └──► OperationTemplate (1:N)

2. Relations Company (Société)

Company
    │
    ├──► Contract (1:N) ───► ContractPost (1:N)
    │        │                    │
    │        │                    └──► InterventionContractPost
    │        │
    │        ├──► ContractOrder (1:N)
    │        │        │
    │        │        ├──► ContractOrderQuote
    │        │        │        │
    │        │        │        └──► ContractOrderQuoteItem (1:N)
    │        │        │
    │        │        ├──► ContractOrderDocument (1:N)
    │        │        │
    │        │        └──► ContractOrderProgressState (1:N)
    │        │
    │        └──► Intervention (1:N)
    │
    ├──► CompanyTeam (1:N)
    │        │
    │        └──► CompanyMember (1:N)
    │                 │
    │                 └──► Intervention (assigned_member)
    │                 │
    │                 └──► InterventionOccupation (1:N)
    │
    └──► Symptom (1:N - provider)

3. Relations Intervention

Intervention
    │
    ├──► InterventionTimeLine (1:N) - Historique des statuts
    │
    ├──► InterventionPlanificationTimeLine (1:N) - Planification
    │
    ├──► InterventionRealizationTimeLine (1:N) - Réalisation
    │
    ├──► InterventionOccupation (1:N) - Temps de travail
    │
    ├──► InterventionNote (1:N) - Notes
    │
    ├──► InterventionDocument (1:N) - Documents
    │
    ├──► InterventionContractPost (1:N) - Postes de contrat
    │        │
    │        └──► InterventionPostPeriodQuantity (1:N)
    │
    ├──► InterventionAsset (1:N) - GenericForeignKey vers assets
    │
    ├──► InterventionLocation (1:N) - GenericForeignKey vers locations
    │
    ├──► InterventionLink (M:N) - Liens entre interventions
    │
    ├──► Operation (1:N) - Opérations préventives
    │
    ├──► Observation (1:N) - Observations liées
    │
    └──► Control (1:N) - Contrôles liés

4. Relations Operations (Maintenance préventive)

OperationTemplate
    │
    ├──► OperationTemplateItem (1:N)
    │        │
    │        ├──► OperationStatusSet (N:1)
    │        │
    │        └──► MeasurementDefinition (N:1)
    │
    └──► Intervention.equipment_operation_templates (M:N)

Operation │ ├──► Intervention (N:1) │ ├──► OperationStatusSet (N:1) │ ├──► OperationStatus (N:1) │ ├──► MeasurementDefinition (N:1) │ └──► Asset (GenericForeignKey)

5. Relations Traffic Lights (Feux de signalisation)

TrafficLightIntersection
    │
    ├──► TrafficLightPole (1:N)
    │        │
    │        ├──► TrafficLightLantern (1:N)
    │        │
    │        └──► TrafficLightDetector (1:N)
    │
    ├──► TrafficLightCable (1:N)
    │
    ├──► TrafficLightController (1:N)
    │
    ├──► TrafficLightIntersectionDocument (1:N)
    │
    ├──► TrafficLightContract (1:N)
    │
    └──► Municipality (N:1)

6. Relations Project (Projets)

Project
    │
    ├──► ProjectPhase (1:N)
    │        │
    │        ├──► ProjectIntervention (1:N)
    │        │
    │        └──► Control (1:N)
    │
    ├──► ProjectMember (1:N) ───► User
    │
    ├──► ProjectDocument (1:N)
    │
    ├──► Thematic (M:N)
    │
    └──► ContractOrder (1:N via project)

7. Relations Control (Contrôles)

Control
    │
    ├──► ControlCheck (1:N)
    │
    ├──► DocumentCheck (1:N)
    │
    ├──► ControlReport (1:N)
    │
    ├──► ControlReferencePlan (1:N)
    │        │
    │        └──► Remark (1:N)
    │                 │
    │                 ├──► RemarkImage (1:N)
    │                 │
    │                 ├──► RemarkTag (1:N)
    │                 │
    │                 └──► ControlQuantity (1:N)
    │
    ├──► ControlReportTemplate (1:N)
    │
    ├──► Project (N:1)
    │
    ├──► ProjectPhase (N:1)
    │
    └──► Intervention (N:1)

8. Relations Documents

ManagedDocument
    │
    ├──► DocumentVersion (1:N)
    │        │
    │        └──► DocumentValidation (1:N)
    │
    ├──► DocumentType (M:N)
    │
    ├──► DocumentTag (M:N)
    │
    ├──► DocumentFolder (M:N)
    │
    ├──► DocumentShare (1:N) ───► User
    │
    ├──► DocumentAccessLink (1:N)
    │
    └──► DocumentAttachment (1:N) - GenericForeignKey

DocumentFolder │ ├──► DocumentFolderShare (1:N) ───► User │ ├──► DocumentFolderAccessLink (1:N) │ ├──► DocumentFolderAttachment (1:N) - GenericForeignKey │ ├──► Thematic (M:N) │ └──► parent_folders (M:N - self-referential)

9. Relations Stock

Warehouse
    │
    ├──► WarehouseLocation (1:N)
    │        │
    │        ├──► Stock (1:N)
    │        │
    │        ├──► StockMovement (N:1 source/destination)
    │        │
    │        └──► InventoryItem (N:1)
    │
    ├──► Inventory (1:N)
    │        │
    │        └──► InventoryItem (1:N)
    │
    ├──► PurchaseOrder (1:N)
    │        │
    │        └──► PurchaseOrderItem (1:N)
    │
    └──► StockAlert (1:N)

Product │ ├──► Category (N:1) │ ├──► Stock (1:N) │ ├──► StockMovement (1:N) │ ├──► PurchaseOrderItem (1:N) │ ├──► InventoryItem (1:N) │ ├──► StockAlert (1:N) │ └──► PreparationOrderItem (1:N)

---

Détail des modèles par module

Statuts d'intervention

STATUS_CHOICES = {
    'in_preparation': 'En préparation',      # Ordre: 1
    'to_be_approved': 'A approuver',          # Ordre: 2
    'to_be_planned': 'A planifier',           # Ordre: 5
    'to_be_processed': 'A traiter',           # Ordre: 11
    'in_progress': 'Démarré',                 # Ordre: 21
    'on_pause': 'En pause',                   # Ordre: 22
    'finished': 'Terminé',                    # Ordre: 25
    'processed': 'A valider',                 # Ordre: 31
    'to_be_corrected': 'A corriger',          # Ordre: 41
    'corrected': 'Corrigé',                   # Ordre: 45
    'validated': 'Validé',                    # Ordre: 51
    'invoiced': 'Facturé',                    # Ordre: 61
    'closed': 'Finalisé',                     # Ordre: 71
    'canceled': 'Annulé',                     # Ordre: 200
}

Types de maintenance

MAINTAIN_CHOICES = [
    ('corrective', 'Maintenance corrective'),
    ('preventive', 'Maintenance préventive'),
    ('ameliorative', 'Maintenance améliorative'),
]

Types d'opération

TYPE_CHOICES = [
    ('fixing', 'Dépannage'),
    ('repair', 'Réparation'),
    ('replace', 'Remplacement'),
    ('care', 'Entretien'),
    ('control', 'Contrôle'),
    ('inspection', 'Inspection'),
    ('build', 'Construction'),
]

Priorités

PRIORITY_CHOICES = {
    '1': 'Urgent',
    '2': 'Elevé',
    '3': 'Normal',
    '4': 'Bas',
}

---

Flux de données

Flux de création d'intervention

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ Observation │────►│   Symptom   │────►│ Intervention│
│   (terrain) │     │ (problème)  │     │  (création) │
└─────────────┘     └─────────────┘     └──────┬──────┘
                                               │
                    ┌──────────────────────────┼──────────────────────────┐
                    │                          │                          │
                    ▼                          ▼                          ▼
           ┌─────────────┐            ┌─────────────┐            ┌─────────────┐
           │   Contrat   │            │   Location  │            │   Company   │
           │  (liaison)  │            │   (lieu)    │            │ (assignation)│
           └─────────────┘            └─────────────┘            └─────────────┘

Flux de maintenance préventive

┌─────────────────┐
│OperationTemplate│
│   (templates)   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐     ┌─────────────────┐
│TemplateItems    │────►│   Intervention  │
│ (opérations)    │     │  (préventive)   │
└─────────────────┘     └────────┬────────┘
                                 │
                                 ▼
                        ┌─────────────────┐
                        │   Operations    │
                        │ (à effectuer)   │
                        └────────┬────────┘
                                 │
                    ┌────────────┼────────────┐
                    │            │            │
                    ▼            ▼            ▼
             ┌───────────┐ ┌───────────┐ ┌───────────┐
             │  Status   │ │  Mesure   │ │  Asset    │
             │(validation)│ │  (valeur) │ │  (lié)    │
             └───────────┘ └───────────┘ └───────────┘

Flux de gestion des contrats

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Company   │────►│   Contract  │────►│ ContractPost│
│ (entreprise)│     │  (marché)   │     │ (bordereau) │
└─────────────┘     └──────┬──────┘     └──────┬──────┘
                           │                    │
                           ▼                    │
                    ┌─────────────┐             │
                    │ContractOrder│             │
                    │ (commande)  │             │
                    └──────┬──────┘             │
                           │                    │
              ┌────────────┼────────────┐       │
              │            │            │       │
              ▼            ▼            ▼       │
       ┌───────────┐ ┌───────────┐ ┌───────────┐
       │   Quote   │ │ Documents │ │ Progress  │
       │  (devis)  │ │           │ │  State    │
       └───────────┘ └───────────┘ └───────────┘
                                          │
                                          ▼
                                   ┌─────────────┐
                                   │Intervention │
                                   │ContractPost │◄──────┘
                                   └─────────────┘

---

Diagrammes

Architecture globale

┌─────────────────────────────────────────────────────────────────────────────────────┐
│                                     LOKO                                            │
│                        Système de gestion des actifs de voirie                       │
├─────────────────────────────────────────────────────────────────────────────────────┤
│                                                                                       │
│  ┌───────────────────────────────────────────────────────────────────────────────┐  │
│  │                              COUCHE PRÉSENTATION                               │  │
│  │                                                                                 │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐           │  │
│  │  │    Web UI   │  │  Mobile UI  │  │   API REST  │  │   Reports   │           │  │
│  │  │  (Django)   │  │  (Django)   │  │   (Django)  │  │    (PDF)    │           │  │
│  │  └─────────────┘  └─────────────┘  └─────────────┘  └─────────────┘           │  │
│  └───────────────────────────────────────────────────────────────────────────────┘  │
│                                         │                                            │
│  ┌───────────────────────────────────────────────────────────────────────────────┐  │
│  │                               COUCHE MÉTIER                                    │  │
│  │                                                                                 │  │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│  │
│  │  │  Assets  │ │Interven- │ │ Contracts│ │ Projects │ │ Controls │ │  Stock   ││  │
│  │  │          │ │  tions   │ │          │ │          │ │          │ │          ││  │
│  │  └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘│  │
│  │                                                                                 │  │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐                                        │  │
│  │  │Observa-  │ │Documents │ │  Common  │                                        │  │
│  │  │  tions   │ │          │ │          │                                        │  │
│  │  └──────────┘ └──────────┘ └──────────┘                                        │  │
│  └───────────────────────────────────────────────────────────────────────────────┘  │
│                                         │                                            │
│  ┌───────────────────────────────────────────────────────────────────────────────┐  │
│  │                              COUCHE DONNÉES                                    │  │
│  │                                                                                 │  │
│  │  ┌─────────────────────────────────────────────────────────────────────────┐  │  │
│  │  │                     PostgreSQL + PostGIS                                 │  │  │
│  │  │                                                                          │  │  │
│  │  │   ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │  │  │
│  │  │   │  Users  │ │Thematics│ │ Assets  │ │Interven-│ │Contracts│          │  │  │
│  │  │   │         │ │         │ │ + Geo   │ │  tions  │ │         │          │  │  │
│  │  │   └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘          │  │  │
│  │  └─────────────────────────────────────────────────────────────────────────┘  │  │
│  └───────────────────────────────────────────────────────────────────────────────┘  │
│                                                                                       │
└─────────────────────────────────────────────────────────────────────────────────────┘

Hiérarchie des classes d'actifs

                            AbstractLocation
                                   │
           ┌───────────────────────┼───────────────────────┐
           │                       │                       │
           ▼                       ▼                       ▼
  TrafficLightIntersection  PublicLightingStreet    SignStreet
           │                       │                       │
           │                       │                       │
           ▼                       ▼                       ▼
      AbstractAsset          AbstractAsset           AbstractAsset
           │                       │                       │
           ├─► AbstractGeoAsset    ├─► AbstractGeoAsset    ├─► AbstractGeoAsset
           │        │              │        │              │        │
           │        ▼              │        ▼              │        ▼
           │  TrafficLightPole     │  PLPole/Fixture       │  SignPole/Panel
           │                       │                       │
           └─► TrafficLightLantern │                       │
           └─► TrafficLightCable   │                       │
           └─► TrafficLightController                      │
                                   │                       │
                            StructureLocation        NatureLocation
                                   │                       │
                                   ▼                       ▼
                            StructureGeoAsset      NatureTree/Surface

Cycle de vie d'une intervention

┌─────────────────┐
│  in_preparation │  ◄─── Création initiale
│   (En prép.)    │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  to_be_approved │  ◄─── Soumission pour approbation
│  (A approuver)  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  to_be_planned  │  ◄─── Approuvé, à planifier
│  (A planifier)  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ to_be_processed │  ◄─── Planifié, à traiter
│   (A traiter)   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐     ┌─────────────────┐
│   in_progress   │────►│    on_pause     │
│   (Démarré)     │◄────│   (En pause)    │
└────────┬────────┘     └─────────────────┘
         │
         ▼
┌─────────────────┐
│    finished     │  ◄─── Travaux terminés
│   (Terminé)     │
└────────┬────────┘
         │
         ▼
┌─────────────────┐     ┌─────────────────┐
│    processed    │────►│ to_be_corrected │
│  (A valider)    │◄────│  (A corriger)   │
└────────┬────────┘     └────────┬────────┘
         │                       │
         │              ┌────────▼────────┐
         │              │    corrected    │
         │              │   (Corrigé)     │
         │              └────────┬────────┘
         │                       │
         ▼◄──────────────────────┘
┌─────────────────┐
│    validated    │  ◄─── Validation finale
│    (Validé)     │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│    invoiced     │  ◄─── Facturation
│   (Facturé)     │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│     closed      │  ◄─── Clôture définitive
│   (Finalisé)    │
└─────────────────┘

│ ├───────────────────────────────────┐ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ │ canceled │ ◄─── Peut être │ (Tout statut │ │ (Annulé) │ depuis │ précédent) │ └─────────────────┘ └─────────────────┘

---

Notes techniques

Base de données

Authentification et permissions

Gestion des fichiers

API

---

Conclusion

Loko est une application Django complète et modulaire qui permet de gérer l'ensemble du cycle de vie des actifs de voirie. La structure en modules permet une maintenance facile et une évolution progressive des fonctionnalités.

Les principaux points forts de l'architecture sont :

1. Modularité : Chaque domaine métier est isolé dans son propre module Django 2. Extensibilité : Les classes abstraites permettent d'ajouter facilement de nouveaux types d'actifs 3. Traçabilité : Historique complet des interventions et des modifications 4. Géolocalisation : Support natif des données géospatiales avec PostGIS 5. Gestion documentaire : Système complet de versionnement et de partage de documents 6. Intégration : API REST pour l'intégration avec d'autres systèmes