Appearance
Registre des décisions
Chaque décision d'architecture, de produit ou d'exploitation y est inscrite avec sa justification, au moment où elle est prise. Une décision n'est jamais effacée : si elle change, on ajoute une nouvelle entrée qui la remplace et l'on passe l'ancienne à « remplacée par Dxx ».
Format d'une entrée : contexte, décision, justification, conséquences, statut, date, qui a décidé, références. Les agents qui prennent une décision dans une PR l'ajoutent ici dans la même PR (ou la signalent au coordinateur).
| N° | Décision | Domaine | Statut | Date |
|---|---|---|---|---|
| D01 | Les comptes utilisateurs restent dans notre Postgres en UE, pas d'IdP tiers (Firebase, Authentik) | sécurité | adoptée | 2026-11-07 |
| D02 | Authentik reste l'IdP du staff uniquement | sécurité | adoptée | 2026-11-07 |
| D03 | Une route = un contrat defineRoute dont dérivent garde, quota, validation, OpenAPI, doc, client | API | adoptée | 2026-11-07 |
| D04 | Passerelle : acteur unique, politique d'accès obligatoire sur chaque route | API | adoptée, en service sur staging | 2026-11-07 |
| D05 | Migrations suivies (schema_migrations), appliquées par le Job api-migrate, jamais modifiées après application | données | adoptée, en service sur staging | 2026-11-07 |
| D06 | Migrations additives seulement (expand / contract) pendant la migration | données | adoptée | 2026-11-07 |
| D07 | DNS sur Cloudflare ; api.* hors proxy ; snag-app.io/api conservé pour l'app mobile | réseau | adoptée, en service | 2026-11-07 |
| D08 | Abonnements : tiers en table, RevenueCat source de vérité, webhook authentifié par jeton de service | produit | adoptée | 2026-11-07 |
| D09 | Le profil (persona) règle l'affichage, le tier règle les droits | produit | adoptée | 2026-11-07 |
| D10 | Journaux pseudonymisés (user_hash journalier, IP tronquée) | vie privée | adoptée, en service sur staging | 2026-11-07 |
| D11 | Accès web par QR et passkey ; révocation vérifiée à chaque requête ; SSE plutôt que WebSocket | sécurité | adoptée | 2026-11-07 |
| D12 | Gemini retiré du scan, modèles maison | ML | adoptée | 2026-11-07 |
| D13 | Webhook eBay public dans l'API jusqu'au service eBay | conformité | adoptée | 2026-11-07 |
| D14 | Une source de marché = un service isolé ; bus d'événements à évaluer, Kafka en dernier | architecture | reportée post-migration | 2026-11-07 |
| D15 | Images construites sur le laptop pendant la migration ; build sans GitHub Actions ensuite | CI | adoptée / suite reportée | 2026-11-07 |
| D16 | Pas de Nx ni de monorepo | outillage | adoptée | 2026-11-07 |
| D17 | Documentation interne Docusaurus derrière Authentik, routes générées depuis OpenAPI | documentation | adoptée | 2026-11-07 |
| D18 | Volet jeu : règles en données versionnées, deck sur la carte de jeu, recommandation déterministe d'abord | produit | adoptée | 2026-11-07 |
| D19 | Publicité : Google Ad Manager comme serveur d'annonces, ventes directes d'abord, programmatique en complément | monétisation | suspendue par D20 (pas de pub pour l'instant) | 2026-11-07 |
| D20 | Matrice des offres validée par les experts : 30 scans/jour en free, prix, transactions, alertes, export et étagères ouverts, aucune publicité | produit | adoptée | 2026-11-07 |
| D21 | Un seul S3 (celui de snag-prod) ; le staging y a ses buckets et ses identités, sans écriture sur un bucket prod | infrastructure | adoptée | 2026-11-07 |
Spécifications de la session : ~/Projects/Snag/specs/2026-11-07-plateforme-v2/ (cahier des charges, décomposition, volet jeu, architecture API, suivi).