Skip to content

[BO - Performance] Liste des signalement et export (ajout nom des docs et photos)#5710

Open
numew wants to merge 2 commits intodevelopfrom
feature/5701-export-doc-and-file-and-improve-perf
Open

[BO - Performance] Liste des signalement et export (ajout nom des docs et photos)#5710
numew wants to merge 2 commits intodevelopfrom
feature/5701-export-doc-and-file-and-improve-perf

Conversation

@numew
Copy link
Copy Markdown
Contributor

@numew numew commented Apr 13, 2026

Ticket

#5701

Description

Réécriture du système de requétage des signalement utilisé sur

  • la liste des signalement
  • la cartographie
  • l'export XLS/CSV

Résultats

  • Forte amélioration des temps de réponses
  • Remise en marche du contenu des colonne documents et photo sur le fichier d'exports

Principe d'optimisation

  • Ne requéter que les champs nécessaire (ex pour un count éviter d'embarquer des champs de table en left join)
  • Pour les liste : requéter d'abord uniquement une liste d'id, puis requeter les données pour cette liste d'id dans un second temps ce qui permet quand il y'a des GROUP_CONCAT et left join nombreux de ne pas démultiplier les nombre de ligne a calculés.

Changements apportés

  • Suppression des propriétés inutilisés score et isNotOccupant de SignalementAffectationListView.
  • Ajout des valeur des colonnes photos et documents sur SignalementExportFactory.
  • Passage de la méthode findSignalementAffectationList pour un requétage en deux passe afin d'améliorer les performances sur la page liste des signalements. En parallèle modification de QueryBuilderFactory pour les même raison. Quelque modifications sur SearchFilter site à cela.
  • Réecriture de ExportIterableQuery pour un requétage en deux passe (avec récupération des données par lot de 500) pour améliorer les performance de l'export et rendre possible l'export des colonne documents et photos sur de gros volumes. En parallèle modification de SignalementExportLoader pour les mêmes raison.
  • Modification du MapGeoDataQuery pour récupérer uniquement les données nécessaire à la carto.

Pré-requis

se mettre sur une copie de prod

Tests

  • Se rendre sur la page liste des signalement, tester quelque filtre, voir que ca fonctionne correctement et que c'est réactif.
  • Se rendre sur la page cartographie, tester quelques filtres et voir que ca fonctionne.
  • Tester l'export de grosse liste de signalement (ex un territoire complet) avec certains éléments coché, ou tous et voir que cela fonctionne.

@numew numew marked this pull request as ready for review April 14, 2026 11:48
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
12.3% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@numew numew changed the title [BO - Signalement] Export CSV/xls Noms document [BO - Performance] Liste des signalement et export + Export ajout des nom des document et photos Apr 14, 2026
@numew numew changed the title [BO - Performance] Liste des signalement et export + Export ajout des nom des document et photos [BO - Performance] Liste des signalement et export (ajout nom des docs et photos) Apr 14, 2026
@numew numew requested review from emilschn, hmeneuvrier and sfinx13 and removed request for sfinx13 April 14, 2026 11:50
s.geoloc')
->andWhere("JSON_EXTRACT(s.geoloc,'$.lat') != ''")
->andWhere("JSON_EXTRACT(s.geoloc,'$.lng') != ''")
->andWhere('s.statut NOT IN (:signalement_status_list)')
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tu enlèves ça parce que ça faisait doublon avec QueryBuilderFactory, c'est ça ?

)
$columns = SignalementExportSelectableColumns::getColumns();
$specificSelectKeys = array_keys(array_filter($columns, static fn ($col) => isset($col['specificSelect'])));
$handledSeparately = array_merge($specificSelectKeys, ['EPCI_NOM', 'STATUT']);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pourquoi ces colonnes ne sont pas en specificSelect, du coup ?

@@ -449,7 +457,6 @@ public function applyFilters(QueryBuilder $qb, array $filters, User $user): Quer
}

if (!empty($filters['isImported'])) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inverser le test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants