Files
archicratie-edition/docs/FEATURE-PROPOSER.md
Archicratia b78eb4fc7b
All checks were successful
CI / build-and-anchors (push) Successful in 1m52s
SMOKE / smoke (push) Successful in 11s
docs: normalisation md + diagnostics dedup + LEGACY strict
2026-02-02 12:08:53 +01:00

1.8 KiB
Raw Blame History

FEATURE — “Proposer” (édition par paragraphe → issue Gitea)

Dernière mise à jour : 2026-02-01

Cette feature permet à un lecteur de proposer une correction/amélioration dun paragraphe, en générant une issue pré-remplie dans Gitea.


0) Objectif fonctionnel

Depuis une page chapitre :

  1. clic sur Proposer sur un paragraphe
  2. choix #1 (type)
  3. choix #2 (state/catégorie selon UI)
  4. ouverture dun seul onglet vers Gitea : /issues/new?...
  5. issue pré-remplie avec :
    • chemin / URL / ancre
    • texte actuel (citation)
    • champs “Proposition / Justification”
  6. lutilisateur valide, et le runner/CI traite.

1) Dépendances de configuration (critique)

Le lien Gitea est construit à partir de variables publiques injectées au build Astro :

  • PUBLIC_GITEA_BASE (ex: https://gitea.archicratie.trans-hands.synology.me)
  • PUBLIC_GITEA_OWNER (casse sensible, ex: Archicratia)
  • PUBLIC_GITEA_REPO (ex: archicratie-edition)

Symptômes si mauvais

  • mauvais repo → 404
  • redirect login inattendu
  • création dissues impossible

2) Contrat “une seule ouverture donglet”

Le flow ne doit jamais ouvrir deux onglets.

Contrat

  • pas de window.open(...)
  • un seul a.target="_blank" (ou équivalent) déclenché
  • sur click : handler doit neutraliser les propagations parasites

Diagnostic (canonique)

Le diagnostic détaillé est centralisé dans docs/TROUBLESHOOTING.md pour éviter les doublons.

  • 404 / non autorisé / redirect login :

    • voir : TROUBLESHOOTING.md#proposer-404
    • cause la plus fréquente : PUBLIC_GITEA_OWNER/REPO faux (souvent casse)
  • Double onglet :

    • voir : TROUBLESHOOTING.md#proposer-double-onglet
    • cause la plus fréquente : double handler (bubbling) ou window.open + a.click()