Admin backoffice : rubriques General/Evenement + videos situation + surprise + rembobinage ruban
- Reorganisation menu admin en 2 rubriques (General / Evenement) - Destinations deplace dans Evenement - Nouveau panneau Videos : upload par situation (montage, depannage, bourrage, rechargement) - Nouveau panneau Surprise : photo/video affichee ~1s avant capture pour provoquer sourire - Toggle rembobinage ruban Mitsubishi (StpiDecklist) pour economiser le ruban sur petits formats - Historique email cloisonne par evenement - Memoire projet consolidee dans memoire.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
139
memoire.md
139
memoire.md
@@ -2,7 +2,7 @@
|
||||
|
||||
## Description
|
||||
Photobooth professionnel pour location evenementielle.
|
||||
RPi4 + ecran tactile + DSLR (gphoto2) + imprimante sublimation.
|
||||
Surface 6 + ecran tactile + DSLR Canon (gphoto2) + imprimante sublimation Mitsubishi.
|
||||
|
||||
## Architecture
|
||||
- **Backend** : Python FastAPI + WebSocket
|
||||
@@ -29,10 +29,141 @@ https://git.copydev.fr/jules/photobooth
|
||||
Phase 1-3 terminees (backend complet + frontend complet).
|
||||
Phase 4 : scripts production (install.sh, start.sh, systemd).
|
||||
|
||||
## Matériel reçu
|
||||
- Imprimante sublimation Mitsubishi (reçue le 2026-05-28)
|
||||
|
||||
## Notes
|
||||
- Projet cree le 2026-03-21
|
||||
- Mode simulation camera si gphoto2 non installe (dev sans DSLR)
|
||||
- Config persistante dans data/config.json
|
||||
|
||||
---
|
||||
|
||||
## Infra & réseau
|
||||
|
||||
### Surface (booth terrain)
|
||||
- IP LAN : 192.168.111.39 (DHCP, sujette à changement)
|
||||
- IP VPN : 10.10.0.2
|
||||
- Accès SSH : `ssh surface` (alias ~/.ssh/config, clé ed25519)
|
||||
- User : `jules`, repo : `~/photobooth`
|
||||
- **Pas de clavier physique** — toute intervention SSH uniquement
|
||||
- Déploiement : pas de systemd (photobooth.service disabled, plante exec 203). Le run = `scripts/kiosk-session.sh` lancé au login LightDM autologin : boucle relance backend + boucle Chromium kiosk. Pour déployer : `git push` depuis dev, puis `kill <pid backend.main>` + `pkill -f 'chromium '` → relance auto avec git pull.
|
||||
- Remote debugging Chromium : port 9222
|
||||
- Kernel linux-surface avec iptsd (tactile), scale-factor=3
|
||||
- `data/config.json` = état runtime (compteur, imprimante) — ne jamais écraser par commit/push depuis dev
|
||||
|
||||
### LXC 111 (booth-manager / galerie)
|
||||
- IP : 192.168.111.211
|
||||
- Accès : `ssh root@192.168.111.10` puis `pct exec 111 -- <cmd>`
|
||||
- Code : `/opt/photobooth/backend/booth_admin.py`
|
||||
- Service : `systemctl restart photobooth`
|
||||
- Héberge : booth.copydev.fr (landing, galerie, admin)
|
||||
|
||||
### WireGuard tunnel
|
||||
- Serveur (LXC 111) : wg0, 10.10.0.1/24, port 51820/UDP, enabled
|
||||
- Client (Surface) : 10.10.0.2/24
|
||||
- Clé publique serveur : `g3s7Gh1Er+LIEI/W91HAVDNIo+gsk/KiajdtoDUQRVo=`
|
||||
- Clé privée client : `uH9lesPtezigCDlB6cSCYy87QFxrtLFWcnwi93/YgXM=`
|
||||
- Clé publique client : `p+yIc+slDkKXnogvvuohbWlF8iapbI4LxJPH1RCaUig=`
|
||||
- Port forward routeur : UDP 51820 → 192.168.111.211
|
||||
|
||||
### Proxmox PVE
|
||||
- IP : 192.168.111.10, accès `ssh root@192.168.111.10`
|
||||
|
||||
### NPM (Nginx Proxy Manager)
|
||||
- IP : 192.168.111.5, port 81
|
||||
- Cert wildcard *.copydev.fr ID #2
|
||||
|
||||
---
|
||||
|
||||
## Règles de conduite Claude
|
||||
|
||||
- **Pas de clavier sur la borne** : ne jamais suggérer Ctrl+R, F5, ou actions clavier. Forcer reload via SSH (port 9222) ou restart lightdm/chromium.
|
||||
- **Pas de confirmation sur la Surface** : PC dédié, aucun risque, exécuter directement les commandes SSH.
|
||||
- **Pas de SSH sauvage** : ne jamais SSH sur des serveurs non demandés sans instruction explicite.
|
||||
|
||||
---
|
||||
|
||||
## Matériel
|
||||
|
||||
### Imprimante sublimation Mitsubishi
|
||||
- Reçue le 2026-05-28
|
||||
- Erreur 03/01/01 sur K60 = papier mal chargé (pas fin de rouleau)
|
||||
|
||||
### Module relais USB HID
|
||||
- Commandé le 2026-06-23, livraison estimée ~2026-07-01
|
||||
- Pour piloter alim secteur Canon (power-cycle PTP freeze) + éclairage booth
|
||||
- Intégration via /dev/hidraw* dans le backend Python
|
||||
|
||||
---
|
||||
|
||||
## UX dépannage novices
|
||||
Utilisateurs finaux = novices (événementiel). Erreurs imprimante : prévoir guides imagés (popup plein écran, étapes numérotées, icônes grandes, pas de codes techniques). Cas : cassette mal insérée, bourrage, fin consommable, câble USB.
|
||||
|
||||
---
|
||||
|
||||
## URGENT — VPN booth en panne (2026-07-04)
|
||||
|
||||
Booth sur WiFi externe, tunnel WG ne connecte pas même après reboot. Dernier handshake : 6+ jours.
|
||||
Cause probable : wg-quick@wg0 pas enabled au boot, ou Endpoint pointe vers IP locale.
|
||||
|
||||
### Procédure fix (clavier USB temporaire)
|
||||
|
||||
1. `sudo systemctl status wg-quick@wg0 && sudo wg show && cat /etc/wireguard/wg0.conf`
|
||||
2. Vérifier Endpoint = `<IP_PUBLIQUE>:51820` (pas 192.168.111.x). IP publique : `curl -s ifconfig.me`
|
||||
3. `sudo systemctl enable wg-quick@wg0 && sudo systemctl restart wg-quick@wg0`
|
||||
4. Installer watchdog + reverse SSH — voir PROCEDURE_VPN_FIX.md
|
||||
|
||||
### Commits non déployés sur Surface
|
||||
- Flash blanc capture + printer toast CSS + admin galerie + compteur copies
|
||||
- Déployer : `cd ~/photobooth && git pull && kill $(pgrep -f 'python -m backend.main')`
|
||||
|
||||
---
|
||||
|
||||
## LXC 111 — booth.copydev.fr (état au 2026-07-04)
|
||||
|
||||
Code sur le serveur : `/opt/photobooth/` (PAS dans le repo git local).
|
||||
Backup local des fichiers modifiés : `lxc111_backup/` dans ce dossier projet.
|
||||
|
||||
### Fichiers modifiés sur LXC 111
|
||||
- `backend/main.py` (1126 lignes) — endpoints galerie + réservation
|
||||
- `backend/booth_admin.py` (808 lignes) — admin panel API + ZIP streaming
|
||||
- `frontend/landing.html` (900 lignes) — page vitrine complète
|
||||
- `frontend/admin.html` (930 lignes) — panel admin avec validation résa
|
||||
- `frontend/gallery.html` (414 lignes) — galerie publique + modal ZIP progress
|
||||
|
||||
### Endpoints ajoutés
|
||||
- `GET /api/disponibilites` → retourne dates réservées (statut "valide" ou "demande")
|
||||
- `POST /api/contact` → crée événement + envoie email admin (pas client). Champs : nom, email, telephone, nom_evenement, type, date, formule, theme, nb_invites, impressions, opt_livraison, message
|
||||
- `POST /api/contact/valider/{event_id}` → passe statut "valide" + envoie email confirmation au client avec URL galerie + code accès
|
||||
|
||||
### Landing page (frontend/landing.html)
|
||||
- Vitrine commerciale booth.copydev.fr, couleur indigo #5c6bc0
|
||||
- 6 cartes prestations (Canon 18Mpx, Mitsubishi sublimation, galerie live, personnalisation, écran tactile, partage)
|
||||
- 3 tarifs : Pack 300 (300€), Pack 600 (450€), Livraison & installation (sur devis)
|
||||
- Formulaire réservation → crée événement auto → email admin
|
||||
- Calendrier dispo : WE = sam+dim (un bloc), semaine = lun→ven (un bloc), même prix. Dates réservées bloquées.
|
||||
- Modal accès galerie (code 4 digits)
|
||||
- Lien admin caché (coin bas-droit, opacity:0 → hover 0.3)
|
||||
|
||||
### Admin panel (frontend/admin.html)
|
||||
- Section "Demandes en attente" (orange) avec boutons Valider/Refuser
|
||||
- Section "Galeries en ligne" séparée
|
||||
- `validerReservation()` → `POST /api/contact/valider/{id}` avec `credentials: 'include'`
|
||||
|
||||
### ZIP galerie
|
||||
- Corrigé crash mémoire (648 Mo in-memory → temp file + streaming 1 Mo chunks)
|
||||
- Barre de progression dans modal (ReadableStream, affiche Mo reçus + %)
|
||||
- Restreint admin only (pas guest)
|
||||
|
||||
### SMTP
|
||||
- Corrigé pour port 587 : STARTTLS (pas SMTP_SSL qui est pour 465)
|
||||
- Config OVH : ssl0.ovh.net port 587
|
||||
|
||||
### Compteur photos
|
||||
- `distribuer_photo()` accepte paramètre `copies` et incrémente par ce nombre (pas toujours +1)
|
||||
|
||||
## Tâches Trello du projet
|
||||
|
||||
- [📋 À faire] faire essaie avec mon dslr et imprimante ricoh et installer sur ecran tactile terra
|
||||
(card_id: 69c1122fec1b558a76e207b0)
|
||||
|
||||
Utilise `claude-trello` pour mettre à jour les cartes pendant le travail.
|
||||
Labels: green=fait, yellow=en cours, red=bloqué, (aucun)=à faire
|
||||
|
||||
Reference in New Issue
Block a user