Files
ben-to/scripts/github/create-backlog-prod-issues.sh
2026-07-21 16:50:58 +02:00

167 lines
6.5 KiB
Bash
Executable File
Raw Permalink 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.
#!/usr/bin/env bash
# Crée les issues GitHub du plan « Backlog GitHub, domaines et suite prod »
# si aucune issue ouverte du même titre nexiste déjà.
# Prérequis : GitHub CLI (`gh`) authentifié, `jq` installé.
set -euo pipefail
REPO="${1:-kazerlelutin/ben-to}"
issue_exists() {
local title="$1"
local n
n="$(gh issue list -R "$REPO" --state open --limit 500 --json title | jq --arg t "$title" '[.[] | select(.title == $t)] | length')"
[[ "${n:-0}" -gt 0 ]]
}
create_if_absent() {
local title="$1"
local body_file="$2"
if issue_exists "$title"; then
echo "SKIP (déjà ouvert): $title"
return 0
fi
gh issue create -R "$REPO" -t "$title" -F "$body_file" -l enhancement
echo "OK: $title"
}
TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
# --- Meta audit ---
cat >"$TMP/meta.md" <<'EOF'
## Synthèse audit backlog (scripts/github/BACKLOG-AUDIT.md)
Voir le fichier **BACKLOG-AUDIT.md** dans `scripts/github/` du dépôt pour le tableau détaillé des issues #1#6 et larchitecture `app` / `book` / contenus (`ressources/`).
**Résumé :** #1 et #2 fermées ; #3#6 ouvertes — interprétation : builder et CI largement avancés côté code ; PocketBase à reclarifier ; delivery mobile à compléter (signing / Gradle).
Prochaine étape : traiter les nouvelles issues « API assets » et « Play » créées par le même plan.
EOF
create_if_absent "[Meta] Audit backlog prod — avril 2026" "$TMP/meta.md"
# --- API / assets ---
cat >"$TMP/api-bases.md" <<'EOF'
## Contexte
Recettes et sprites sont **versionnés dans le dépôt** (`ressources/bentext`, `ressources/public/ingredient-sprites.bentext`). Il manque encore des tuiles cohérentes pour certaines bases canoniques.
## À faire
- Fournir ou ajuster les **sprites / alias** pour les bases : **mandu**, **dan bing**, **muffin**, **madeleine** (même pipeline que les autres bases dans le catalogue).
- Vérifier que `ingredient-sprites.bentext` et `npm run pipeline:recipes` reflètent les slugs / alias attendus.
## Critères
- Les bases concernées affichent une icône correcte dans le builder après `npm run pipeline:recipes`.
EOF
create_if_absent "Catalogue — icônes bases manquantes (mandu, dan bing, muffin, madeleine)" "$TMP/api-bases.md"
cat >"$TMP/api-variants.md" <<'EOF'
## Contexte
Le catalogue expose de nombreuses variantes ; les icônes dingrédients / tuiles doivent être cohérentes pour toutes.
## À faire
- Inventaire dans le dépôt des variantes / alias dingrédients nécessitant une entrée dans `ingredient-sprites.bentext`.
- Couvrir **toutes les variantes** ou documenter une **règle de fallback** (placeholder, sprite générique) lorsque aucune tuile ne correspond.
## Critères
- Aucune variante « cassée » visuellement dans le builder ; fallback explicite documenté.
EOF
create_if_absent "Catalogue — icônes pour toutes les variantes (+ fallback)" "$TMP/api-variants.md"
cat >"$TMP/placeholders.md" <<'EOF'
## Contexte
Certaines recettes nont pas encore de visuel final ; le build gère déjà des placeholders (`ressources/recipe-placeholder-covers`, logique dans `scripts/build-recipes.mjs`).
## À faire
- Définir la **convention** (nommage, par locale ou unique) pour les couvertures manquantes.
- Produire / brancher les **placeholders** dans le dépôt pour toutes les recettes sans image finale.
## Critères
- Build sans trou visuel critique ; liste des recettes encore en placeholder documentée.
EOF
create_if_absent "Assets — placeholders couvertures recettes manquantes" "$TMP/placeholders.md"
# --- Play / Android ---
cat >"$TMP/play-account.md" <<'EOF'
## À faire
- Créer le **compte développeur Google Play** (frais denregistrement one-shot).
- Accepter les accords distributeur ; définir pays / zones de distribution.
## Références
- `appId` : `com.kazerlelutin.bento` (`apps/mobile/capacitor.config.ts`).
EOF
create_if_absent "Play Store — compte développeur Google Play" "$TMP/play-account.md"
cat >"$TMP/play-listing.md" <<'EOF'
## À faire
- Fiche **Play Console** : nom, descriptions courte/longue, captures d’écran, icône haute résolution.
- **Classification du contenu** (questionnaire Play).
- Alignement avec la marque **Bento** / Ben-to.
## Package
- `com.kazerlelutin.bento` — vérifier cohérence avec la fiche avant publication.
EOF
create_if_absent "Play Store — fiche produit (captures, descriptions, classement)" "$TMP/play-listing.md"
cat >"$TMP/play-privacy.md" <<'EOF'
## À faire
- Publier une **URL HTTPS** de politique de confidentialité (obligatoire Play).
- Cohérence avec les mentions légales / confidentialité de lapp (`packages/shared/i18n`, pages statiques).
## Notes
- Peut être servie depuis `ben-to.fr` (domaine apex de lapp) ou autre sous-domaine stable.
EOF
create_if_absent "Play Store — URL politique de confidentialité (HTTPS)" "$TMP/play-privacy.md"
cat >"$TMP/play-data-safety.md" <<'EOF'
## À faire
- Remplir le formulaire **Data safety** (données collectées, partagées, chiffrement, etc.).
- Aligner sur le comportement réel : stockage local (constructeur), catalogue embarqué, mesure daudience optionnelle (Matomo).
## Fichiers utiles
- `apps/web/index.html`, `apps/web/src/infra/analytics.ts`
EOF
create_if_absent "Play Store — déclaration Data safety" "$TMP/play-data-safety.md"
cat >"$TMP/play-signing.md" <<'EOF'
## À faire
- **Keystore** upload / **Play App Signing**.
- Pipeline **AAB** (`bundleRelease`) — aujourdhui `.github/workflows/mobile-release.yml` ne fait quun placeholder après `mobile:sync`.
## Critères
- Documenter release locale (Android Studio) ou CI avec secrets (`KEYSTORE_*`, etc.).
EOF
create_if_absent "Android — signature release + CI (remplacer placeholder mobile-release)" "$TMP/play-signing.md"
# --- Optionnel (regroupement plan §4) ---
cat >"$TMP/optional-infra.md" <<'EOF'
## Périmètre (optionnel / dette)
- **i18n** : formulations `ben-to.fr` vs `book.ben-to.fr` dans `packages/shared/i18n/src/dictionary.ts` (depuis la migration vers le domaine apex, lapp nest plus servie sur `app.ben-to.fr`).
- **CORS** : pertinent seulement si un jour le catalogue ou des assets sont chargés en runtime depuis un autre domaine (hors périmètre actuel : tout est embarqué au build).
- **Redirects** : migration utilisateurs `ben-to.fr` → `book.ben-to.fr` (SEO, signets).
- **Matomo** : si activation du tracker complet → bandeau cookies + mise à jour privacy.
Découper en sous-tickets si besoin.
EOF
create_if_absent "Tech — i18n domaines, CORS bentext runtime, redirects book, Matomo/cookies" "$TMP/optional-infra.md"
echo "Terminé."