5 KiB
Ticket #021
Titre
Valider une enquête existante.
Objectif
Ajouter au module InvestigationProject la capacité de vérifier qu’un dossier
correspond bien à une enquête Labfy Investigation valide.
La validation doit contrôler la présence et le type des éléments obligatoires, sans modifier le contenu du dossier.
Architecture
Application
│
▼
InvestigationProject
│
▼
FileSystem
Toute ouverture d’enquête existante doit passer par
InvestigationProject.
La GUI ne doit jamais décider seule si un dossier est valide.
Responsabilités
InvestigationProject
Le module doit :
- recevoir le chemin d’un dossier ;
- vérifier que le chemin existe ;
- vérifier qu’il désigne un dossier ;
- vérifier la présence de l’arborescence obligatoire ;
- vérifier que les dossiers attendus sont bien des dossiers ;
- vérifier la présence de
00_BaseDeDonnees/Enquete.sqlite; - vérifier que
Enquete.sqliteest un fichier régulier ; - retourner un résultat clair sans modifier le dossier.
Interface publique attendue
Faire évoluer :
include/core/investigation_project.h
src/core/investigation_project.c
Ajouter :
bool investigation_project_validate(
const char *investigation_path
);
Contrat
La fonction retourne :
true
si le dossier est une enquête valide.
Elle retourne :
false
si :
- le chemin est invalide ;
- le dossier n’existe pas ;
- le chemin désigne un fichier ;
- un dossier obligatoire manque ;
- un élément attendu comme dossier est en réalité un fichier ;
Enquete.sqlitemanque ;Enquete.sqliten’est pas un fichier régulier.
La fonction ne doit jamais modifier le système de fichiers.
Structure obligatoire
Les dossiers suivants doivent exister :
00_BaseDeDonnees
01_Preuves_Originales
02_Preuves_Traitees
03_Chronologie
04_Entites
05_Rapports
06_Exports
07_Notes
08_Sources
09_Hash
Les sous-dossiers suivants doivent également exister :
01_Preuves_Originales/Captures_Ecran
01_Preuves_Originales/Conversations
01_Preuves_Originales/Documents
01_Preuves_Originales/Emails
01_Preuves_Originales/Photos
01_Preuves_Originales/Videos
02_Preuves_Traitees/Annotations
02_Preuves_Traitees/Extractions
02_Preuves_Traitees/OCR
02_Preuves_Traitees/Redactions
04_Entites/Adresses_Email
04_Entites/Comptes_Bancaires
04_Entites/Comptes_Facebook
04_Entites/Comptes_Instagram
04_Entites/Documents_Identite
04_Entites/IBAN
04_Entites/Personnes
04_Entites/Pseudonymes
04_Entites/Telephones
04_Entites/Autres
Le fichier suivant doit exister :
00_BaseDeDonnees/Enquete.sqlite
Réutilisation de la structure déclarative
La validation doit réutiliser la même liste de chemins que la création.
Il ne doit pas exister deux listes indépendantes décrivant l’arborescence.
La structure de référence doit rester centralisée dans
investigation_project.c.
Hors périmètre
Ce ticket ne doit pas :
- ouvrir SQLite ;
- lire le schéma SQL ;
- vérifier la version de la base ;
- créer les éléments manquants ;
- réparer une enquête ;
- importer automatiquement des fichiers ;
- modifier GTK ;
- ouvrir automatiquement l’enquête dans l’application.
Gestion des erreurs
Dans ce ticket, la fonction retourne uniquement un booléen.
Les détails d’erreur plus précis pourront être ajoutés plus tard avec :
GError
ou une énumération métier dédiée.
La validation ne doit produire aucun g_warning() pour un dossier simplement
invalide : un résultat false suffit.
Contraintes techniques
- C17 ;
- GLib autorisée ;
- aucune dépendance GTK ;
- aucune dépendance SQLite requise ;
- aucune écriture sur le disque ;
- aucun état global ;
- documentation Doxygen ;
- compilation sans warning.
Tests
Faire évoluer :
tests/test_investigation_project.c
Le test doit vérifier :
- une enquête complète est valide ;
NULLest refusé ;- une chaîne vide est refusée ;
- un chemin inexistant est refusé ;
- un fichier simple est refusé ;
- une enquête sans
Enquete.sqliteest refusée ; - une enquête avec un dossier obligatoire manquant est refusée ;
- un élément attendu comme dossier mais remplacé par un fichier est refusé ;
- une enquête valide reste inchangée après validation.
Critères d’acceptation
- Le projet compile sans warning.
make testreste entièrement valide.- Une enquête créée par
investigation_project_create()est valide. - Un chemin invalide est refusé.
- Un dossier incomplet est refusé.
- Un faux fichier
Enquete.sqliteincorrect est refusé. - Aucun élément n’est créé pendant la validation.
- Aucun élément n’est supprimé pendant la validation.
- La structure de référence n’est pas dupliquée.
- Aucune dépendance GTK.
- Aucun
Gtk-CRITICAL.
Commit attendu
feat(core): validate investigation project structure