# 🧠 Claude Project Context — Sargasse-Sentry ## 🎯 Objectif du Projet Construire une plateforme de renseignement maritime capable de transformer des donnĂ©es satellites complexes en une information simple, fiable et immĂ©diatement exploitable par des utilisateurs non techniques. Le projet doit privilĂ©gier : - la robustesse - la lisibilitĂ© - la performance - la maintenabilitĂ© long terme Toute dĂ©cision technique doit ĂȘtre orientĂ©e vers ces objectifs. --- ## ⚙ Stack Technique (NON NÉGOCIABLE) - Backend : Symfony 7.4 LTS (PHP 8.4+) - Database : PostgreSQL + PostGIS - Queue : Symfony Messenger + Redis - Cartographie : Mapbox GL JS - Cache : Redis + HTTP Cache - Traitement : PHP prioritaire, Python uniquement si nĂ©cessaire --- ## đŸ§± Principes d’Architecture ### 1. SĂ©paration stricte des responsabilitĂ©s - Observation ≠ PrĂ©diction ≠ Score - Ne jamais mĂ©langer ces concepts dans une mĂȘme entitĂ© ou table --- ### 2. Aucune logique mĂ©tier dans les contrĂŽleurs - Utiliser des services - Utiliser des handlers Messenger pour les traitements lourds --- ### 3. Pipeline asynchrone obligatoire - Toute ingestion ou traitement doit passer par Messenger - Aucun traitement bloquant en requĂȘte HTTP --- ### 4. DonnĂ©es immuables - Une observation ne doit jamais ĂȘtre modifiĂ©e - Une prĂ©diction est versionnĂ©e (modelVersion) --- ### 5. Optimisation gĂ©ospatiale native - Utiliser PostGIS pour : - distance - intersection - simplification - Ne jamais recalculer cĂŽtĂ© PHP si PostGIS peut le faire --- ## 📊 Conventions de DonnĂ©es ### GĂ©omĂ©trie - SRID : 4326 obligatoire - Utiliser MULTIPOLYGON mĂȘme pour un seul polygone - Simplifier avant stockage --- ### Dates - Toujours en UTC - Utiliser DateTimeImmutable --- ### Identifiants - UUID pour toutes les entitĂ©s critiques --- ## 🧠 ModĂ©lisation Claude DOIT crĂ©er des entitĂ©s distinctes : - SargassumObservation - SargassumForecast - CoastalPoint - ImpactScore - DataIngestionJob Aucune fusion ou simplification n’est autorisĂ©e. --- ## 🌊 Pipeline Claude DOIT implĂ©menter : 1. Ingestion Sentinel 2. Calcul AFAI 3. Vectorisation 4. Simulation de dĂ©rive par points 5. GĂ©nĂ©ration de prĂ©dictions multiples --- ## ⚠ Contraintes critiques ### 1. Performance - Interdiction d’envoyer du GeoJSON brut en production - Utilisation obligatoire de vector tiles --- ### 2. Cache - Toute donnĂ©e calculĂ©e doit ĂȘtre cachĂ©e - Aucun recalcul inutile --- ### 3. RĂ©silience - Retry automatique sur ingestion - Gestion des erreurs obligatoire --- ## 🎯 UX Constraints Claude doit considĂ©rer que : - L’utilisateur ne comprend pas les donnĂ©es satellites - L’information doit ĂȘtre lisible en moins de 3 secondes Donc : - Toujours fournir un score simple - Toujours fournir une tendance - Toujours fournir un horizon temporel --- ## 🔁 ÉvolutivitĂ© Le systĂšme doit ĂȘtre conçu pour : - ajouter de nouvelles sources de donnĂ©es - amĂ©liorer le modĂšle de dĂ©rive - intĂ©grer du machine learning Sans refonte complĂšte. --- ## đŸš« Interdictions - Pas de logique mĂ©tier dans les contrĂŽleurs - Pas de calcul gĂ©ospatial lourd en PHP si PostGIS peut le faire - Pas de dĂ©pendance inutile - Pas de complexitĂ© prĂ©maturĂ©e (microservices non nĂ©cessaires au MVP) --- ## ✅ Attentes vis-Ă -vis de Claude Claude doit : - gĂ©nĂ©rer du code propre, structurĂ©, testable - respecter strictement les conventions - documenter les choix techniques - proposer des amĂ©liorations si pertinentes Claude ne doit PAS : - simplifier les modĂšles de donnĂ©es - ignorer les contraintes de performance - court-circuiter Messenger --- ## 🧭 Philosophie Ce projet n’est pas une simple application cartographique. C’est un systĂšme de renseignement environnemental. Chaque dĂ©cision doit renforcer : - la prĂ©cision - la fiabilitĂ© - la comprĂ©hension utilisateur