Ajouter des relations entre les éléments de l’enquête #68

Closed
opened 2026-07-22 08:15:08 +02:00 by fy59 · 0 comments
Owner

Ajouter des relations entre les éléments de l’enquête

Objectif

Permettre à l’utilisateur de créer et consulter des relations entre les différents éléments d’une enquête depuis les fiches de détail et les documents affichés depuis la sidebar.

Le système doit rester cohérent avec l’architecture actuelle :

les widgets GTK ne doivent jamais accéder directement à SQLite ;

Application pilote les opérations métier et la persistance ;

les DAO restent responsables des accès à la base ;

le graphe doit être actualisé après chaque modification réussie ;

les relations doivent être traçables et exploitables dans un futur rapport destiné aux forces de l’ordre.

Cas d’usage

Relation entre deux entités

Exemples :

  • une adresse e-mail appartient à une personne ;
  • un compte Instagram est utilisé par une personne ;
  • un IBAN est associé à un pseudonyme ;
  • un numéro de téléphone est lié à un compte en ligne.

Parcours prévu :

  • ouvrir la fiche d’une entité ;
  • cliquer sur Ajouter une relation ;
  • choisir l’entité cible ;
  • choisir le type de relation ;
  • saisir une note ou une description facultative ;
  • enregistrer ;
  • actualiser le graphe et la fiche.
  • Lien entre une preuve et une entité

Exemples :

  • une capture d’écran mentionne un compte Instagram ;
  • un e-mail contient une adresse ou un numéro de téléphone ;
  • un document bancaire contient un IBAN ;
  • une photo montre une personne ou un objet d’intérêt.

Parcours prévu :

  • ouvrir une preuve depuis la sidebar ;
  • cliquer sur Relier à… ;
  • choisir une entité ;
  • saisir une note facultative ;
  • enregistrer ;
  • actualiser la fiche de la preuve.
  • Lien entre une preuve et une relation

Exemples :

  • un e-mail démontre le lien entre une personne et un compte bancaire ;
  • une conversation prouve qu’un pseudonyme contrôle un compte ;
  • une capture d’écran confirme une transaction entre deux éléments.

Parcours prévu :

  • ouvrir une preuve depuis la sidebar ;
  • cliquer sur Relier à… ;
  • choisir une relation existante ;
  • saisir une note facultative ;
  • enregistrer ;
  • actualiser la fiche de la preuve et les informations de la relation.

Périmètre technique

Avant de modifier l’interface, vérifier et compléter si nécessaire :

  • RelationRecord ;
  • relation_dao ;
  • evidence_entity_dao ;
  • relation_evidence_dao ;
  • les types de relations disponibles dans SQLite ;
  • les contraintes d’unicité et les clés étrangères ;
  • les tests unitaires existants ;
  • les panneaux de détails des entités et des preuves.

Ordre de développement

  • auditer les modèles, DAO et tables existants ;
  • compléter les opérations manquantes et leurs tests ;
  • créer le dialogue de sélection de la cible ;
  • ajouter le choix du type de relation ;
  • ajouter le bouton dans la fiche d’entité ;
  • ajouter le bouton dans la fiche de preuve ;
  • créer les relais Widget → Workspace → MainWindow → Application ;
  • enregistrer via les DAO ;
  • actualiser le graphe après succès ;
  • afficher clairement les erreurs sans modifier l’interface en cas d’échec SQLite ;
  • ajouter les tests manuels et automatisés nécessaires.

Contraintes d’interface

  • utiliser des boutons compacts avec icônes et infobulles ;
  • ne pas ajouter de gros boutons occupant inutilement l’espace ;
  • désactiver les actions lorsqu’aucune enquête ou aucun élément compatible n’est sélectionné ;
  • permettre l’annulation sans effet de bord ;
  • demander confirmation avant toute suppression future ;
  • afficher un message de statut après réussite ou échec.

Critères d’acceptation

  • une relation entre deux entités peut être créée depuis une fiche d’entité ;
  • une preuve peut être reliée à une entité ;
  • une preuve peut être reliée à une relation existante ;
  • les données sont persistées dans SQLite ;
  • les doublons incohérents sont refusés ou gérés explicitement ;
  • l’interface n’accède jamais directement à SQLite ;
  • le graphe est actualisé après une création réussie ;
  • une erreur SQLite ne modifie pas l’état visuel courant ;
  • les nouvelles fonctions sont couvertes par des tests ;
  • make, make test et git diff --check passent sans erreur.

Fichiers à examiner en premier

include/dao/relation_dao.h
src/dao/relation_dao.c
include/dao/evidence_entity_dao.h
src/dao/evidence_entity_dao.c
include/dao/relation_evidence_dao.h
src/dao/relation_evidence_dao.c
include/models/relation_record.h
src/models/relation_record.c

Fichiers d’interface probablement concernés ensuite

include/widgets/entity_details_panel.h
src/widgets/entity_details_panel.c
include/widgets/workspace.h
src/widgets/workspace.c
include/views/main_window.h
src/views/main_window.c
src/core/application.c

