DQE Chargeur4.0.0
changelog

DQE Chargeur

Plugin QGIS pour la generation automatisee de Devis Quantitatifs Estimatifs.
Deploiement fibre optique pour un réseau FTTH régional.

Quatre modules, un point d'entree. Le plugin interroge PostgreSQL, construit des couches QGIS georeferencees en EPSG:2154, produit les fichiers Excel depuis des templates metier, et archive les resultats en JSONB.

Prerequis — QGIS 3.28+, PostgreSQL avec schemas ftth gc_exe dqe, packages Python psycopg2 pandas openpyxl.

Pipeline

Saisie SRO + Type DQEWorker QThread PostgreSQL ftth Excel .xlsx QGIS EPSG:2154 JSON dqejson

Architecture

Cinq couches. Dependances vers le bas. Chaque module UI lance son propre QThread via BaseDQETab. Services partages et stateless.

QGIS Runtime — iface · QgsProject · QThread · PyQt5 PRO TP DP EXE TE DE TT DT TB DB PGC GC RECOVER Archives database_operations psycopg2 pool · sql layer_manager QgsVectorLayer excel_manager openpyxl · 3 templates Fichiers Excel Couches QGIS Validation QA ftth dqe2 dqe_exe fddcpi2 gc_exe gestionnaire redev dqe.dqejson JSONB archive Tables metier t_cheminement ...
Connexion DB via SimpleConnectionPool. Acces par properties publiques is_connected et config. Noms dynamiques via psycopg2.sql.Identifier.

Fichiers

DQE Chargeur/
  __init__.py                   classFactory, check_dependencies
  dqe_chargeur.py               Plugin (initGui, unload, run_dialog)
  dqe_chargeur_dialog.py        Dialog QTabWidget, 4 onglets
  config.json                   Template config DB (sans credentials)
  metadata.txt                  Metadonnees QGIS
  models.py                     OperationType, DQEResult
  workers.py                    DQEWorker (QObject/QThread)
  base_tab.py                   BaseDQETab : thread, progress, couches
  dqe_utils.py                  DatabaseManager, ConfigurationManager,
                                ValidationUtils, SimpleLogger, QtCompat
  connection_dialog.py          Dialog connexion manuelle
  ui_components.py              SROComboBox, TronconComboBox, ProgressWidget
  designation_classifier.py     Designation -> categorie de couche
  database_operations.py        SQL : execute_dqe_*, redevances
  layer_manager.py              Couches QGIS, gestionnaire, cables
  excel_manager.py              Excel : PRO, EXE, PGC, redevances
  dqe_pro_tab.py                Onglet PRO
  dqe_exe_tab.py                Onglet EXE
  dqe_pgc_tab.py                Onglet PGC
  dqe_recover_tab.py            Onglet Recover
  files/                        3 templates Excel
  sql/                          Fonctions PostgreSQL

Dependances entre modules

dqe_chargeur.py dialog.py pro_tab exe_tab pgc_tab recover_tab base_tab database_operations layer_manager excel_manager workers dqe_utils singletons

DQE PRO

Quantitatifs projet. Transport TP pour le backbone, Distribution DP pour le deploiement client avec decoupe automatique des cables.

Cables optiques

6 a 720 FO. Aerien, facade, conduite. Cables decoupes auto pour Distribution via fddcpi2().

BPE, PA, PBO

Boites de protection, points d'acces. Quantites par type et mode de pose.

SRO et Prises

Points de raccordement, comptage DTR/RAD.

Archivage

Resultats SQL + FeatureCollections WKT dans dqe.dqejson.

Flux PRO

SRO + Type dqe2() Classifier categories Couches QGIS Excel PRO Distribution : load_distribution_cables() Cables decoupes

Comment fonctionne la decoupe

Les cables Distribution sont segmentes par la fonction SQL fddcpi2(). Chaque segment recoit une capacite normalisee et un mode de pose. Le plugin cree ensuite des couches QGIS par combinaison posemode/capacite.

CABLE ORIGINAL Cable Distribution CDI — capacite variable — DCE = 'O' fddcpi2(sro) SEGMENTS DECOUPES 48 FO 24 FO 12 FO 48 FO 144 FO 24 FO normalisation + groupement COUCHES QGIS Cable 48 FO conduite posemode=0 · 2 segments Cable 24 FO aerien posemode=1 · 2 segments Cable 144 FO conduite posemode=0 · 1 segment Cable 12 FO facade posemode=2 · 1 segment Capacites : 12 24 36 48 72 96 144 288 432 576 720

DQE EXE

EXE = PRO + Genie Civil. dqe_exe() appelle dqe2() puis ajoute tranchees, chambres, poteaux, alveoles via jointures LATERAL sur gc_exe.

Tranchees

Traditionnelle, micro-tranchee, forage dirige, encorbellement.

Chambres

L3C, L3T... Comptage GROUP BY inf_mat.

Poteaux reseau

Comptage nb_pot_ac par concessionnaire.

Alveoles

PVC 42/45, PEHD 33/40. Section dynamique Excel.

Blocage RAN

CodesModep_blocageComportement
TE DEStandardNULLTous les elements
TT DTTravaux'T'Exclut blocage_ran = true
TB DBBlocage'B'Uniquement blocage_ran = true

Filtrage blocage RAN

Illustration du filtrage selon le parametre p_blocage. Les elements avec blocage_ran=true sont separes des elements travaux.

Tous les elements du SRO Standard TE / DE p_blocage = NULL — pas de filtre Travaux TT / DT exclut blocage_ran = true Blocage TB / DB uniquement blocage_ran = true element normal element bloque RAN

Infrastructure mixte

Quand un parcours contient des parties aeriennes (cm_typ_imp='0') ET souterraines ('7'), la detection est automatique.

niveau sol aerien cm_typ_imp = 0 transition souterrain — alveoles PVC/PEHD cm_typ_imp = 7 L3C L3T Mixte : poteaux aeriens + alveoles souterrains = FULL OUTER JOIN

DQE PGC

Attribution des infrastructures aux gestionnaires de voirie, puis calcul des redevances.

Mode Gestionnaire

Couche editable QGIS. Corrections manuelles de cm_gest_do. Regeneration Excel apres modifs.

Mode Direct

Traitement auto complet. Export Excel immediat. Pas de couche gestionnaire.

Algorithme gestionnaire()

Troncons t_cheminement Segmentation resolution 2m Attribution distance + angle Resultat cm_gest_do Parametres Buffer 50m · Max 15m Angle 20° · Carrefours auto Score 80% distance proximite 20% parallelisme geo Sortie QGIS cm_gest_do, cm_compo nb_pot_ac, segment_id

Comment fonctionne l'attribution

Illustration : un troncon de cheminement (cable enterre) longe deux routes. L'algorithme segmente le troncon tous les 2m, puis pour chaque point mesure la distance et l'angle vers les routes voisines dans un buffer de 50m.

Route A Route B Segment 1 Segment 2 Segment 3 buffer 50m d=12m d=38m attribue a Concessionnaire A (plus proche) attribue a Concessionnaire B Cheminement (troncon fibre) Routes de voirie Segments (res. 2m)

Types d'infrastructure

Aerienne cm_typ_imp = 0 Poteaux reseau nb_pot_ac Souterraine cm_typ_imp = 7 Alveoles PVC/PEHD nb_alveoles x long + chambres + tranchees Mixte 0 + 7 Poteaux + Alveoles FULL OUTER JOIN totaux separes

DQE Recover

Consultation et regeneration des DQE valides depuis dqe.dqejson. Acces direct sans QThread.

Recherche

Filtrage type + SRO. Limite 30.

Apercu HTML

Watermark ARCHIVE. Worker async.

Regenerer Excel

Depuis donnees archivees.

Recreer couches

Via dqe_recover(). En dev.

Les boutons d'action sont desactives. Seuls recherche et apercu HTML fonctionnent.

Fonctions SQL

ftth

FonctionModuleDescription
dqe2(sro, type, blocage)PRO EXEQuantitatifs projet + filtrage blocage
dqe_exe(sro, type, blocage)EXEdqe2 + jointures LATERAL gc_exe
dqe_pgc(sro, troncon)PGCQuantitatifs GC par troncon
fddcpi2(sro)PROCables decoupes Distribution
za_sroREFTable reference SRO

gc_exe

FonctionModuleDescription
gestionnaire(sro, troncon)PGCAlgorithme proximite, cm_gest_do
redevance_table(sro, troncon)PGCRequete SQL dynamique redevances
t_cheminementTABLETroncons, cm_typ_imp, cm_compo
infra_pt_chb / infra_pt_potTABLEChambres et poteaux

dqe

ObjetTypeColonnes
dqejsonTABLEsro, nom_dqe, projet, categorie, champs (JSONB), user_name, version_projet, audit_timestamp
dqe_recover()FUNCReconstruction tables. En dev.

Codes projet

CodeModuleDescriptionSQL
TPPROTransport backbonedqe2(sro,'T')
DPPRODistribution + cables decoupesdqe2(sro,'D')
TEEXETransport standarddqe_exe(sro,'T',NULL)
DEEXEDistribution standarddqe_exe(sro,'D',NULL)
TTEXETransport travauxdqe_exe(sro,'T','T')
DTEXEDistribution travauxdqe_exe(sro,'D','T')
TBEXETransport blocagedqe_exe(sro,'T','B')
DBEXEDistribution blocagedqe_exe(sro,'D','B')
GCPGCAttribution gestionnairedqe_pgc(sro,troncon)

Dependances

PackageMinUsage
psycopg22.8Pool PostgreSQL, psycopg2.sql
pandas1.0DataFrames, export Excel
openpyxl3.0Templates .xlsx
PyQt55.12UI (fourni par QGIS)
qgis.core3.28QgsVectorLayer, QgsProject

Changelog

4.0.0Juin 2026 — Version majeure
  • Montee de version 4.0.0
3.5.1Mars 2026 — Audit securite
  • Credentials neutralises config.json + .gitignore
  • Injection SQL corrigee (psycopg2.sql.Identifier/Literal)
  • Password supprime des logs
  • Methodes dupliquees supprimees (ExcelManager)
  • Properties publiques DatabaseManager (is_connected, config)
  • Pool DB pour toutes les fonctions redevance
3.5.0Fevrier 2026 — Stabilisation
  • SyntaxError EOL corrigee
  • Sauvegarde PRO complete dans dqejson
  • Correspondance exacte designation template PGC
  • Alveoles dynamiques PGC
  • Correction wrapped C/C++ object deleted
3.4.0Janvier 2026 — Recover + Blocage
  • Onglet DQE Recover
  • Modes blocage_ran (TE/DE/TT/DT/TB/DB)
  • QtCompatibility
  • Correction comptage chambres L3C/L3T
3.2.0Corrections PostgreSQL
  • Infrastructures mixtes aerien+souterrain
  • Redevances poteaux/alveoles separees
3.0.0Version initiale
  • Support DQE PRO, EXE, PGC

DQE Chargeur 4.0.0 · réseau FTTH régional