3.5 KiB
3.5 KiB
Task Checkup - E-Ticket
A faire
Billetterie & Commandes
- Décrémenter la quantité disponible du billet après achat (stock management)
- Empêcher l'achat si stock épuisé (vérification côté serveur)
- Ajouter un email de notification à l'orga quand une commande est passée
- Ajouter un email de notification à l'orga quand une commande est annulée/remboursée
- Gérer l'expiration des commandes pending (cron pour annuler après X minutes)
- Ajouter le webhook
payment_intent.payment_failedpour gérer les échecs - Ajouter le webhook
charge.refundedpour mettre à jour le statut automatiquement - Vérifier le type de billet (billet/reservation_brocante/vote) selon l'offre orga à la création
Invitations Organisateur
- Bloquer l'envoi d'invitations (billets) si Stripe n'est pas validé sur le compte orga
- Après inscription via invitation, connecter automatiquement l'utilisateur
- Empêcher la double inscription (même email) — déjà vérifié mais ajouter un message clair
- Ajouter une notification admin quand un orga accepte/refuse une invitation
Paiements & Finances
- Ajouter le dashboard financier pour l'orga (total encaissé, en attente, remboursé)
- Ajouter les virements Stripe (payouts) dans l'onglet de l'orga
- Générer un récapitulatif mensuel des ventes (export CSV/PDF)
Admin
- Dashboard admin : stats globales (CA global, commission E-Ticket totale, commission Stripe totale, nb commandes, nb billets, nb orgas)
- Admin : liste de toutes les commandes avec filtres
- Admin : pouvoir suspendre un organisateur
- Admin : pouvoir modifier l'offre/commission d'un orga existant (déjà fait partiellement)
- Admin : logs des actions importantes (audit trail)
UX & Pages
- Page /tarifs : détailler les 3 offres (free/basic/custom) avec commissions et exemples
- Ajouter la recherche d'événements sur la homepage
- Ajouter le filtrage par date/ville sur /evenements
- Responsive : pages publiques OK à 320px (flex-wrap, overflow-x-auto, breakpoints)
- Ajouter les métadonnées OpenGraph sur toutes les pages publiques (og:title, og:description, og:type, og:url, og:image, twitter:card)
- Ajouter le sitemap dynamique avec les événements en ligne
- Fix breadcrumb JSON-LD URLs (absolute_url)
API (Application mobile scanner uniquement)
- POST
/api/login: authentification email + password orga, retourne un JWT token - GET
/api/events: liste des événements de l'orga authentifié - POST
/api/events/{id}/scan: scan d'un billet (decode QR → check reference → check state → mark scanned, gérer sortie définitive) - Middleware JWT pour sécuriser les routes /api/*
Sécurité & Performance
- Rate limiting sur les routes sensibles (login 5/15min, commande 10/5min, invitation 5/15min, contact 3/10min)
- CSRF token sur tous les formulaires POST (auto-inject + auto-verify)
- Cache Meilisearch : invalider quand un événement est modifié (déjà fait via EventIndexService::indexEvent)
- Optimiser les requêtes N+1 (stats tab, billets par catégorie)
Tests
- Atteindre 90%+ de couverture PHP
- Atteindre 100% de couverture JS
- Ajouter des tests pour le flow d'inscription via invitation
Infrastructure
- Configurer les crons pour les backups automatiques (DB + uploads, toutes les 30 min, rétention 1 jour)
- Ajouter le monitoring des queues Messenger (commande + cron toutes les heures + email admin)