Hors périmètre initial

  • suppression ou modification avancée des relations ;
  • édition graphique directe des arêtes dans le canvas ;
  • fusion automatique d’entités ;
  • création automatique de relations par des outils OSINT ;
  • génération du rapport final.
# Ajouter des relations entre les éléments de l’enquête ## Objectif Permettre à l’utilisateur de créer et consulter des relations entre les différents éléments d’une enquête depuis les fiches de détail et les documents affichés depuis la sidebar. Le système doit rester cohérent avec l’architecture actuelle : les widgets GTK ne doivent jamais accéder directement à SQLite ; Application pilote les opérations métier et la persistance ; les DAO restent responsables des accès à la base ; le graphe doit être actualisé après chaque modification réussie ; les relations doivent être traçables et exploitables dans un futur rapport destiné aux forces de l’ordre. ## Cas d’usage Relation entre deux entités Exemples : - une adresse e-mail appartient à une personne ; - un compte Instagram est utilisé par une personne ; - un IBAN est associé à un pseudonyme ; - un numéro de téléphone est lié à un compte en ligne. ## Parcours prévu : - ouvrir la fiche d’une entité ; - cliquer sur Ajouter une relation ; - choisir l’entité cible ; - choisir le type de relation ; - saisir une note ou une description facultative ; - enregistrer ; - actualiser le graphe et la fiche. - Lien entre une preuve et une entité Exemples : - une capture d’écran mentionne un compte Instagram ; - un e-mail contient une adresse ou un numéro de téléphone ; - un document bancaire contient un IBAN ; - une photo montre une personne ou un objet d’intérêt. ## Parcours prévu : - ouvrir une preuve depuis la sidebar ; - cliquer sur Relier à… ; - choisir une entité ; - saisir une note facultative ; - enregistrer ; - actualiser la fiche de la preuve. - Lien entre une preuve et une relation Exemples : - un e-mail démontre le lien entre une personne et un compte bancaire ; - une conversation prouve qu’un pseudonyme contrôle un compte ; - une capture d’écran confirme une transaction entre deux éléments. ## Parcours prévu : - ouvrir une preuve depuis la sidebar ; - cliquer sur Relier à… ; - choisir une relation existante ; - saisir une note facultative ; - enregistrer ; - actualiser la fiche de la preuve et les informations de la relation. ## Périmètre technique Avant de modifier l’interface, vérifier et compléter si nécessaire : - RelationRecord ; - relation_dao ; - evidence_entity_dao ; - relation_evidence_dao ; - les types de relations disponibles dans SQLite ; - les contraintes d’unicité et les clés étrangères ; - les tests unitaires existants ; - les panneaux de détails des entités et des preuves. ## Ordre de développement - auditer les modèles, DAO et tables existants ; - compléter les opérations manquantes et leurs tests ; - créer le dialogue de sélection de la cible ; - ajouter le choix du type de relation ; - ajouter le bouton dans la fiche d’entité ; - ajouter le bouton dans la fiche de preuve ; - créer les relais Widget → Workspace → MainWindow → Application ; - enregistrer via les DAO ; - actualiser le graphe après succès ; - afficher clairement les erreurs sans modifier l’interface en cas d’échec SQLite ; - ajouter les tests manuels et automatisés nécessaires. ## Contraintes d’interface - utiliser des boutons compacts avec icônes et infobulles ; - ne pas ajouter de gros boutons occupant inutilement l’espace ; - désactiver les actions lorsqu’aucune enquête ou aucun élément compatible n’est sélectionné ; - permettre l’annulation sans effet de bord ; - demander confirmation avant toute suppression future ; - afficher un message de statut après réussite ou échec. ## Critères d’acceptation - une relation entre deux entités peut être créée depuis une fiche d’entité ; - une preuve peut être reliée à une entité ; - une preuve peut être reliée à une relation existante ; - les données sont persistées dans SQLite ; - les doublons incohérents sont refusés ou gérés explicitement ; - l’interface n’accède jamais directement à SQLite ; - le graphe est actualisé après une création réussie ; - une erreur SQLite ne modifie pas l’état visuel courant ; - les nouvelles fonctions sont couvertes par des tests ; - make, make test et git diff --check passent sans erreur. ## Fichiers à examiner en premier ``` include/dao/relation_dao.h src/dao/relation_dao.c include/dao/evidence_entity_dao.h src/dao/evidence_entity_dao.c include/dao/relation_evidence_dao.h src/dao/relation_evidence_dao.c include/models/relation_record.h src/models/relation_record.c ``` Fichiers d’interface probablement concernés ensuite ``` include/widgets/entity_details_panel.h src/widgets/entity_details_panel.c include/widgets/workspace.h src/widgets/workspace.c include/views/main_window.h src/views/main_window.c src/core/application.c ``` ## Hors périmètre initial - suppression ou modification avancée des relations ; - édition graphique directe des arêtes dans le canvas ; - fusion automatique d’entités ; - création automatique de relations par des outils OSINT ; - génération du rapport final.
fy59 closed this issue 2026-07-22 10:33:55 +02:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: fy59/labfy-investigation#68
No description provided.