104 lines
2.7 KiB
Markdown
104 lines
2.7 KiB
Markdown
# 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 d’un 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 d’un seul onglet vers Gitea : `/issues/new?...`
|
||
5) issue pré-remplie avec :
|
||
- chemin / URL / ancre
|
||
- texte actuel (citation)
|
||
- champs “Proposition / Justification”
|
||
6) l’utilisateur 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 d’issues impossible
|
||
|
||
---
|
||
|
||
## 2) Contrat “une seule ouverture d’onglet”
|
||
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 d’ouverture pour tracer :
|
||
|
||
si un window.open survient,
|
||
|
||
ou si un a.click target _blank est appelé.
|
||
|
||
But : prouver qu’il n’y a qu’un seul événement d’ouverture.
|
||
|
||
## 4) URL attendue (forme)
|
||
|
||
L’onglet 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 d’accès
|
||
|
||
L’utilisateur 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 l’issue → 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
|