Univers ID Resto — dépôt commun icordisagency/idresto
Décision Musa du 12/08/2026, 12h34 : Résa, Fidélité et Planning cessent d'être trois applications séparées, ce sont trois modules d'un même dépôt. Cette page fixe où on en est, précisément, tâche par tâche — à tenir à jour par tous les chantiers, pas seulement par celui qui l'a créée.
Dernière mise à jour : 12/08/2026, 14h25, par restaurant. Fichier : public/suivi.html — voir le commentaire en tête de source pour la marche à suivre.
src/Fidelite, contraintes vérifiées en base.bus_idresto.py) et IDRESTO.md ouverts restaurantConception valable, réutilisée telle quelle après la fusion — rien à refaire ici.
Le SSO à jetons signés et le bundle partagé idresto-socle, envisagés le matin même (11h43), deviennent inutiles : une session, une base, un dépôt.
docs/convention-modules.md écrit et poussé (commit 7839521) restaurantLa base dont tous les autres modules dépendent : personne d'autre ne peut démarrer son code avant qu'elle soit stable et poussée sur main.
composer create-project symfony/skeleton) restaurantorm ~3.5.0, migrations ~3.8.0 (piège idfid évité) restaurantsrc/Compte, Resa, Fidelite, Planning, Site, Vitrine, Partage) restaurantCompte, Etablissement, CompteEtablissement, Abonnement restaurantconfig/packages/doctrine.yaml) restaurantCompte restaurantDomain, Secure/HttpOnly/SameSite=Lax restaurantCompte (activation réelle = tâche séparée, hors squelette) restaurantTenantContext (src/Partage/Security) restauranttemplates/partage/base.html.twig) restaurantEtablissement::aModuleActif()) restaurantmain + annonce de fin sur le bus restaurantsrc/FideliteTerritoire commun annoncé AVANT d'y toucher (convention-modules.md §5, bien respecté) : 6 entités écrites, mapping Doctrine ajouté, migration générée/jouée/poussée (commit 29ac687), sauvegarde prise avant la migration avec app:sauvegarde:creer. Style réécrit en accesseurs privés + repositoryClass (maison), pas importé tel quel de l'ancien dépôt public-properties.
src/Fidelite/Entity : Personne, Client, Programme, Carte, Recompense, Ecriture idfidreference_externe pour l'idempotence) idfidCommercant/Utilisateur réconciliés : place à Etablissement/Compte, compteCentralId devient une vraie FK idfidApp\Fidelite\Service\CreditPassage (le point d'entrée que Resa appellera — annoncé, pas encore poussé) idfidtemplates/fidelite/client/ pour la PWA sur idfid.icordia.fr (décision §8.8 approuvée, reste à câbler) idfidsrc/ResaConception révisée (pas recopiée) et déplacée dans idresto/docs/resa/ (commit 13182f2) ; ancien dépôt icordisagency/idresa réduit à un README pointeur, sans doublon. Bloqué pour écrire des entités testables pour de vrai — pas pour écrire du code.
date_service figée à l'écriture (IDRESTO.md §8.9) idresabischtrot, en attente idresabischtrot, en attente idresasrc/Resa/Entity, préfixe resa_ — écrivables sans les 2 chiffres, mais rien de testable pour de vrai sans eux idresasrc/Planningsrc/Planning/Entity, préfixe plan_ idplanningsrc/Vitrine)Base de design déposée par Musa le 12/08 : gabarit HTML/CSS acheté (« Appilo », page d'atterrissage app SaaS — sections hero, fonctionnalités, comment ça marche, captures d'écran, intégrations, tarifs, témoignages, blog). Sert de STRUCTURE et d'inspiration de mise en page, pas à copier tel quel : ses couleurs (rose #d43396 / violet #6541c1, Bootstrap par défaut) n'ont rien à voir avec la palette icordis (#FF9100) déjà posée dans le back-office, et tout le contenu est un placeholder du vendeur du template.
idresto/Design frontend Musa/appilo-app-landing-page-html-template-2023-11-27-05-07-47-utc.zip restaurant#FF9100 + palette déjà en place) idrestosrc/Vitrine (routes publiques, hors /admin) idrestoJetBackup et le Backup natif cPanel sont indisponibles sur le compte hébergeur (vérifié par SSH le 12/08) — pas d'API de sauvegarde à consommer côté O2switch. On reproduit le motif déjà éprouvé par app.icordia.fr (app:backup:create) plutôt que d'en inventer un autre.
app:sauvegarde:creer : mysqldump + rotation locale (src/Partage/Command) restaurantapp:sauvegarde:restaurer écrite ET testée pour de vrai en local (ligne insérée → sauvegardée → supprimée → restaurée → revenue identique) restaurantmysqldump sans --set-gtid-purged=OFF rendait la restauration impossible sur MySQL/MariaDB avec GTID actif restaurantGOOGLE_DRIVE_CLIENT_ID/SECRET à obtenir (voir phase squelette) restaurantapp:sauvegarde:creer quotidien) — à poser au premier vrai déploiement restaurantACCES-SERVEURS.md en plus de .env.local — sinon un incident serveur emporte à la fois la base ET la capacité de lire les copies qu'on en a faites restaurantHors fusion, dépôt séparé. Le flux Instagram (cron + fichier local, jamais d'appel API pendant une requête visiteur) est déjà livré et documenté comme brique réutilisable pour qui en aura besoin.
ClientInstagram, DepotInstagram, RafraichirInstagramCommand), partagé sur le bus bischtrotDemande de Musa du 12/08 : tests automatiques avant déploiement + monitoring après déploiement. Le staging (environnement de préproduction séparé) est explicitement DIFFÉRÉ jusqu'à la vente à un premier client — seule la plomberie est documentée ici, rien n'est provisionné.
.github/workflows/ci.yml) : install, versions Doctrine, mapping (statique + contre vraie base MariaDB de service), PHPUnit restaurantsrc/Partage/Entity/ jamais suivi par git (dossier vide), composer show qui n'accepte qu'un paquet à la fois restaurant/admin et /admin/ressources exigent une authentification) restaurantfingers_crossed + symfony_mailer, canal séparé du log JSON stderr) — déclenchement vérifié en local, pas seulement lu restaurantmain — la CI signale un push cassé, elle ne bloque pas encore le merge. Décision à prendre séparément restaurantapp:sauvegarde:creer + MAILER_DSN/MAILER_ALERTE_* réels — au premier vrai déploiement, pas avant restaurant🟡 Staging DIFFÉRÉ (décision Musa 12/08) : quand un premier client paie, ajouter un bloc when@staging: dans les fichiers config/packages/*.yaml concernés (calqué sur when@prod:) + APP_ENV=staging sur un sous-domaine dédié. Symfony gère nativement n'importe quel nom d'environnement : il n'y a rien à préparer en plus tant que ce n'est pas activé.
GTID_PURGED avec mysqldump — sur MySQL/MariaDB avec GTID actif, un dump restauré sur le même serveur échoue sans --set-gtid-purged=OFF. Découvert en testant pour de vrai la restauration, pas en la lisant — si vous écrivez votre propre script de sauvegarde ailleurs dans l'univers, vérifiez ce point.fetch + rebase juste avant de générer, annoncer sur le bus, générer, pousser tout de suite. Une migration ne dort jamais en local.idresto/CLAUDE.md corrigé — décrivait encore l'architecture pré-fusion (jeton SSO, bundle idresto-socle) ; mis à jour le 12/08 13h10 pour renvoyer vers docs/convention-modules.md.idresto.icordia.fr/suivi.html (HTTPS actif depuis que Musa a généré le certificat). L'application n'est pas déployée : pas de déploiement sans sauvegarde hors-site en place.