labfy-investigation/ticket109.md

473 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Contexte
Lors de la création dune personne dans une enquête, lutilisateur doit
actuellement renseigner les données manuellement et ne peut pas choisir
clairement la nature de la personne ni associer facilement une preuve.
Le parcours devient particulièrement long lorsque les noms de fichiers
ne permettent pas de savoir ce quils contiennent.
Le cas des documents didentité nécessite également un traitement
forensique strict :
- conservation de loriginal ;
- analyse sur une copie de travail ;
- OCR contrôlé ;
- validation humaine ;
- distinction entre texte brut, valeur normalisée et correction manuelle ;
- aucune affirmation automatique concernant lidentité réelle ou
lauthenticité du document.
## Objectif
Créer un assistant fluide permettant, depuis la fenêtre de création dune
personne :
1. de sélectionner son rôle ou sa nature dans lenquête ;
2. de choisir une preuve déjà importée ;
3. dimporter immédiatement une nouvelle preuve ;
4. de visualiser la preuve avant de la sélectionner ;
5. de qualifier le type de preuve ;
6. de lancer une analyse adaptée au type choisi ;
7. dutiliser lOCR pour préremplir les champs dun document didentité ;
8. de corriger manuellement les données proposées ;
9. de conserver la provenance complète de chaque valeur ;
10. de garantir lintégrité du fichier original.
## Terminologie
Ne pas confondre :
- le rôle de la personne dans lenquête ;
- son niveau didentification ;
- lauthenticité du document présenté ;
- la confiance accordée aux différentes observations.
Une personne peut par exemple avoir :
- rôle : Identité présentée ;
- identification : Non vérifiée ;
- document : Authenticité indéterminée ;
- hypothèse : Identité potentiellement usurpée.
Lapplication ne doit jamais transformer automatiquement cette personne
en auteur identifié.
## Fenêtre de création dune personne
Ajouter un champ contrôlé :
Rôle dans lenquête
Valeurs initiales proposées :
- Auteur présumé ;
- Identité présentée ;
- Identité potentiellement usurpée ;
- Victime ;
- Témoin ;
- Titulaire bancaire déclaré ;
- Intermédiaire ;
- Personne citée ;
- Autre.
Ces valeurs doivent provenir du vocabulaire contrôlé du projet.
Le champ existant « Identification » reste distinct et conserve des états
tels que :
- Inconnu ;
- Non vérifié ;
- Partiellement identifié ;
- Identifié ;
- Contesté.
## Association dune preuve
Depuis la fenêtre de création dune personne, proposer deux actions :
- Sélectionner une preuve existante ;
- Importer une nouvelle preuve.
Lutilisateur ne doit pas être obligé de fermer la fenêtre, importer la
preuve ailleurs, puis recommencer la création de la personne.
### Preuve existante
La sélection doit afficher au minimum :
- miniature ou aperçu ;
- nom du fichier ;
- type de preuve ;
- taille ;
- date dimport ;
- empreinte SHA-256 abrégée ;
- description éventuelle ;
- état dintégrité.
Prévoir une recherche et un filtrage par type.
### Nouvelle preuve
Limport déclenché depuis la fenêtre doit utiliser le mécanisme forensique
central du projet :
- copie contrôlée dans lenquête ;
- calcul du SHA-256 ;
- conservation du nom original ;
- enregistrement de la provenance ;
- aucune modification du fichier source ;
- détection du type MIME réel ;
- détection des collisions ;
- traitement asynchrone ;
- annulation sûre.
À la fin de limport, la nouvelle preuve doit être automatiquement
sélectionnée dans la fenêtre de création de la personne.
## Aperçu des preuves
La fenêtre de sélection et dimport doit fournir un aperçu suffisamment
grand pour identifier le contenu sans occuper toute la fenêtre.
Prévoir une zone responsive avec :
- conservation du ratio ;
- ajustement à la zone ;
- zoom avant et arrière ;
- retour à lajustement ;
- défilement lorsque limage est agrandie ;
- message explicite lorsque laperçu est indisponible.
Prise en charge minimale :
- image : aperçu direct ;
- PDF : première page avec navigation entre les pages ;
- vidéo : miniature, durée et informations principales ;
- EML : résumé des en-têtes et liste des pièces jointes ;
- autre fichier : icône, type MIME, taille et métadonnées disponibles.
Laperçu est une représentation dérivée.
Il ne doit jamais modifier le fichier original.
Toute conversion, génération de miniature, rotation, amélioration,
redimensionnement ou rendu PDF doit être réalisée dans une zone de
travail temporaire contrôlée.
## Qualification du type de preuve
Permettre de sélectionner ou confirmer un type contrôlé, par exemple :
- Document didentité ;
- Carte nationale didentité ;
- Passeport ;
- Permis de conduire ;
- Document bancaire ;
- Capture décran ;
- Conversation ;
- Courrier électronique ;
- PDF ;
- Photo ;
- Vidéo ;
- Billet ou justificatif de commande ;
- Autre.
La détection automatique peut proposer un type, mais lutilisateur doit
toujours pouvoir le corriger avant validation.
Le type choisi détermine les analyses proposées.
## Document didentité
Lorsquune preuve est qualifiée comme document didentité, proposer :
Analyser le document
Le traitement doit être asynchrone et annulable.
Il doit :
1. vérifier lintégrité de la preuve ;
2. créer une copie de travail ;
3. conserver loriginal strictement intact ;
4. appliquer les conversions uniquement à la copie ;
5. exécuter lOCR ;
6. conserver le texte OCR brut ;
7. proposer des champs structurés ;
8. attendre une validation humaine avant toute intégration.
## Champs OCR proposés
Selon les informations réellement visibles, proposer notamment :
- nom ;
- prénoms ;
- sexe déclaré ;
- date de naissance ;
- lieu de naissance ;
- nationalité déclarée ;
- taille ;
- numéro du document ;
- date de délivrance ;
- date dexpiration ;
- autorité de délivrance ;
- zone lisible par machine ;
- autres valeurs observées.
Ne jamais inventer une valeur absente ou illisible.
Chaque proposition doit posséder un état :
- détectée ;
- partielle ;
- incertaine ;
- invalide ;
- corrigée ;
- rejetée ;
- confirmée.
## Validation et correction humaine
Avant la création de la personne, afficher côte à côte autant que possible :
- laperçu du document ;
- les valeurs extraites ;
- les champs modifiables ;
- le niveau de confiance OCR ;
- la provenance précise.
Pour chaque champ, conserver séparément :
- valeur OCR brute ;
- valeur normalisée ;
- valeur corrigée manuellement ;
- valeur finalement confirmée ;
- méthode dextraction ;
- langue OCR ;
- version de loutil ;
- date UTC ;
- preuve source ;
- page ou zone source lorsque disponible.
Une correction manuelle ne doit jamais écraser le résultat OCR brut.
Lutilisateur doit pouvoir :
- modifier une proposition ;
- rejeter une proposition ;
- laisser un champ vide ;
- revenir à la valeur OCR ;
- confirmer uniquement certains champs.
## Authenticité et identité usurpée
Ajouter un statut contrôlé pour le document :
- Authenticité indéterminée ;
- Présumé authentique ;
- Suspect ;
- Présumé falsifié ;
- Falsifié confirmé ;
- Document usurpé présumé ;
- Document usurpé confirmé.
Les statuts affirmatifs doivent nécessiter une validation explicite et
une justification.
LOCR ne doit jamais conclure :
- que le document est authentique ;
- que la personne figurant sur le document est lauteur ;
- que lidentité est réellement usurpée ;
- que le titulaire a participé aux faits.
Dans le cas courant, le document doit pouvoir être enregistré comme :
Identité présentée — authenticité indéterminée
avec une hypothèse séparée :
Identité potentiellement usurpée
## Création de la personne
Après validation, créer la personne avec uniquement les champs confirmés.
La personne doit être liée à la preuve par une relation factuelle, par
exemple :
- Identité observée dans ;
- Document présenté au nom de ;
- Données extraites depuis ;
- Identité déclarée dans.
Ne pas créer automatiquement une relation :
- Est lauteur ;
- Identité réelle de ;
- A usurpé lidentité de.
Les résultats OCR rejetés ne doivent pas devenir des attributs de la
personne.
## Intégrité et provenance
Le fichier original doit rester immuable.
Avant chaque analyse :
- recalculer ou vérifier le SHA-256 ;
- bloquer lanalyse en cas de divergence ;
- ne jamais réécrire lempreinte enregistrée pour masquer une différence.
Tous les fichiers dérivés doivent être identifiables comme tels :
- miniature ;
- rendu de page PDF ;
- image préparée pour OCR ;
- recadrage ;
- correction dorientation ;
- texte OCR ;
- JSON de métadonnées.
Chaque dérivé doit conserver :
- preuve parente ;
- outil ;
- version ;
- arguments ;
- date UTC ;
- SHA-256 ;
- statut ;
- avertissements.
## Interface
Le parcours doit rester possible depuis une seule fenêtre ou un assistant
cohérent :
Création de la personne
choix du rôle
sélection ou import de la preuve
aperçu
qualification du type
analyse facultative
révision des propositions
création de la personne et des relations confirmées
Utiliser des boutons compacts avec icônes et infobulles.
Ne pas ajouter de gros boutons occupant inutilement linterface.
La fermeture ou lannulation ne doit créer ni personne partielle, ni
attribut partiel, ni relation partielle.
## Transactions
La création finale doit être transactionnelle pour :
- la personne ;
- ses attributs confirmés ;
- le rattachement à la preuve ;
- les observations OCR confirmées ;
- les relations ;
- les références aux fichiers dérivés conservés.
En cas déchec :
- rollback complet ;
- original inchangé ;
- aucune personne incomplète ;
- aucune relation orpheline ;
- aucun fichier temporaire présenté comme preuve permanente.
## Tests obligatoires
Ajouter des fixtures exclusivement synthétiques.
Couvrir au minimum :
1. choix de chaque rôle contrôlé ;
2. sélection dune preuve existante ;
3. import dune nouvelle preuve depuis la fenêtre ;
4. sélection automatique après import ;
5. aperçu image ;
6. aperçu PDF ;
7. aperçu indisponible ;
8. navigation entre pages ;
9. qualification manuelle du type ;
10. document didentité déclenchant lOCR ;
11. autre type ne déclenchant pas automatiquement lOCR ;
12. original inchangé ;
13. SHA-256 inchangé ;
14. travail sur copie ;
15. texte OCR brut conservé ;
16. valeur normalisée séparée ;
17. correction manuelle séparée ;
18. rejet dun champ ;
19. champ illisible laissé vide ;
20. création avec seulement les valeurs confirmées ;
21. provenance par champ ;
22. annulation ;
23. rollback ;
24. fermeture de fenêtre pendant lanalyse ;
25. changement denquête pendant lanalyse ;
26. aucune écriture dans la mauvaise base ;
27. aucune donnée réelle dans les fixtures ;
28. aucune conclusion automatique sur lauthenticité ;
29. aucune fusion automatique avec lauteur présumé ;
30. réouverture de lenquête avec données persistantes.
Séparer autant que possible :
- services dimport ;
- génération daperçu ;
- OCR ;
- modèle de révision ;
- DAO ;
- tests GTK ciblés ;
- validation visuelle manuelle.
## Critères dacceptation
Le ticket est terminé seulement si :
- le rôle de la personne peut être sélectionné ;
- une preuve existante peut être choisie ;
- une nouvelle preuve peut être importée sans quitter le parcours ;
- un aperçu exploitable est disponible ;
- le type de preuve peut être confirmé ou corrigé ;
- un document didentité peut être analysé par OCR ;
- les propositions OCR sont modifiables avant intégration ;
- le texte OCR brut nest jamais écrasé ;
- loriginal reste inchangé ;
- la provenance est persistée ;
- seules les valeurs confirmées alimentent la personne ;
- aucune identité nest attribuée automatiquement à lauteur présumé ;
- tous les tests passent.
## Sécurité de développement
Codex et tout agent de développement doivent travailler uniquement avec :
- le dépôt source ;
- des fixtures synthétiques ;
- des bases SQLite temporaires synthétiques.
Ils ne doivent jamais accéder à :
- Enquete.sqlite réelle ;
- documents didentité réels ;
- captures réelles ;
- e-mails réels ;
- données bancaires réelles ;
- vidéos réelles ;
- autres preuves de lenquête.