PD-79 — Expression de Besoin¶
Metadata¶
| Champ | Valeur |
|---|---|
| Story ID | PD-79 |
| Epic | PD-185 (B2C-MINEURS) |
| Titre | Configurer catégorie B2C_EVIDENCE_MINOR dans PD-60 |
| Auteur | Claude (Orchestrateur) |
| Date | 2026-02-16 |
| Version | 2.0 |
1. Nature du document¶
Ce document constitue une Expression de Besoin. Il décrit ce qui doit être garanti du point de vue fonctionnel, probatoire et juridique. Il ne décrit pas comment cela sera implémenté techniquement.
0. Décision architecturale fondamentale¶
Positionnement stratégique de ProbatioVault¶
ProbatioVault ne juge pas. ProbatioVault ne qualifie pas. ProbatioVault ne signale pas. ProbatioVault fige et prouve.
ProbatioVault est une infrastructure neutre de scellement probatoire zero-knowledge. Ce positionnement est invariant quel que soit le contexte (B2B, B2C, mineurs).
Architecture cible¶
| Aspect | Décision |
|---|---|
| Endpoint | Réutiliser POST /documents/upload (PD-60) |
| Moteur probatoire | Unique — pas de duplication |
| Différentiation | Catégorie documentaire B2C_EVIDENCE_MINOR |
| Engagement | Neutre — même acte juridique que tout dépôt |
Ce que PD-79 N'EST PAS¶
- ❌ Un nouvel endpoint
/api/b2c/evidence/upload - ❌ Un régime probatoire différent
- ❌ Un service de signalement
- ❌ Un service de qualification juridique
- ❌ Un déclencheur automatique d'action
Ce que PD-79 EST¶
- ✅ Une catégorie documentaire déclarative (
B2C_EVIDENCE_MINOR) - ✅ Des formats autorisés spécifiques (images, audio, vidéo)
- ✅ Des règles de configuration (taille max, types MIME)
- ✅ Une journalisation renforcée (audit d'accès)
- ✅ Des permissions configurables (supervision parentale future)
Justification juridique¶
Si ProbatioVault spécialisait le cas mineur avec un régime probatoire différent : - Risque d'endosser une responsabilité implicite - Perception comme "acteur de protection" - Obligations supplémentaires potentielles
Le modèle actuel garantit une robustesse face aux autorités, parents, avocats et contestations futures.
2. Contexte stratégique¶
ProbatioVault a pour mission de garantir la preuve d'existence et d'intégrité des documents numériques dans un contexte souverain et conforme eIDAS / NF Z42-013.
Dans le cadre de l'EPIC PD-185 — B2C-MINEURS, la plateforme doit permettre à un mineur (ou à son représentant légal) de :
- Déposer une preuve numérique sensible
- Obtenir un scellement probatoire immédiat
- Garantir l'intégrité, la traçabilité et la recevabilité future
Cas d'usage prioritaires¶
| Cas | Description |
|---|---|
| Harcèlement scolaire | Screenshots de messages, conversations |
| Cyberharcèlement | Captures réseaux sociaux, menaces |
| Diffusion non consentie | Images/vidéos partagées sans accord |
| Preuve d'échanges | Conversations audio/vidéo |
3. Objectif fonctionnel¶
Permettre à un utilisateur B2C (mineur ou représentant légal) de :
- Transmettre une preuve numérique via un endpoint sécurisé
- Faire valider automatiquement la nature du fichier
- Obtenir un scellement probatoire immédiat (< 1 seconde)
- Recevoir un identifiant de preuve vérifiable ultérieurement
4. Périmètre fonctionnel¶
4.1 Endpoint cible (réutilisation PD-60)¶
POST /documents/upload
Content-Type: multipart/form-data
Authorization: Bearer <JWT>
Body (multipart):
- file: <binary>
- category: "B2C_EVIDENCE_MINOR" // <-- Nouveau champ
- description: "..." (optionnel)
L'endpoint existant /documents/upload est réutilisé. La différenciation se fait via le champ category.
4.2 Types de preuves acceptées (catégorie B2C_EVIDENCE_MINOR)¶
| Type | Extensions | MIME Types |
|---|---|---|
| Image | PNG, JPEG, JPG | image/png, image/jpeg |
| Audio | M4A, MP3, WAV | audio/mp4, audio/mpeg, audio/wav |
| Vidéo | MP4, MOV | video/mp4, video/quicktime |
4.3 Limites techniques¶
| Paramètre | Valeur | Justification |
|---|---|---|
| Taille maximale | 100 Mo | Permet vidéos 1-2 min qualité moyenne |
| Délai scellement | < 1 seconde | Expérience utilisateur instantanée |
| Formats exécutables | REJETÉS | Sécurité anti-malware |
4.4 Données associées à l'upload¶
| Donnée | Source | Obligatoire |
|---|---|---|
| Identifiant utilisateur | JWT (sub claim) | Oui |
| Identifiant coffre | JWT (coffre par défaut) | Oui |
| Type MIME | Header Content-Type | Oui |
| Taille fichier | Calculée | Oui |
| Timestamp réception | Serveur (UTC) | Oui |
| Description courte | Body (optionnel) | Non |
5. Exigences fonctionnelles¶
5.1 Catégorie documentaire (F-79-01)¶
Créer une nouvelle catégorie documentaire dans le système PD-60 :
category: B2C_EVIDENCE_MINOR
label: "Preuve B2C - Mineur"
description: "Preuves sensibles dans un contexte de protection mineur"
Cette catégorie DOIT être : - Déclarative (pas de régime probatoire différent) - Configurable (formats, tailles, permissions) - Auditable (journalisation renforcée)
5.2 Formats autorisés par catégorie (F-79-02)¶
Pour la catégorie B2C_EVIDENCE_MINOR, les formats autorisés sont restreints :
| Type | Extensions | MIME Types |
|---|---|---|
| Image | PNG, JPEG, JPG | image/png, image/jpeg |
| Audio | M4A, MP3, WAV | audio/mp4, audio/mpeg, audio/wav |
| Vidéo | MP4, MOV | video/mp4, video/quicktime |
Le système DOIT : - Valider le type MIME contre la whitelist de la catégorie - Analyser les magic bytes pour détecter les fichiers déguisés - Rejeter les formats non autorisés avec message explicite
5.3 Taille maximale par catégorie (F-79-03)¶
Pour la catégorie B2C_EVIDENCE_MINOR : - Taille maximale : 100 Mo - Rejet avec HTTP 413 si dépassement
5.4 Scellement probatoire (F-79-04 — héritée de PD-60)¶
Le moteur probatoire de PD-60 s'applique sans modification :
- Générer empreinte SHA-3-256
- Inscrire dans journal append-only (PD-31)
- Intégrer à l'ancrage périodique (Merkle tree)
- Retourner confirmation
Objectif de performance : < 1 seconde (SLA spécifique à cette catégorie)
5.5 Réponse API (F-79-05 — identique à PD-60)¶
En cas de succès (HTTP 201 Created) :
{
"evidenceId": "ev_01HXYZ...",
"status": "SEALED",
"hash": "sha3-256:abc123...",
"timestamp": "2026-02-16T14:30:00.000Z",
"cofferId": "coffre_01HXYZ...",
"metadata": {
"mimeType": "image/png",
"size": 1234567,
"filename": "screenshot.png"
}
}
En cas de rejet (HTTP 400/413/415) :
{
"error": "VALIDATION_FAILED",
"code": "FILE_TOO_LARGE",
"message": "File size exceeds maximum allowed (100 MB)",
"maxSize": 104857600
}
6. Contraintes spécifiques au cas mineur¶
Conformément à l'architecture B2C-MINEURS, le système DOIT :
| Contrainte | Description |
|---|---|
| Paternité probatoire | La preuve est rattachée au mineur (sub du JWT) |
| Supervision parentale | Le représentant légal peut accéder aux preuves via son propre compte |
| Journalisation complète | Tout accès ou transfert est journalisé (append-only) |
| Confidentialité | Aucun tiers ne peut accéder aux preuves sans autorisation explicite |
7. Invariants non négociables¶
| ID | Invariant | Type |
|---|---|---|
| INV-79-01 | Aucun fichier en clair ne doit être accessible côté serveur | SÉCURITÉ |
| INV-79-02 | Aucun upload non scellé ne doit persister | PROBATOIRE |
| INV-79-03 | Aucune modification ultérieure du fichier original ne doit être possible | INTÉGRITÉ |
| INV-79-04 | Aucun effacement silencieux ne doit être autorisé | TRAÇABILITÉ |
| INV-79-05 | Chaque preuve doit être traçable indépendamment de la plateforme | PORTABILITÉ |
| INV-79-06 | Le scellement doit être complété en moins d'1 seconde | PERFORMANCE |
8. Tensions identifiées (arbitrages requis)¶
8.1 Rapidité vs profondeur d'analyse¶
| Aspect | Contrainte |
|---|---|
| Besoin | Scellement immédiat (< 1s) |
| Risque | Analyse antivirus complète peut prendre > 1s |
| Arbitrage proposé | Analyse légère synchrone + analyse complète asynchrone |
8.2 Confidentialité vs supervision parentale¶
| Aspect | Contrainte |
|---|---|
| Besoin | Mineur protégé, preuve sensible |
| Besoin concurrent | Parent responsable légal, droit de regard |
| Arbitrage proposé | Accès parent journalisé, notification au mineur |
8.3 Taille des fichiers vs usage réel¶
| Aspect | Contrainte |
|---|---|
| Besoin | Vidéos potentiellement volumineuses |
| Contrainte | Limite 100 Mo imposée |
| Arbitrage proposé | Upload multipart pour fichiers > 100 Mo (future US) |
9. Résultats attendus¶
À l'issue de l'appel POST réussi :
- ✅ Statut clair (201 Created ou erreur motivée)
- ✅ Identifiant unique de preuve
- ✅ Confirmation de scellement avec hash
- ✅ Disponibilité immédiate dans le coffre
10. Résultats inacceptables¶
- ❌ Upload accepté sans scellement
- ❌ Scellement différé sans traçabilité
- ❌ Fichier modifiable après dépôt
- ❌ Absence d'horodatage certifié
- ❌ Absence de journalisation append-only
- ❌ Délai de scellement > 1 seconde
11. Dépendances identifiées¶
| Story | Module | Type | Description |
|---|---|---|---|
| PD-60 | Document | EXTENSION | Réutilisation complète du moteur probatoire |
| PD-31 | Audit Log | Transitive (via PD-60) | Journal append-only, hash chain |
| PD-38 | Crypto | Transitive (via PD-60) | Hash probatoire SHA-3 |
| PD-43 | Storage | Transitive (via PD-60) | Upload S3, streaming |
PD-60 est la dépendance principale. PD-79 ne crée pas de nouveau moteur probatoire mais configure une nouvelle catégorie dans le système existant.
12. Enjeux stratégiques¶
Cette user story est structurante car elle :
- Concrétise l'offre B2C-MINEURS
- Rend ProbatioVault utilisable en situation d'urgence
- Donne une valeur probatoire immédiate
- Renforce la crédibilité face aux cas de harcèlement
Elle constitue un point d'entrée stratégique pour la phase 2026–2027.
13. Synthèse finale¶
PD-79 configure une catégorie documentaire
B2C_EVIDENCE_MINORdans le moteur probatoire existant (PD-60), permettant de déposer des preuves numériques sensibles (images, audio, vidéo) avec validation de format, scellement immédiat (< 1s), et garantie de recevabilité future.Positionnement stratégique : ProbatioVault reste une infrastructure neutre de preuve. La catégorie B2C mineur n'implique aucun régime probatoire différent, aucune qualification juridique, aucun signalement automatique.
Validation PO¶
| Critère | Status |
|---|---|
| Clarifications complètes | ✅ |
| Décision architecturale validée | ✅ (réutilisation PD-60) |
| Positionnement stratégique | ✅ (neutralité) |
| Validation finale | ✅ (2026-02-16) |