Consigne l'état de fin de journée du 2026-09-16 (déploiement réel, bugs corrigés, DA en cours)

This commit is contained in:
2026-09-18 08:51:46 +02:00
parent 4f31e98079
commit 2dd0db54c8
2 changed files with 48 additions and 9 deletions
+11 -9
View File
@@ -181,16 +181,18 @@ Comme les invités uploadent des photos pouvant contenir des visages d'autres pe
## 📦 7. Livrables attendus du développeur ## 📦 7. Livrables attendus du développeur
État au 2026-09-15 (fin de journée) — voir `docs/decisions.md` pour les décisions actées et le SQL complet dans `supabase/migrations/`. État au 2026-09-16 (fin de journée) — voir `docs/decisions.md` pour les décisions actées et le SQL complet dans `supabase/migrations/`.
- [x] Page publique d'upload (`/e/{slug}`) — code écrit (`src/e/`), compression + HEIC + gestion d'erreurs. **Non testée en navigateur réel** (pas de projet Supabase live pour l'instant). - [x] Page publique d'upload (`/e/{slug}`) — **déployée et testée en réel** sur `https://photobooth.assistantaikev.eu/e/{slug}`, upload confirmé depuis un vrai téléphone.
- [x] Page admin galerie + export ZIP (`/admin/{slug}?token=...`) — code écrit (`src/admin/gallery/`), consomme l'Edge Function `admin-gallery`. **Non testée en réel**, dépend de l'Edge Function ci-dessous. - [x] Page admin galerie + export ZIP (`/admin/{slug}?token=...`) — **déployée et testée en réel**, ZIP en streaming fonctionnel.
- [x] Génération du QR code (export PNG/SVG imprimable) — code écrit (`src/admin/qrcode/`), page démo utilisable dès maintenant. - [x] Génération du QR code (export PNG/SVG imprimable) — déployée (`/admin/qrcode/`), + carton imprimable A5 bonus (`/admin/print-template/`).
- [ ] Schéma Supabase (tables `pq_events`/`pq_photos` + RLS + policies Storage) — **SQL écrit et relu (sécurité OK après corrections), PAS ENCORE APPLIQUÉ**. En attente de validation finale de Kévin avant `apply_migration`. - [x] Schéma Supabase (schéma dédié `photobooth`, jamais exposé via PostgREST, accès via fonctions `SECURITY DEFINER`) — **appliqué et vérifié** sur le projet définitif `kevin-lecou-hub`.
- [x] Compression image côté client avant upload — `browser-image-compression`, intégrée dans `src/e/upload.js`. - [x] Compression image côté client avant upload — `browser-image-compression`, testée en conditions réelles.
- [x] Gestion de l'expiration (statut événement, blocage upload, suppression J+7) — blocage upload prêt côté schéma (`event_accepts_uploads`) ; job SQL `pq_expire_events` (pg_cron) écrit. **Reste ouvert** : mécanisme de déclenchement de la suppression des fichiers Storage (pg_net vs n8n, cf. `docs/decisions.md`) — à trancher avant implémentation. - [x] Gestion de l'expiration — blocage upload actif, job SQL `pq_expire_events``expire_events` (pg_cron) actif et vérifié planifié. Purge des fichiers Storage : Edge Function `expire-events` déployée et testée manuellement ; **déclenchement automatique (workflow n8n) créé mais pas encore activé** (credentials à finaliser côté Kévin).
- [x] Mention RGPD intégrée sur la page upload — texte de `docs/rgpd.md` repris verbatim. - [x] Mention RGPD — déplacée d'un bloc permanent vers une modale de bienvenue au 1er passage par événement (demande Kévin), texte légal inchangé, toujours consultable via un lien dédié.
- [x] Edge Function admin (liste photos + ZIP) — code écrit (`supabase/functions/admin-gallery/`), ZIP en streaming. **Non déployée, dépendance `zip.js` non testée en environnement réel** — à vérifier via `supabase functions serve` avant tout déploiement. - [x] Edge Functions admin (`admin-gallery`, `expire-events`) — déployées et testées en réel sur `kevin-lecou-hub`.
- [x] **Nouveau** : limite de photos par invité, réglable par événement (`max_photos_per_guest`), appliquée côté serveur.
- [x] **Nouveau** : 3 passes de direction artistique (palette punchy corail/prune/doré, mode sombre automatique, finition animations/micro-interactions) — DA jugée "pas mal" par Kévin mais **pas encore validée définitivement** (retour direct : "pas encore vraiment fan des couleurs"), itération à poursuivre.
- [ ] Documentation courte : comment créer un nouvel événement manuellement (en attendant l'automatisation n8n en V2) — pas encore rédigée. - [ ] Documentation courte : comment créer un nouvel événement manuellement (en attendant l'automatisation n8n en V2) — pas encore rédigée.
- [ ] Code source versionné (repo Git — **à préciser : GitHub perso de Kévin, ou autre ?** ⚠️ point ouvert) — dépôt local Git existant, pas de remote configuré à ce stade. - [ ] Code source versionné (repo Git — **à préciser : GitHub perso de Kévin, ou autre ?** ⚠️ point ouvert) — dépôt local Git existant, pas de remote configuré à ce stade.
+37
View File
@@ -5,6 +5,43 @@ la date à laquelle elles ont été prises. Toute nouvelle décision structurant
(schéma DB, auth, hébergement, etc.) doit être ajoutée ici après validation (schéma DB, auth, hébergement, etc.) doit être ajoutée ici après validation
par Kévin. par Kévin.
## 2026-09-16 (récap fin de journée)
Produit passé de "code écrit, rien de déployé" à **réellement en ligne et
testé** : `https://photobooth.assistantaikev.eu` (VPS Hostinger, nginx +
Traefik), backend sur le projet Supabase définitif `kevin-lecou-hub`.
- **Bugs réels trouvés et corrigés en cours de route** (tous via tests en
conditions réelles, pas en théorie) :
- MIME type `.mjs` mal servi par nginx (bloquait tout le JS qui importe
un module vendorisé — upload invité ET générateur QR étaient cassés).
- Chemins relatifs (`style.css`, `config.js`, `gallery.js`) cassés sur les
URLs réécrites `/e/<slug>` et `/admin/<slug>` — passage en chemins
absolus partout.
- Bug de cascade CSS présent **depuis le tout premier commit** :
`display: flex` déclaré en dur sur `.upload-form`/`.welcome-modal`
empêchait `hidden` (JS) de masquer quoi que ce soit visuellement — le
formulaire est resté affiché en permanence, superposé aux autres états,
sans que personne ne s'en rende compte avant un test réel.
- Faille d'abus sur `insert_public_photo` (spam de lignes sans upload
réel) — corrigée, vérification d'existence du fichier Storage ajoutée.
- **Nouvelle fonctionnalité** : limite de photos par invité par événement
(`max_photos_per_guest`), appliquée côté serveur via un `guest_id`
anonyme (localStorage) — pas une identité vérifiée, contournable, mais
fait respecter la vraie limite côté base.
- **RGPD** : mention légale déplacée d'un bloc permanent vers une modale de
bienvenue personnalisée (nom de l'événement) au premier passage par
événement — texte légal inchangé, juste la présentation.
- **Direction artistique** : 3 passes (palette sobre → palette punchy
corail/prune/doré/Fraunces → mode sombre + finition animations). Statut
au 2026-09-16 soir : jugée "pas mal, vraiment fonctionnel" par Kévin,
mais **couleurs/DA pas encore validées définitivement** — Kévin prévoit
un retour détaillé à l'agent direction-artistique lors d'une prochaine
session.
- **Reste ouvert** : activation du workflow n8n de purge Storage
(credentials à créer côté Kévin), documentation de création d'un
événement (encore manuel en SQL), remote Git à définir.
## 2026-09-15 ## 2026-09-15
- **Expiration des données** : suppression à **J+7 à partir de la date de - **Expiration des données** : suppression à **J+7 à partir de la date de