Commit 4d5bac07 authored by Anthony Gautreau's avatar Anthony Gautreau
Browse files

Correction de docs

parent 41afcf7c
Loading
Loading
Loading
Loading
+33 −31
Changes for README.md: 33 added lines, 31 removed lines.
Original line number Diff line number Diff line
@@ -47,38 +47,13 @@ unicaen_referentiel:
    max_destructive_ratio: 0.3
```

## Organisation du code

```
src/
├── UnicaenReferentielBundle.php, DependencyInjection/   # câblage Symfony
├── Command/SyncReferenceDataCommand.php                 # la commande console
├── DataFileLoader.php      # lit un fichier YAML, JSON ou PHP
├── SyncException.php       # tous les messages d'erreur, en constructeurs nommés
├── Config/                 # ce que le fichier déclare
│   ├── ConfigParser.php    #   analyse l'en-tête "synchronisation:" et en refuse les formes invalides
│   ├── SyncConfiguration.php
│   ├── IdentifierField.php, FieldDefinition.php, FieldPolicy.php, MissingItemPolicy.php
└── Sync/                   # ce que le moteur en fait
    ├── ReferenceDataSynchronizer.php  # orchestration, le déroulé se lit d'un bloc
    ├── MappingValidator.php           #   la déclaration correspond-elle au mapping Doctrine ?
    ├── ItemIndexer.php                #   les items, rangés par identifiant
    ├── RelationResolver.php           #   identifiants naturels → entités liées, préchargées
    ├── EntityWriter.php               #   création et mise à jour d'une entité
    ├── MissingItemsHandler.php        #   lignes disparues du fichier, et garde-fou destructif
    └── SyncResult.php
```

Une synchronisation valide d'abord tout ce qui peut l'être, précharge ensuite les
entités liées, et n'écrit qu'en dernier, en un seul flush.

## Usage

```bash
# Synchroniser tous les fichiers du répertoire de données
bin/console unicaen:referentiel:sync

# Un fichier précis, en simulation (affiche le détail sans rien écrire)
# Un fichier précis, en simulation (joué puis annulé, rien n'est conservé)
bin/console unicaen:referentiel:sync odf_type_evaluation --dry-run
```

@@ -212,8 +187,35 @@ return [
- **Validation avant écriture** : entité et champs vérifiés contre le mapping
  Doctrine, clés inconnues refusées, doublons d'identifiant refusés. Toute
  erreur interrompt la synchronisation avant la moindre écriture.
- **Garde-fou destructif** : si plus de 30 % des éléments existants devaient
  être désactivés/supprimés (fichier tronqué par erreur), la commande refuse
  sans `--force`.
- **`--dry-run`** : affiche le rapport détaillé (créés / mis à jour / etc.)
  sans écrire en base.
- **Garde-fou destructif** : si la part des lignes qui seraient désactivées ou
  supprimées dépasse `max_destructive_ratio` (30 % par défaut), la commande refuse
  sans `--force`. Un fichier tronqué par erreur ne vide donc pas la table.
- **Atomicité** : tous les fichiers d'une même exécution passent dans une seule
  transaction, l'échec de l'un annule les précédents.
- **`--dry-run`** : joue la synchronisation puis annule la transaction, et affiche
  le détail élément par élément. Rien n'est conservé.

## Organisation du code

```
src/
├── UnicaenReferentielBundle.php, DependencyInjection/   # câblage Symfony
├── Command/SyncReferenceDataCommand.php                 # la commande console
├── DataFileLoader.php      # lit un fichier YAML, JSON ou PHP
├── SyncException.php       # tous les messages d'erreur, en constructeurs nommés
├── Config/                 # ce que le fichier déclare
│   ├── ConfigParser.php    #   analyse l'en-tête "synchronisation:" et en refuse les formes invalides
│   ├── SyncConfiguration.php
│   ├── IdentifierField.php, FieldDefinition.php, FieldPolicy.php, MissingItemPolicy.php
└── Sync/                   # ce que le moteur en fait
    ├── ReferenceDataSynchronizer.php  # orchestration, le déroulé se lit d'un bloc
    ├── MappingValidator.php           #   la déclaration correspond-elle au mapping Doctrine ?
    ├── ItemIndexer.php                #   les items, rangés par identifiant
    ├── RelationResolver.php           #   identifiants naturels → entités liées, préchargées
    ├── EntityWriter.php               #   création et mise à jour d'une entité
    ├── MissingItemsHandler.php        #   lignes disparues du fichier, et garde-fou destructif
    └── SyncResult.php
```

Une synchronisation valide d'abord tout ce qui peut l'être, précharge ensuite les
entités liées, et n'écrit qu'en dernier, en un seul flush.