859 lines
No EOL
55 KiB
HTML
859 lines
No EOL
55 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Documentation StreetUp</title>
|
|
<style>
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
line-height: 1.6;
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: 20px;
|
|
color: #333;
|
|
background-color: #f5f5f5;
|
|
}
|
|
.container {
|
|
background-color: white;
|
|
padding: 40px;
|
|
border-radius: 8px;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
|
}
|
|
h1 {
|
|
color: #2c3e50;
|
|
border-bottom: 3px solid #3498db;
|
|
padding-bottom: 10px;
|
|
margin-top: 30px;
|
|
}
|
|
h2 {
|
|
color: #34495e;
|
|
border-bottom: 2px solid #ecf0f1;
|
|
padding-bottom: 8px;
|
|
margin-top: 25px;
|
|
}
|
|
h3 {
|
|
color: #546e7a;
|
|
margin-top: 20px;
|
|
}
|
|
h4, h5, h6 {
|
|
color: #607d8b;
|
|
margin-top: 15px;
|
|
}
|
|
code {
|
|
background-color: #f4f4f4;
|
|
padding: 2px 6px;
|
|
border-radius: 3px;
|
|
font-family: "Courier New", Courier, monospace;
|
|
color: #e74c3c;
|
|
}
|
|
pre {
|
|
background-color: #2d2d2d;
|
|
color: #f8f8f2;
|
|
padding: 15px;
|
|
border-radius: 5px;
|
|
overflow-x: auto;
|
|
margin: 15px 0;
|
|
}
|
|
pre code {
|
|
background-color: transparent;
|
|
color: inherit;
|
|
padding: 0;
|
|
}
|
|
table {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
margin: 20px 0;
|
|
}
|
|
table tr {
|
|
border-bottom: 1px solid #ddd;
|
|
}
|
|
table td, table th {
|
|
padding: 12px;
|
|
text-align: left;
|
|
}
|
|
table tr:nth-child(even) {
|
|
background-color: #f9f9f9;
|
|
}
|
|
table tr:first-child {
|
|
background-color: #3498db;
|
|
color: white;
|
|
font-weight: bold;
|
|
}
|
|
ul {
|
|
margin: 10px 0;
|
|
padding-left: 30px;
|
|
}
|
|
li {
|
|
margin: 5px 0;
|
|
}
|
|
hr {
|
|
border: none;
|
|
border-top: 2px solid #ecf0f1;
|
|
margin: 30px 0;
|
|
}
|
|
a {
|
|
color: #3498db;
|
|
text-decoration: none;
|
|
}
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
strong {
|
|
color: #2c3e50;
|
|
}
|
|
.toc {
|
|
background-color: #ecf0f1;
|
|
padding: 20px;
|
|
border-radius: 5px;
|
|
margin: 20px 0;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<h1>Documentation de l'application StreetUp</h1></p><p><h2>Table des matières</h2></p><p>1. <a href="#vue-densemble">Vue d'ensemble</a>
|
|
2. <a href="#architecture-de-lapplication">Architecture de l'application</a>
|
|
3. <a href="#modules-django">Modules Django</a>
|
|
4. <a href="#schéma-des-modèles-et-relations">Schéma des modèles et relations</a>
|
|
5. <a href="#détail-des-modèles-par-module">Détail des modèles par module</a>
|
|
6. <a href="#flux-de-données">Flux de données</a>
|
|
7. <a href="#diagrammes">Diagrammes</a></p><p>---</p><p><h2>Vue d'ensemble</h2></p><p><strong>StreetUp</strong> 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 :</p><p><ul>
|
|
<li><strong>Feux de signalisation</strong> (Traffic Lights)</li>
|
|
<li><strong>Éclairage public</strong> (Public Lighting)</li>
|
|
<li><strong>Panneaux de signalisation</strong> (Road Signs)</li>
|
|
<li><strong>Ouvrages d'art</strong> (Structures - tunnels, ponts, viaducs)</li>
|
|
<li><strong>Espaces verts</strong> (Nature)</li>
|
|
<li><strong>Centres de contrôle</strong> (Control Centers)</li>
|
|
<li><strong>Patrimoine artistique</strong> (Artworks - monuments, fontaines)</li>
|
|
<li><strong>ITS - Systèmes de transport intelligents</strong> (Intelligent Transport Systems)</li>
|
|
<li><strong>Chaussées, trottoirs et mobilier urbain</strong> (Roads)</li>
|
|
</ul></p><p>L'application est construite avec <strong>Django</strong> et utilise <strong>PostGIS</strong> pour la gestion des données géospatiales.</p><p>---</p><p><h2>Architecture de l'application</h2></p><p><pre><code class="">streetup/
|
|
├── streetup/ # 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
|
|
</code></pre></p><p>---</p><p><h2>Modules Django</h2></p><p><h3>1. Module <code>common</code> - Données communes</h3></p><p>Le module <code>common</code> contient les modèles partagés par l'ensemble de l'application.</p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Thematic</code></td><td>Thématiques (feux, éclairage, signalisation, etc.)</td></tr>
|
|
<tr><td><code>Role</code></td><td>Rôles utilisateurs (manager, technicien, admin)</td></tr>
|
|
<tr><td><code>UserConfig</code></td><td>Configuration utilisateur et permissions</td></tr>
|
|
<tr><td><code>UserThematics</code></td><td>Accès utilisateur par thématique</td></tr>
|
|
<tr><td><code>UserContractAccess</code></td><td>Accès utilisateur par contrat</td></tr>
|
|
<tr><td><code>Document</code></td><td>Classe abstraite pour les documents</td></tr>
|
|
<tr><td><code>Municipality</code></td><td>Communes</td></tr>
|
|
<tr><td><code>AdrStreet</code></td><td>Noms de rues</td></tr>
|
|
<tr><td><code>AdrPoint</code></td><td>Points d'adresse</td></tr></p><p><h4>Liste des thématiques</h4></p><p><tr><td>Nom (FR)</td><td>Nom (NL)</td><td>Code</td><td>Icône Bootstrap</td><td>Couleur</td></tr>
|
|
<tr><td>----------</td><td>----------</td><td>------</td><td>-----------------</td><td>---------</td></tr>
|
|
<tr><td>Centres de contrôles</td><td>Control centers</td><td><code>controlcenters</code></td><td>bi-building-gear</td><td>#000000</td></tr>
|
|
<tr><td>Eclairage public</td><td>Openbare verlichting</td><td><code>publiclighting</code></td><td>bi-lightbulb</td><td>#000000</td></tr>
|
|
<tr><td>Feux tricolores</td><td>Verkeerslichten</td><td><code>trafficlights</code></td><td>bi-stoplights</td><td>#000000</td></tr>
|
|
<tr><td>ITS</td><td>ITS</td><td><code>its</code></td><td>bi-lightning</td><td>#000000</td></tr>
|
|
<tr><td>Nature</td><td>Natuur</td><td><code>nature</code></td><td>bi-suit-club</td><td>#00ff00</td></tr>
|
|
<tr><td>Ouvrages d'art</td><td>Kunstwerken</td><td><code>structures</code></td><td>bi-rainbow</td><td>#000000</td></tr>
|
|
<tr><td>Patrimoine artistique</td><td>Artistiek erfgoed</td><td><code>artworks</code></td><td>bi-bank</td><td>#0000aa</td></tr>
|
|
<tr><td>Roads</td><td>Roads</td><td><code>roads</code></td><td>bi-fullscreen-exit</td><td>#000000</td></tr>
|
|
<tr><td>Signalisation</td><td>Signalisatie</td><td><code>sign</code></td><td>bi-signpost</td><td>#000000</td></tr></p><p><h3>2. Module <code>assets</code> - Gestion des actifs</h3></p><p>Le module <code>assets</code> gère tous les équipements et infrastructures de voirie, organisés par sous-domaine.</p><p><h4>Classes abstraites de base</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>AbstractLocation</code></td><td>Localisation abstraite (code, nom, coordonnées)</td></tr>
|
|
<tr><td><code>AbstractAssetModel</code></td><td>Modèle d'équipement (marque, catégorie)</td></tr>
|
|
<tr><td><code>AbstractAsset</code></td><td>Équipement abstrait (statut, dates d'installation)</td></tr>
|
|
<tr><td><code>AbstractGeoAsset</code></td><td>Équipement géolocalisé</td></tr>
|
|
<tr><td><code>AssetCategory</code></td><td>Catégorie d'équipement</td></tr></p><p><h4>Feux de signalisation (Traffic Lights)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>TrafficLightIntersection</code></td><td>Carrefour à feux</td></tr>
|
|
<tr><td><code>TrafficLightPole</code></td><td>Poteau de feu</td></tr>
|
|
<tr><td><code>TrafficLightPoleModel</code></td><td>Modèle de poteau</td></tr>
|
|
<tr><td><code>TrafficLightLantern</code></td><td>Lanterne</td></tr>
|
|
<tr><td><code>TrafficLightLanternModel</code></td><td>Modèle de lanterne</td></tr>
|
|
<tr><td><code>TrafficLightCable</code></td><td>Câble</td></tr>
|
|
<tr><td><code>TrafficLightCableModel</code></td><td>Modèle de câble</td></tr>
|
|
<tr><td><code>TrafficLightController</code></td><td>Contrôleur</td></tr>
|
|
<tr><td><code>TrafficLightControllerModel</code></td><td>Modèle de contrôleur</td></tr>
|
|
<tr><td><code>TrafficLightDetector</code></td><td>Détecteur</td></tr>
|
|
<tr><td><code>TrafficLightDetectorModel</code></td><td>Modèle de détecteur</td></tr>
|
|
<tr><td><code>TrafficLightContract</code></td><td>Contrat lié à un carrefour</td></tr>
|
|
<tr><td><code>TrafficLightIntersectionDocument</code></td><td>Document associé</td></tr></p><p><h4>Éclairage public (Public Lighting)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>PublicLightingStreet</code></td><td>Rue d'éclairage public</td></tr>
|
|
<tr><td><code>PublicLightingPole</code></td><td>Poteau d'éclairage</td></tr>
|
|
<tr><td><code>PublicLightingPoleModel</code></td><td>Modèle de poteau</td></tr>
|
|
<tr><td><code>PublicLightingLightFixture</code></td><td>Luminaire</td></tr>
|
|
<tr><td><code>PublicLightingLightFixtureModel</code></td><td>Modèle de luminaire</td></tr>
|
|
<tr><td><code>PublicLightingStreetDocument</code></td><td>Document associé</td></tr></p><p><h4>Signalisation routière (Road Signs)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>SignStreet</code></td><td>Rue pour la signalisation</td></tr>
|
|
<tr><td><code>SignPole</code></td><td>Poteau de signalisation</td></tr>
|
|
<tr><td><code>SignPoleModel</code></td><td>Modèle de poteau</td></tr>
|
|
<tr><td><code>SignPanel</code></td><td>Panneau de signalisation</td></tr>
|
|
<tr><td><code>SignPanelModel</code></td><td>Modèle de panneau</td></tr>
|
|
<tr><td><code>SignPanelType</code></td><td>Type de panneau</td></tr>
|
|
<tr><td><code>SignStreetDocument</code></td><td>Document associé</td></tr></p><p><h4>Ouvrages d'art (Structures)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Structure</code></td><td>Ouvrage d'art (tunnel, pont, viaduc...)</td></tr>
|
|
<tr><td><code>StructureLocation</code></td><td>Localisation dans l'ouvrage</td></tr>
|
|
<tr><td><code>StructureGeoAsset</code></td><td>Équipement géolocalisé dans l'ouvrage</td></tr>
|
|
<tr><td><code>StructureAssetModel</code></td><td>Modèle d'équipement</td></tr>
|
|
<tr><td><code>StructureContract</code></td><td>Contrat lié à l'ouvrage</td></tr>
|
|
<tr><td><code>StructureDocument</code></td><td>Document associé</td></tr></p><p><h4>Nature / Espaces verts</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>NatureLocation</code></td><td>Zone naturelle</td></tr>
|
|
<tr><td><code>NatureGreenSurface</code></td><td>Surface végétale</td></tr>
|
|
<tr><td><code>NatureTree</code></td><td>Arbre</td></tr>
|
|
<tr><td><code>NatureAssetModel</code></td><td>Modèle d'équipement nature</td></tr>
|
|
<tr><td><code>NatureGreenSurfaceDocument</code></td><td>Document associé</td></tr></p><p><h4>Centres de contrôle (Control Centers)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>ControlCenter</code></td><td>Centre de contrôle</td></tr>
|
|
<tr><td><code>ControlCenterLocation</code></td><td>Localisation dans le centre de contrôle</td></tr>
|
|
<tr><td><code>ControlCenterGeoAsset</code></td><td>Équipement géolocalisé</td></tr>
|
|
<tr><td><code>ControlCenterAssetModel</code></td><td>Modèle d'équipement</td></tr>
|
|
<tr><td><code>ControlCenterContract</code></td><td>Contrat lié au centre</td></tr>
|
|
<tr><td><code>ControlCenterGeoAssetContract</code></td><td>Contrat lié à un équipement</td></tr>
|
|
<tr><td><code>ControlCenterDocument</code></td><td>Document du centre</td></tr>
|
|
<tr><td><code>ControlCenterAssetDocument</code></td><td>Document d'équipement</td></tr></p><p><h4>Patrimoine artistique (Artworks)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>ArtworkStreet</code></td><td>Rue pour le patrimoine artistique</td></tr>
|
|
<tr><td><code>ArtworkMonument</code></td><td>Monument (statue, sculpture, structure...)</td></tr>
|
|
<tr><td><code>ArtworkFountain</code></td><td>Fontaine artistique</td></tr>
|
|
<tr><td><code>ArtworkFountainDocument</code></td><td>Document de fontaine</td></tr>
|
|
<tr><td><code>ArtworkMonumentDocument</code></td><td>Document de monument</td></tr></p><p><h4>ITS - Systèmes de transport intelligents (Intelligent Transport Systems)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>ITSLocation</code></td><td>Localisation ITS</td></tr>
|
|
<tr><td><code>ITSGeoAsset</code></td><td>Équipement ITS géolocalisé</td></tr>
|
|
<tr><td><code>ITSAssetModel</code></td><td>Modèle d'équipement ITS</td></tr>
|
|
<tr><td><code>ITSLocationDocument</code></td><td>Document de localisation</td></tr>
|
|
<tr><td><code>ITSLocationContract</code></td><td>Contrat lié à une localisation</td></tr>
|
|
<tr><td><code>ITSGeoAssetContract</code></td><td>Contrat lié à un équipement</td></tr></p><p><h4>Chaussées, trottoirs et mobilier urbain (Roads)</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>RoadStreet</code></td><td>Rue</td></tr>
|
|
<tr><td><code>Roadway</code></td><td>Chaussée</td></tr>
|
|
<tr><td><code>RoadwayModel</code></td><td>Modèle de chaussée</td></tr>
|
|
<tr><td><code>RoadwayFunction</code></td><td>Fonctions de la chaussée (piéton, vélo, transport)</td></tr>
|
|
<tr><td><code>RoadSidewalk</code></td><td>Trottoir</td></tr>
|
|
<tr><td><code>RoadSidewalkModel</code></td><td>Modèle de trottoir</td></tr>
|
|
<tr><td><code>RoadFurniture</code></td><td>Mobilier urbain</td></tr>
|
|
<tr><td><code>RoadFurnitureModel</code></td><td>Modèle de mobilier urbain</td></tr>
|
|
<tr><td><code>RoadStreetDocument</code></td><td>Document associé</td></tr></p><p><h3>3. Module <code>interventions</code> - Gestion des interventions</h3></p><p>Ce module gère tout le cycle de vie des interventions de maintenance.</p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Intervention</code></td><td>Intervention (corrective, préventive, améliorative)</td></tr>
|
|
<tr><td><code>InterventionSequence</code></td><td>Numérotation automatique des interventions</td></tr>
|
|
<tr><td><code>InterventionTimeLine</code></td><td>Historique des événements</td></tr>
|
|
<tr><td><code>InterventionPlanificationTimeLine</code></td><td>Planification</td></tr>
|
|
<tr><td><code>InterventionRealizationTimeLine</code></td><td>Réalisation</td></tr>
|
|
<tr><td><code>InterventionOccupation</code></td><td>Temps de travail</td></tr>
|
|
<tr><td><code>InterventionNote</code></td><td>Notes et commentaires</td></tr>
|
|
<tr><td><code>InterventionDocument</code></td><td>Documents associés</td></tr>
|
|
<tr><td><code>InterventionAsset</code></td><td>Lien vers les équipements</td></tr>
|
|
<tr><td><code>InterventionLocation</code></td><td>Lien vers les localisations</td></tr>
|
|
<tr><td><code>InterventionLink</code></td><td>Liens entre interventions</td></tr>
|
|
<tr><td><code>InterventionContractPost</code></td><td>Postes de contrat utilisés</td></tr>
|
|
<tr><td><code>InterventionPostPeriodQuantity</code></td><td>Quantités validées par période</td></tr>
|
|
<tr><td><code>Symptom</code></td><td>Symptôme/problème signalé</td></tr>
|
|
<tr><td><code>SymptomRecommendation</code></td><td>Recommandation associée au symptôme</td></tr>
|
|
<tr><td><code>ReflexSheet</code></td><td>Fiche réflexe</td></tr>
|
|
<tr><td><code>SourceCategory</code></td><td>Source de l'intervention</td></tr></p><p><h4>Opérations de maintenance préventive</h4></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>OperationTemplate</code></td><td>Template d'opérations</td></tr>
|
|
<tr><td><code>OperationTemplateItem</code></td><td>Item du template</td></tr>
|
|
<tr><td><code>Operation</code></td><td>Opération à réaliser</td></tr>
|
|
<tr><td><code>OperationStatusSet</code></td><td>Ensemble de statuts possibles</td></tr>
|
|
<tr><td><code>OperationStatus</code></td><td>Statut d'opération</td></tr>
|
|
<tr><td><code>MeasurementDefinition</code></td><td>Définition de mesure</td></tr></p><p><h3>4. Module <code>contracts</code> - Gestion des contrats</h3></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Company</code></td><td>Société/Organisme</td></tr>
|
|
<tr><td><code>CompanyTeam</code></td><td>Équipe</td></tr>
|
|
<tr><td><code>CompanyMember</code></td><td>Membre d'équipe</td></tr>
|
|
<tr><td><code>Contract</code></td><td>Contrat de maintenance</td></tr>
|
|
<tr><td><code>ContractPost</code></td><td>Poste de contrat (bordereau de prix)</td></tr>
|
|
<tr><td><code>ContractOrder</code></td><td>Commande</td></tr>
|
|
<tr><td><code>ContractOrderQuote</code></td><td>Devis</td></tr>
|
|
<tr><td><code>ContractOrderQuoteItem</code></td><td>Ligne de devis</td></tr>
|
|
<tr><td><code>ContractOrderDocument</code></td><td>Document de commande</td></tr>
|
|
<tr><td><code>ContractOrderProgressState</code></td><td>État d'avancement</td></tr>
|
|
<tr><td><code>ContractOrderProgressStateItem</code></td><td>Item d'état d'avancement</td></tr></p><p><h3>5. Module <code>projects</code> - Gestion des projets</h3></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Project</code></td><td>Projet</td></tr>
|
|
<tr><td><code>ProjectSequence</code></td><td>Numérotation automatique</td></tr>
|
|
<tr><td><code>ProjectPhase</code></td><td>Phase de projet</td></tr>
|
|
<tr><td><code>ProjectMember</code></td><td>Membre du projet</td></tr>
|
|
<tr><td><code>ProjectIntervention</code></td><td>Intervention liée au projet</td></tr>
|
|
<tr><td><code>ProjectDocument</code></td><td>Document du projet</td></tr></p><p><h3>6. Module <code>observations</code> - Observations terrain</h3></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Observation</code></td><td>Observation/signalement</td></tr>
|
|
<tr><td><code>ObservationPhoto</code></td><td>Photo de l'observation</td></tr>
|
|
<tr><td><code>ObservationComment</code></td><td>Commentaire</td></tr></p><p><h3>7. Module <code>controls</code> - Contrôles et rapports</h3></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Control</code></td><td>Contrôle/rapport de chantier</td></tr>
|
|
<tr><td><code>Category</code></td><td>Catégorie de contrôle</td></tr>
|
|
<tr><td><code>ControlCheck</code></td><td>Point de contrôle</td></tr>
|
|
<tr><td><code>DocumentCheck</code></td><td>Vérification documentaire</td></tr>
|
|
<tr><td><code>CheckList</code></td><td>Liste de contrôle</td></tr>
|
|
<tr><td><code>CheckListControlCheck</code></td><td>Item de checklist</td></tr>
|
|
<tr><td><code>CheckListDocumentCheck</code></td><td>Document de checklist</td></tr>
|
|
<tr><td><code>ControlReport</code></td><td>Rapport généré</td></tr>
|
|
<tr><td><code>ControlReferencePlan</code></td><td>Plan de référence</td></tr>
|
|
<tr><td><code>Remark</code></td><td>Remarque</td></tr>
|
|
<tr><td><code>RemarkImage</code></td><td>Image de remarque</td></tr>
|
|
<tr><td><code>RemarkTag</code></td><td>Tag de remarque</td></tr>
|
|
<tr><td><code>ControlReportTemplate</code></td><td>Template de rapport</td></tr>
|
|
<tr><td><code>ControlQuantity</code></td><td>Quantité dans une remarque</td></tr></p><p><h3>8. Module <code>documents</code> - Gestion documentaire avancée</h3></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>DocumentType</code></td><td>Type de document</td></tr>
|
|
<tr><td><code>DocumentTag</code></td><td>Tag de document</td></tr>
|
|
<tr><td><code>DocumentFolder</code></td><td>Dossier</td></tr>
|
|
<tr><td><code>ManagedDocument</code></td><td>Document géré</td></tr>
|
|
<tr><td><code>DocumentVersion</code></td><td>Version de document</td></tr>
|
|
<tr><td><code>DocumentValidation</code></td><td>Validation de document</td></tr>
|
|
<tr><td><code>DocumentShare</code></td><td>Partage de document</td></tr>
|
|
<tr><td><code>DocumentFolderShare</code></td><td>Partage de dossier</td></tr>
|
|
<tr><td><code>DocumentAccessLink</code></td><td>Lien d'accès</td></tr>
|
|
<tr><td><code>DocumentFolderAccessLink</code></td><td>Lien d'accès dossier</td></tr>
|
|
<tr><td><code>DocumentAttachment</code></td><td>Pièce jointe</td></tr>
|
|
<tr><td><code>DocumentFolderAttachment</code></td><td>Attachement de dossier</td></tr></p><p><h3>9. Module <code>stock</code> - Gestion du stock</h3></p><p><tr><td>Modèle</td><td>Description</td></tr>
|
|
<tr><td>--------</td><td>-------------</td></tr>
|
|
<tr><td><code>Warehouse</code></td><td>Entrepôt</td></tr>
|
|
<tr><td><code>WarehouseLocation</code></td><td>Emplacement dans l'entrepôt</td></tr>
|
|
<tr><td><code>Category</code></td><td>Catégorie de produit</td></tr>
|
|
<tr><td><code>Product</code></td><td>Produit</td></tr>
|
|
<tr><td><code>Stock</code></td><td>Quantité en stock</td></tr>
|
|
<tr><td><code>StockMovement</code></td><td>Mouvement de stock</td></tr>
|
|
<tr><td><code>Inventory</code></td><td>Inventaire</td></tr>
|
|
<tr><td><code>InventoryItem</code></td><td>Ligne d'inventaire</td></tr>
|
|
<tr><td><code>Supplier</code></td><td>Fournisseur</td></tr>
|
|
<tr><td><code>PurchaseOrder</code></td><td>Commande d'achat</td></tr>
|
|
<tr><td><code>PurchaseOrderItem</code></td><td>Ligne de commande</td></tr>
|
|
<tr><td><code>StockAlert</code></td><td>Alerte de stock</td></tr>
|
|
<tr><td><code>PreparationOrder</code></td><td>Ordre de préparation</td></tr>
|
|
<tr><td><code>PreparationOrderItem</code></td><td>Ligne de préparation</td></tr></p><p>---</p><p><h2>Schéma des modèles et relations</h2></p><p><h3>Diagramme des relations principales</h3></p><p><pre><code class="">┌─────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ 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 │
|
|
└─────────────────┘
|
|
</code></pre></p><p><h3>Relations détaillées par domaine</h3></p><p><h4>1. Relations Thematic (Thématiques)</h4></p><p><pre><code class="">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)
|
|
</code></pre></p><p><h4>2. Relations Company (Société)</h4></p><p><pre><code class="">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)
|
|
</code></pre></p><p><h4>3. Relations Intervention</h4></p><p><pre><code class="">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
|
|
</code></pre></p><p><h4>4. Relations Operations (Maintenance préventive)</h4></p><p><pre><code class="">OperationTemplate
|
|
│
|
|
├──► OperationTemplateItem (1:N)
|
|
│ │
|
|
│ ├──► OperationStatusSet (N:1)
|
|
│ │
|
|
│ └──► MeasurementDefinition (N:1)
|
|
│
|
|
└──► Intervention.equipment_operation_templates (M:N)</p><p>Operation
|
|
│
|
|
├──► Intervention (N:1)
|
|
│
|
|
├──► OperationStatusSet (N:1)
|
|
│
|
|
├──► OperationStatus (N:1)
|
|
│
|
|
├──► MeasurementDefinition (N:1)
|
|
│
|
|
└──► Asset (GenericForeignKey)
|
|
</code></pre></p><p><h4>5. Relations Traffic Lights (Feux de signalisation)</h4></p><p><pre><code class="">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)
|
|
</code></pre></p><p><h4>6. Relations Project (Projets)</h4></p><p><pre><code class="">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)
|
|
</code></pre></p><p><h4>7. Relations Control (Contrôles)</h4></p><p><pre><code class="">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)
|
|
</code></pre></p><p><h4>8. Relations Documents</h4></p><p><pre><code class="">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</p><p>DocumentFolder
|
|
│
|
|
├──► DocumentFolderShare (1:N) ───► User
|
|
│
|
|
├──► DocumentFolderAccessLink (1:N)
|
|
│
|
|
├──► DocumentFolderAttachment (1:N) - GenericForeignKey
|
|
│
|
|
├──► Thematic (M:N)
|
|
│
|
|
└──► parent_folders (M:N - self-referential)
|
|
</code></pre></p><p><h4>9. Relations Stock</h4></p><p><pre><code class="">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)</p><p>Product
|
|
│
|
|
├──► Category (N:1)
|
|
│
|
|
├──► Stock (1:N)
|
|
│
|
|
├──► StockMovement (1:N)
|
|
│
|
|
├──► PurchaseOrderItem (1:N)
|
|
│
|
|
├──► InventoryItem (1:N)
|
|
│
|
|
├──► StockAlert (1:N)
|
|
│
|
|
└──► PreparationOrderItem (1:N)
|
|
</code></pre></p><p>---</p><p><h2>Détail des modèles par module</h2></p><p><h3>Statuts d'intervention</h3></p><p><pre><code class="python">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
|
|
}
|
|
</code></pre></p><p><h3>Types de maintenance</h3></p><p><pre><code class="python">MAINTAIN_CHOICES = [
|
|
('corrective', 'Maintenance corrective'),
|
|
('preventive', 'Maintenance préventive'),
|
|
('ameliorative', 'Maintenance améliorative'),
|
|
]
|
|
</code></pre></p><p><h3>Types d'opération</h3></p><p><pre><code class="python">TYPE_CHOICES = [
|
|
('fixing', 'Dépannage'),
|
|
('repair', 'Réparation'),
|
|
('replace', 'Remplacement'),
|
|
('care', 'Entretien'),
|
|
('control', 'Contrôle'),
|
|
('inspection', 'Inspection'),
|
|
('build', 'Construction'),
|
|
]
|
|
</code></pre></p><p><h3>Priorités</h3></p><p><pre><code class="python">PRIORITY_CHOICES = {
|
|
'1': 'Urgent',
|
|
'2': 'Elevé',
|
|
'3': 'Normal',
|
|
'4': 'Bas',
|
|
}
|
|
</code></pre></p><p>---</p><p><h2>Flux de données</h2></p><p><h3>Flux de création d'intervention</h3></p><p><pre><code class="">┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
│ Observation │────►│ Symptom │────►│ Intervention│
|
|
│ (terrain) │ │ (problème) │ │ (création) │
|
|
└─────────────┘ └─────────────┘ └──────┬──────┘
|
|
│
|
|
┌──────────────────────────┼──────────────────────────┐
|
|
│ │ │
|
|
▼ ▼ ▼
|
|
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
│ Contrat │ │ Location │ │ Company │
|
|
│ (liaison) │ │ (lieu) │ │ (assignation)│
|
|
└─────────────┘ └─────────────┘ └─────────────┘
|
|
</code></pre></p><p><h3>Flux de maintenance préventive</h3></p><p><pre><code class="">┌─────────────────┐
|
|
│OperationTemplate│
|
|
│ (templates) │
|
|
└────────┬────────┘
|
|
│
|
|
▼
|
|
┌─────────────────┐ ┌─────────────────┐
|
|
│TemplateItems │────►│ Intervention │
|
|
│ (opérations) │ │ (préventive) │
|
|
└─────────────────┘ └────────┬────────┘
|
|
│
|
|
▼
|
|
┌─────────────────┐
|
|
│ Operations │
|
|
│ (à effectuer) │
|
|
└────────┬────────┘
|
|
│
|
|
┌────────────┼────────────┐
|
|
│ │ │
|
|
▼ ▼ ▼
|
|
┌───────────┐ ┌───────────┐ ┌───────────┐
|
|
│ Status │ │ Mesure │ │ Asset │
|
|
│(validation)│ │ (valeur) │ │ (lié) │
|
|
└───────────┘ └───────────┘ └───────────┘
|
|
</code></pre></p><p><h3>Flux de gestion des contrats</h3></p><p><pre><code class="">┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
│ Company │────►│ Contract │────►│ ContractPost│
|
|
│ (entreprise)│ │ (marché) │ │ (bordereau) │
|
|
└─────────────┘ └──────┬──────┘ └──────┬──────┘
|
|
│ │
|
|
▼ │
|
|
┌─────────────┐ │
|
|
│ContractOrder│ │
|
|
│ (commande) │ │
|
|
└──────┬──────┘ │
|
|
│ │
|
|
┌────────────┼────────────┐ │
|
|
│ │ │ │
|
|
▼ ▼ ▼ │
|
|
┌───────────┐ ┌───────────┐ ┌───────────┐
|
|
│ Quote │ │ Documents │ │ Progress │
|
|
│ (devis) │ │ │ │ State │
|
|
└───────────┘ └───────────┘ └───────────┘
|
|
│
|
|
▼
|
|
┌─────────────┐
|
|
│Intervention │
|
|
│ContractPost │◄──────┘
|
|
└─────────────┘
|
|
</code></pre></p><p>---</p><p><h2>Diagrammes</h2></p><p><h3>Architecture globale</h3></p><p><pre><code class="">┌─────────────────────────────────────────────────────────────────────────────────────┐
|
|
│ STREETUP │
|
|
│ 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 │ │ │ │ │ │
|
|
│ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │
|
|
│ │ └─────────────────────────────────────────────────────────────────────────┘ │ │
|
|
│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────────────────────────┘
|
|
</code></pre></p><p><h3>Hiérarchie des classes d'actifs</h3></p><p><pre><code class=""> AbstractLocation
|
|
│
|
|
┌───────────────────────┼───────────────────────┐
|
|
│ │ │
|
|
▼ ▼ ▼
|
|
TrafficLightIntersection PublicLightingStreet SignStreet
|
|
│ │ │
|
|
│ │ │
|
|
▼ ▼ ▼
|
|
AbstractAsset AbstractAsset AbstractAsset
|
|
│ │ │
|
|
├─► AbstractGeoAsset ├─► AbstractGeoAsset ├─► AbstractGeoAsset
|
|
│ │ │ │ │ │
|
|
│ ▼ │ ▼ │ ▼
|
|
│ TrafficLightPole │ PLPole/Fixture │ SignPole/Panel
|
|
│ │ │
|
|
└─► TrafficLightLantern │ │
|
|
└─► TrafficLightCable │ │
|
|
└─► TrafficLightController │
|
|
│ │
|
|
StructureLocation NatureLocation
|
|
│ │
|
|
▼ ▼
|
|
StructureGeoAsset NatureTree/Surface
|
|
</code></pre></p><p><h3>Cycle de vie d'une intervention</h3></p><p><pre><code class="">┌─────────────────┐
|
|
│ 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é) │
|
|
└─────────────────┘</p><p> │
|
|
├───────────────────────────────────┐
|
|
▼ ▼
|
|
┌─────────────────┐ ┌─────────────────┐
|
|
│ canceled │ ◄─── Peut être │ (Tout statut │
|
|
│ (Annulé) │ depuis │ précédent) │
|
|
└─────────────────┘ └─────────────────┘
|
|
</code></pre></p><p>---</p><p><h2>Notes techniques</h2></p><p><h3>Base de données</h3></p><p><ul>
|
|
<li><strong>PostgreSQL</strong> avec extension <strong>PostGIS</strong> pour les données géospatiales</li>
|
|
<li>Système de coordonnées: <strong>SRID 3812</strong> (Belgian Lambert 2008)</li>
|
|
<li>Support des géométries: Point, LineString, Polygon, MultiPolygon</li>
|
|
</ul></p><p><h3>Authentification et permissions</h3></p><p><ul>
|
|
<li>Système de rôles via <code>common.Role</code></li>
|
|
<li>Configuration utilisateur via <code>common.UserConfig</code></li>
|
|
<li>Accès par thématique via <code>UserThematics</code></li>
|
|
<li>Accès par contrat via <code>UserContractAccess</code></li>
|
|
</ul></p><p><h3>Gestion des fichiers</h3></p><p><ul>
|
|
<li>Documents stockés avec stockage privé (<code>PrivateMediaStorage</code>)</li>
|
|
<li>Génération automatique de vignettes</li>
|
|
<li>Support des PDFs et images</li>
|
|
</ul></p><p><h3>API</h3></p><p><ul>
|
|
<li>Module <code>api/</code> pour les endpoints REST</li>
|
|
<li>Support de l'interface mobile</li>
|
|
</ul></p><p>---</p><p><h2>Conclusion</h2></p><p>StreetUp 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.</p><p>Les principaux points forts de l'architecture sont :</p><p>1. <strong>Modularité</strong> : Chaque domaine métier est isolé dans son propre module Django
|
|
2. <strong>Extensibilité</strong> : Les classes abstraites permettent d'ajouter facilement de nouveaux types d'actifs
|
|
3. <strong>Traçabilité</strong> : Historique complet des interventions et des modifications
|
|
4. <strong>Géolocalisation</strong> : Support natif des données géospatiales avec PostGIS
|
|
5. <strong>Gestion documentaire</strong> : Système complet de versionnement et de partage de documents
|
|
6. <strong>Intégration</strong> : API REST pour l'intégration avec d'autres systèmes
|
|
|
|
</div>
|
|
</body>
|
|
</html> |