Files
archicratie-edition/docs/FEATURE-PROPOSER.md
Archicratia 8b7cfdfd48
All checks were successful
CI / build-and-anchors (push) Successful in 1m45s
SMOKE / smoke (push) Successful in 17s
docs(ops): add triple-source sync + troubleshooting + proposer spec
2026-02-01 14:30:18 +01:00

103 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
### Vérification (NAS)
en sh :
curl -fsS http://127.0.0.1:8082/archicratie/archicrat-ia/chapitre-4/ > /tmp/page.html
grep -n "window.open" /tmp/page.html | head
Doit retourner 0 ligne.
## 3) Diagnostic “trace ouverture onglet” (navigateur)
Dans la console, tu peux surcharger temporairement les mécanismes douverture pour tracer :
si un window.open survient,
ou si un a.click target _blank est appelé.
But : prouver quil ny a quun seul événement douverture.
## 4) URL attendue (forme)
Longlet doit ressembler à :
{PUBLIC_GITEA_BASE}/{OWNER}/{REPO}/issues/new?title=...&body=...
Important : owner et repo doivent être exactement ceux du repo canonique.
## 5) Pré-requis daccès
Lutilisateur doit être loggé sur Gitea pour accéder à /issues/new
Si non loggé : redirect vers /user/login (comportement normal)
## 6) Tests fonctionnels (checklist)
Ouvrir une page chapitre (ex chapitre 4)
Clic Proposer (sur un paragraphe)
Choix 1 puis choix 2
Vérifier :
1 seul onglet
URL du repo correct
formulaire new issue visible
title/body pré-remplis (chemin + ancre + texte actuel)
Créer lissue → vérifier le traitement CI/runner
## 7) Pannes typiques + causes
404 sur issue/new : PUBLIC_GITEA_OWNER/REPO faux (souvent casse)
2 onglets : double handler (bubbling + ouverture multiple)
pas de favicon : cache ou absence dans public/ → rebuild