**Motivations:** - Add new features and fixes for userwallet application - Update documentation for pairing, login state machine, and sync - Add new utilities for bloom filters, nonce store, and contract versioning - Fix mempool websocket offline issues **Root causes:** - N/A (feature additions and improvements) **Correctifs:** - Fix mempool websocket offline handling - Update ESLint configuration **Evolutions:** - Add login state machine service and hook - Add sync loop service - Add bloom filter utilities for anti-replay and state visibility - Add nonce store and contract version utilities - Update pairing confirmation and graph resolver services - Add new documentation for features and fixes - Update userwallet components (LoginScreen, SyncScreen) - Update types for contract, identity, and messages **Pages affectées:** - userwallet/src/components/LoginScreen.tsx - userwallet/src/components/SyncScreen.tsx - userwallet/src/hooks/useChannel.ts - userwallet/src/hooks/useLoginStateMachine.ts (new) - userwallet/src/services/graphResolver.ts - userwallet/src/services/pairingConfirm.ts - userwallet/src/services/syncService.ts - userwallet/src/services/syncLoop.ts (new) - userwallet/src/services/loginStateMachine.ts (new) - userwallet/src/types/contract.ts - userwallet/src/types/identity.ts - userwallet/src/types/message.ts - userwallet/src/utils/canonical.ts - userwallet/src/utils/identity.ts - userwallet/src/utils/indexedDbStorage.ts - userwallet/src/utils/relay.ts - userwallet/src/utils/verification.ts - userwallet/src/utils/bloom.ts (new) - userwallet/src/utils/contractVersion.ts (new) - userwallet/src/utils/nonceStore.ts (new) - userwallet/eslint.config.mjs - userwallet/package.json - userwallet/package-lock.json - userwallet/docs/synthese.md - userwallet/docs/specs-champs-obligatoires-cnil.md (new) - api-relay/README.md - features/userwallet-pairing-words-only-finalise.md - features/userwallet-anti-rejeu-etats-visibles-bloom.md (new) - features/userwallet-bloom-usage-sync.md (new) - features/userwallet-contrat-login-reste-a-faire.md (new) - features/userwallet-ecrans-login-a-valider.md (new) - features/userwallet-eslint-fix.md (new) - features/userwallet-login-state-machine.md (new) - features/userwallet-validation-conformite.md (new) - fixKnowledge/mempool-websocket-offline-fix.md (new) - mempool (submodule) - hash_list.txt - hash_list_cache.txt
89 lines
3.4 KiB
Markdown
89 lines
3.4 KiB
Markdown
# Complément de specs – Champs obligatoires et attributs CNIL
|
||
|
||
**Author:** Équipe 4NK
|
||
**Date:** 2026-01-26
|
||
|
||
Référence : `specs.md` (Contrat, Champ, MessageBase, DataJson).
|
||
|
||
---
|
||
|
||
## 1. Champs obligatoires des contrats
|
||
|
||
Tous les contrats ont **certains** des champs (objets `Champ`) suivants. Chaque type correspond à un usage métier précis ; un contrat donné en possède un sous-ensemble selon le contexte.
|
||
|
||
| Type de Champ | Description |
|
||
|---------------|-------------|
|
||
| Partage avec les institutions | Champ dédié au partage de données avec des institutions |
|
||
| Messages au RSSI | Messages au RSSI de la société responsable du service |
|
||
| Messages au Correspondant CNIL | Messages au Correspondant CNIL de la société responsable du service |
|
||
| Messages au Responsable cybersécurité | Messages au Responsable cybersécurité au bord de la société responsable du service |
|
||
| Messages de support infogérant | Messages de support de l’infogérant du service |
|
||
| Messages de support administrateur système | Messages de support de l’administrateur système du service |
|
||
| Messages de support niveau 1 | Messages de support de niveau 1 du service |
|
||
| Messages de support niveau 2 | Messages de support de niveau 2 du service |
|
||
| Messages de support niveau 3 | Messages de support de niveau 3 du service |
|
||
|
||
- Les `Champ` sont des `MessageAValider` avec `contrats_parents_uuid` (au moins 1).
|
||
- L’identification du type (partage, RSSI, CNIL, cybersécurité, support N1/N2/N3, etc.) se fait via `types.types_names_chiffres` / `types_uuid` ou via des métadonnées dans `datajson`, selon les conventions du catalogue.
|
||
|
||
---
|
||
|
||
## 2. Attributs CNIL dans `datajson`
|
||
|
||
Pour les objets concernés (ex. contrats, champs), la partie **`datajson`** peut contenir des attributs **CNIL** supplémentaires. Ceux-ci sont optionnels au sens du schéma de base mais requis pour la conformité CNIL lorsqu’ils s’appliquent.
|
||
|
||
### 2.1 Usage et partage avec les tiers
|
||
|
||
- **Raisons de l’usage avec les tiers et description du tiers**
|
||
Tableau de couples `[raisons, tiers]` : pour chaque usage avec un tiers, les raisons et la description du tiers.
|
||
- **Raisons du partage avec les tiers et description du tiers**
|
||
Tableau de couples `[raisons, tiers]` : pour chaque partage avec un tiers, les raisons et la description du tiers.
|
||
|
||
Structure suggérée (à préciser dans le catalogue) :
|
||
|
||
```json
|
||
{
|
||
"raisons_usage_tiers": [
|
||
{ "raisons": ["…"], "tiers": "…" }
|
||
],
|
||
"raisons_partage_tiers": [
|
||
{ "raisons": ["…"], "tiers": "…" }
|
||
]
|
||
}
|
||
```
|
||
|
||
### 2.2 Conditions de conservation
|
||
|
||
- **Conditions de conservation**
|
||
Objet JSON contenant **au moins** le **délai d’expiration** (durée de conservation des données).
|
||
|
||
Exemple :
|
||
|
||
```json
|
||
{
|
||
"conditions_conservation": {
|
||
"delai_expiration": "P1Y",
|
||
"unite": "annees"
|
||
}
|
||
}
|
||
```
|
||
|
||
(`P1Y` : ISO 8601 duration, ou équivalent selon le catalogue.)
|
||
|
||
---
|
||
|
||
## 3. Synthèse
|
||
|
||
| Domaine | Contenu |
|
||
|--------|---------|
|
||
| Champs obligatoires | Sous-ensemble des 9 types (partage, RSSI, CNIL, cybersécurité, support infogérant / admin / N1 / N2 / N3) selon le contrat |
|
||
| `datajson` CNIL | `raisons_usage_tiers`, `raisons_partage_tiers` (tableaux [raisons, tiers]) ; `conditions_conservation` (JSON avec au moins `delai_expiration`) |
|
||
|
||
---
|
||
|
||
## 4. Références
|
||
|
||
- `userwallet/docs/specs.md` (MessageBase, DataJson, Champ, Contrat)
|
||
- `userwallet/src/types/message.ts` (DataJson)
|
||
- `userwallet/src/types/contract.ts` (Champ)
|