Files
gitea-dashboard/docs/technical/decisions.md
2026-03-11 04:30:07 +01:00

3.4 KiB

Architecture Decision Records — gitea-dashboard

ADR-001 : Stack Python + requests + rich

Date : 2026-03-10 Statut : accepte

Contexte : Besoin d'un outil CLI de dashboard pour Gitea. Choix du langage et des librairies.

Decision : Python avec requests pour les appels API et rich pour le formatage terminal.

Consequences :

  • Stack simple et maitrisee par l'utilisateur
  • Pas de framework CLI lourd (argparse suffit si besoin)
  • rich offre des tableaux et couleurs sans configuration complexe
  • Dependance a requests (pas de client async, acceptable pour un affichage unique)

ADR-002 : 4 modules maximum (client, collector, display, cli)

Date : 2026-03-10 Statut : accepte

Contexte : Definir la granularite des modules Python pour un projet simple (dashboard CLI).

Decision : Limiter a 4 modules avec des responsabilites claires : client.py (API), collector.py (agregation), display.py (formatage), cli.py (entree).

Consequences :

  • Separation des responsabilites sans over-engineering
  • Chaque module est testable independamment
  • Un fichier = une responsabilite = un jeu de tests
  • Si le projet grandit, chaque module peut evoluer independamment

ADR-003 : Pas de parallelisation en v1

Date : 2026-03-10 Statut : accepte

Contexte : La collecte de donnees necessite N appels par repo (release + milestones). La parallelisation (ThreadPoolExecutor) est possible mais ajoute de la complexite.

Decision : V1 en sequentiel. La parallelisation est differee a v1.1+.

Consequences :

  • Code plus simple a ecrire, deboguer et tester
  • Temps de reponse acceptable pour < 20 repos (estimee < 10s)
  • Pas de problemes de concurrence
  • Facile a ajouter plus tard sans changer les interfaces (le collecteur est le seul point d'appel)

ADR-004 : Argparse pour le parsing CLI (v1.1.0)

Date : 2026-03-11 Statut : accepte

Contexte : La v1.1.0 introduit des options CLI (--repo, --exclude). Un parser d'arguments est necessaire. Trois options : argparse (stdlib), click, typer.

Decision : Utiliser argparse (stdlib Python). Pas de dependance externe pour le parsing CLI.

Consequences :

  • Zero nouvelle dependance (argparse est dans la stdlib)
  • Coherent avec ADR-001 (stack simple, pas de framework lourd)
  • --help genere automatiquement
  • Suffisant pour des options simples (repeatable flags)
  • Si les options deviennent complexes (sous-commandes, autocompletion), migration vers click/typer sera possible

ADR-005 : Filtrage par sous-chaine dans le collecteur (v1.1.0)

Date : 2026-03-11 Statut : accepte

Contexte : Le filtrage des repos peut etre fait dans le CLI (apres collecte) ou dans le collecteur (pendant la collecte). Le filtrage par regex est plus puissant mais plus complexe que la sous-chaine.

Decision : Filtrage par sous-chaine (insensible a la casse) dans collect_all(). Ordre : include d'abord, exclude ensuite.

Consequences :

  • Le collecteur reste le seul responsable de "quels repos collecter"
  • Le CLI reste un simple orchestrateur (ADR-002 respecte)
  • Retrocompatible : les nouveaux parametres ont des valeurs par defaut None
  • Sous-chaine est intuitive pour l'utilisateur (pas besoin de connaitre les regex)
  • Le filtrage est post-fetch car l'API Gitea ne supporte pas le filtre par nom