first commit

This commit is contained in:
2026-07-21 16:50:58 +02:00
commit 256599626e
407 changed files with 30489 additions and 0 deletions
+166
View File
@@ -0,0 +1,166 @@
#!/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é."