docs(shared): ajouter documentation complète entités, états et séquences

- Entités: 7 nouveaux schémas (sessions, devices, consents, location-history, interest-gauges, reports, exports)
- États: 5 diagrammes lifecycles (compte, contenu, session, signalement, export)
- Séquences: 6 flows (auth, refresh token, modération, signalement, export, suppression)
- Renommage: modele-global.md → entities-overview.md
- MkDocs: organisation hiérarchique par catégories

Format concis: diagrammes Mermaid + règles essentielles uniquement
This commit is contained in:
jpgiannetti
2026-02-07 21:38:02 +01:00
parent cf7a46be27
commit e63603551d
22 changed files with 1047 additions and 97 deletions

View File

@@ -0,0 +1,39 @@
# Cycle de vie - Contenu
## Diagramme
```mermaid
stateDiagram-v2
[*] --> Draft: Création
Draft --> PendingReview: Soumission (3 premiers contenus)
Draft --> Published: Soumission (si > 3 validés)
PendingReview --> Published: Validation modérateur
PendingReview --> Rejected: Refus modérateur
Published --> Moderated: Signalement validé
Published --> Deleted: Suppression
Rejected --> Draft: Édition corrections
Rejected --> Deleted: Abandon
Moderated --> Published: Appel accepté
Moderated --> Deleted: Suppression définitive
Deleted --> [*]
```
## Règles
| État | Valeur | Description |
|------|--------|-------------|
| Draft | `draft` | Brouillon non visible |
| Pending Review | `pending_review` | Modération préalable (3 premiers, < 48h) |
| Published | `published` | Diffusé et visible |
| Moderated | `moderated` | Retiré après signalement |
| Rejected | `rejected` | Refusé par modération (éditable) |
| Deleted | `deleted` | Supprimé (fichiers conservés 30j) |
**Modération** : Préalable pour 3 premiers contenus, puis a posteriori (signalements)
**Appel** : Possible 7j après moderation

View File

@@ -0,0 +1,38 @@
# Cycle de vie - Export de données
## Diagramme
```mermaid
stateDiagram-v2
[*] --> Pending: Demande export
Pending --> Generating: Worker démarre
Generating --> Ready: Génération OK (< 48h)
Generating --> Failed: Erreur (retry 3x)
Ready --> Downloaded: Téléchargement
Ready --> Expired: Délai 7j écoulé
Downloaded --> Expired: Délai 7j écoulé
Failed --> Pending: Retry manuel
Expired --> [*]
Failed --> [*]
```
## Règles
| État | Valeur | Description |
|------|--------|-------------|
| Pending | `pending` | File d'attente (< 5 min) |
| Generating | `generating` | Worker background actif (< 48h RGPD) |
| Ready | `ready` | Disponible, lien email valide 7j |
| Downloaded | `downloaded` | Téléchargé (reste 7j) |
| Expired | `expired` | Supprimé automatiquement |
| Failed | `failed` | Échec après retry 3x |
**Format** : ZIP (JSON + HTML + audio files)
**Limite** : 1 export/mois
**Sécurité** : URL signée, token unique 7j

View File

@@ -0,0 +1,32 @@
# Cycle de vie - Signalement
## Diagramme
```mermaid
stateDiagram-v2
[*] --> Pending: Signalement créé
Pending --> UnderReview: Prise en charge
Pending --> Duplicate: Doublon détecté
UnderReview --> Actioned: Violation confirmée
UnderReview --> Dismissed: Infondé
Actioned --> [*]
Dismissed --> [*]
Duplicate --> [*]
```
## Règles
| État | Valeur | Description |
|------|--------|-------------|
| Pending | `pending` | En attente (< 48h, < 24h si priorité haute) |
| Under Review | `under_review` | En cours d'examen |
| Actioned | `actioned` | Contenu retiré/modifié + strike |
| Dismissed | `dismissed` | Signalement rejeté |
| Duplicate | `duplicate` | Doublon (même contenu < 7j) |
**Priorité haute** : 3+ signalements ou catégories `hate_speech`, `violence`
**Actions** : Contenu retiré, strike, suspension selon gravité
**Anti-abus** : > 5 dismissed → warning, limite 3 signalements/jour

View File

@@ -0,0 +1,29 @@
# Cycle de vie - Session
## Diagramme
```mermaid
stateDiagram-v2
[*] --> Active: Connexion
Active --> Active: Refresh token
Active --> Expired: Inactivité 30j
Active --> Revoked: Déconnexion manuelle
Active --> Revoked: Changement mot de passe
Active --> Revoked: Replay attack
Expired --> [*]
Revoked --> [*]
```
## Règles
| État | Condition | Description |
|------|-----------|-------------|
| Active | `revoked_at IS NULL` | Access token 15min, Refresh token 30j |
| Expired | `refresh_token_expires_at < NOW()` | Inactivité 30j |
| Revoked | `revoked_at IS NOT NULL` | Révoquée manuellement |
**Rotation** : Refresh token rotatif (nouveau à chaque refresh)
**Sécurité** : Tokens hashés SHA256, révocation globale si replay attack
**Nettoyage** : Suppression sessions expirées/révoquées > 7j/30j

View File

@@ -0,0 +1,31 @@
# Cycle de vie - Compte utilisateur
## Diagramme
```mermaid
stateDiagram-v2
[*] --> Active: Inscription validée
Active --> Suspended: Strikes 3/4/5
Active --> GracePeriod: Demande suppression
Active --> Deleted: Inactivité 5 ans
Suspended --> Active: Fin suspension / Appel
Suspended --> Deleted: Suspension définitive
GracePeriod --> Active: Annulation < 30j
GracePeriod --> Deleted: Après 30j
Deleted --> [*]
```
## Règles
| État | Valeur | Durée/Condition |
|------|--------|-----------------|
| Active | `active` | Compte fonctionnel |
| Suspended | `suspended` | Strike 3: 7j, Strike 4: 30j, Strike 5: définitif |
| Grace Period | `grace_period` | 30j avant suppression, annulable |
| Deleted | `deleted` | Données anonymisées, irréversible |
**Purge inactivité** : 5 ans sans connexion (notifications 90j/30j/7j avant)