docs(v1.4.0): version plan and ADR

Plan 2 phases : bugfix timeout + config YAML, puis vue milestones + colonnes.
ADR-012 a ADR-015 couvrant degradation gracieuse, config.py, MilestoneData,
et colonnes configurables.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
sylvain
2026-03-13 03:34:55 +01:00
parent 98223e4995
commit a1f613f3d8
3 changed files with 729 additions and 0 deletions

View File

@@ -160,3 +160,9 @@ Decisions cles pour v1.3.0 :
- **ADR-009** : Retry HTTP 429 avec Retry-After dans _get_with_retry
- **ADR-010** : Sanitisation des caracteres de controle dans exporter.py
- **ADR-011** : --health comme commande alternative, pas sous-commande
Decisions cles pour v1.4.0 :
- **ADR-012** : Degradation gracieuse sur timeout dans _get_paginated
- **ADR-013** : Nouveau module config.py pour la configuration YAML
- **ADR-014** : Dataclass MilestoneData pour la vue milestones
- **ADR-015** : Colonnes configurables par inclusion/exclusion

View File

@@ -167,3 +167,62 @@
- Un seul niveau d'arguments
- `--health` est mutuellement exclusif avec le mode dashboard
- Si d'autres modes alternatifs apparaissent, reconsiderer les sous-commandes
## ADR-012 : Degradation gracieuse sur timeout dans _get_paginated (v1.4.0)
**Date** : 2026-03-13
**Statut** : accepte
**Contexte** : Un timeout reseau sur une page intermediaire de la pagination fait crasher tout le collecteur. Le retry existant (ADR-007/ADR-009) retente les requetes individuelles, mais apres epuisement des retries, l'exception remonte et les donnees des pages precedentes sont perdues.
**Decision** : Dans `_get_paginated`, catch les exceptions Timeout apres epuisement des retries uniquement pour les pages > 1. Retourner les donnees collectees jusque-la et emettre un `warnings.warn()`. Si la premiere page echoue, l'exception remonte normalement.
**Consequences** :
- Le dashboard affiche un resultat partiel plutot qu'un crash
- L'utilisateur est informe via un warning
- La premiere page echouee reste un crash clair
- Coherent avec le principe "Gestion gracieuse" de CLAUDE.md
## ADR-013 : Nouveau module config.py pour la configuration YAML (v1.4.0)
**Date** : 2026-03-13
**Statut** : accepte
**Contexte** : L'issue #17 demande un fichier de configuration YAML. La logique (lecture fichier, resolution variables, merge de priorites) est distincte du parsing CLI.
**Decision** : Creer `config.py` comme 7eme module source. Nouvelle dependance PyYAML. Le principe "un module = une responsabilite" de ADR-002 reste respecte.
**Consequences** :
- Separation claire : cli.py parse les args, config.py resout la configuration
- Le module est testable independamment avec des fixtures YAML
- Premiere nouvelle dependance ajoutee au projet (PyYAML)
- Le merge de priorites (CLI > env > config > defaults) est centralise et testable
## ADR-014 : Dataclass MilestoneData pour la vue milestones (v1.4.0)
**Date** : 2026-03-13
**Statut** : accepte
**Contexte** : La vue `--milestones` collecte des milestones de tous les repos. Les milestones de l'API sont des dicts bruts sans reference au repo parent.
**Decision** : Creer un dataclass `MilestoneData` dans collector.py. Collecte avec `state=all` pour afficher l'historique complet.
**Consequences** :
- Coherent avec RepoData : donnees normalisees et documentees
- Le calcul du pourcentage de progression est centralise dans le collecteur
- `state=all` augmente les appels API mais donne une vue complete
## ADR-015 : Colonnes configurables par inclusion/exclusion (v1.4.0)
**Date** : 2026-03-13
**Statut** : accepte
**Contexte** : L'issue #19 demande de pouvoir choisir les colonnes affichees. L'approche actuelle (`--no-desc`) est ad hoc. Un systeme generique est maintenant justifie par le besoin.
**Decision** : Ajouter `--columns` avec syntaxe a virgules. Support inclusion directe et exclusion par prefixe `-`. `--no-desc` reste fonctionnel comme alias.
**Consequences** :
- Remplace l'approche YAGNI de v1.3.0 (maintenant justifie)
- Retrocompatible : `--no-desc` continue de fonctionner
- `--columns help` fournit une aide contextuelle
- Les deux flags combines s'appliquent cumulativement