Skip to content

Feat/annuaire : migration du csv source de la configuration client vers du yaml#573

Open
issam71100 wants to merge 31 commits into
mainfrom
feat/annuaire/migrate-source-to-yaml
Open

Feat/annuaire : migration du csv source de la configuration client vers du yaml#573
issam71100 wants to merge 31 commits into
mainfrom
feat/annuaire/migrate-source-to-yaml

Conversation

@issam71100
Copy link
Copy Markdown
Contributor

@issam71100 issam71100 commented May 11, 2026

🔎 Détails

Cette PR migre la source de données de l'annuaire des clients depuis la configuration CSV (rabbitmq.clients-configuration.csv) vers un fichier YAML (values.yaml).

Objectifs :

  • Améliorer la lisibilité, l'évolutivité et la maintenabilité de la configuration des clients.
  • Permettre la surcharge du chemin du fichier via la variable d'environnement VALUES_DIR (facilitation des déploiements multi-environnements).

Principaux changements :

  • Suppression de tout le support CSV (parse_csv, select_columns, csv.DictReader).
  • Ajout du parsing YAML avec validation stricte de la structure attendue (annuaire.clients).
  • Table de mapping TOPOLOGY_TO_LEGACY_KEY pour préserver les clés legacy (P: 15-15, P: 15-smur, etc.).
  • Refonte complète des tests unitaires avec fixture YAML dédiée (fixtures/topology.yaml), couvrant les cas nominaux et les cas d'erreur.
  • Ajout de la dépendance PyYAML==6.0.2.

📄 Documentation

Structure YAML attendue (values.yaml) :

clients:
  - client_id: fr.health.samu750
    editor: Editeur A
    lrmPerimeterVersions: ["2.1"]
    cisuPerimeterVersions: ["1.9"]
    directCISU: false
  - client_id: fr.health.smur
    editor: Editeur B
    smurPerimeterVersions: ["1.7"]
    directCISU: false
  • Chemin par défaut : /config/topology/values.yaml
  • Surcharge possible via la variable d'environnement : VALUES_DIR=/mon/chemin
  • Exemple complet disponible dans : tools/annuaire/fixtures/topology.yaml

📸 Captures d'écran

image

🔗 Ticket associé

Migrer la lecture de la configuration : du CSV vers le fichier YAML de topologie

@issam71100 issam71100 changed the title Feat/annuaire/migrate source to yaml Feat/annuaire : migration du csv source vers du yaml May 12, 2026
@issam71100 issam71100 marked this pull request as ready for review May 13, 2026 09:35
@issam71100 issam71100 changed the title Feat/annuaire : migration du csv source vers du yaml Feat/annuaire : migration du csv source de la configuration client vers du yaml May 13, 2026
Comment thread tools/annuaire/annuaire.py Outdated
]
VALUES_DEFAULT_DIR = "/config/topology"
VALUES_FILENAME = "values.yaml"
VALUES_PATH = os.path.join(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Est ce qu'on ne pourrait pas passer le chemin entier ? Pour voir plus de controle dessus via une variable d'environnement et créer un comportement local plus souple ?

def setUp(self):
self.tempdir = tempfile.TemporaryDirectory()
self.csv_path = os.path.join(self.tempdir.name, CSV_FILENAME)
self._write_temp_csv(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Le yaml qui a remplacé la fixture couvre-t-il les mêmes cas métier qu'auparavent ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ce ne sont pas les mêmes clients et la configuration associée pour chaque notamment.

Comment thread tools/annuaire/test_annuaire.py Outdated
]
)
self.values_path = os.path.join(self.tempdir.name, "values.yaml")
shutil.copy(FIXTURE_PATH, self.values_path)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On ne peut pas juste référencer un fichier de fixture via la variable d'environnement spécialement pour les tests ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants