- Architecture modulaire avec injection de dépendances - Système de scoring intelligent multi-facteurs (spécificité, fraîcheur, qualité, réutilisation) - Moteur anti-injection 4 couches (preprocessing, patterns, sémantique, pénalités) - API REST complète avec validation et rate limiting - Repository JSON avec index mémoire et backup automatique - Provider LLM modulaire pour génération de contenu - Suite de tests complète (Jest) : * Tests unitaires pour sécurité et scoring * Tests d'intégration API end-to-end * Tests de sécurité avec simulation d'attaques * Tests de performance et charge - Pipeline CI/CD avec GitHub Actions - Logging structuré et monitoring - Configuration ESLint et environnement de test 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
8.9 KiB
📋 TODO EXHAUSTIF - SourceFinder
Basé sur le CDC complet - 25 composants majeurs à développer
🏗️ PHASE 1 - ARCHITECTURE & CORE (2 semaines)
🔧 Infrastructure de base
-
Architecture ultra-modulaire Node.js + Express
- Structure avec interfaces strictes (INewsProvider, IStockRepository, IScoringEngine)
- Dependency Injection Container
- Configuration environment (.env)
- Scripts package.json
- Middleware de base
-
Système de stockage JSON modulaire
- Interface Repository abstraite (IStockRepository)
- Implémentation JSON par défaut (JSONStockRepository)
- Adaptateurs MongoDB/PostgreSQL (futurs, plug-and-play)
- Index en mémoire pour performance
- Migration path documenté
🧮 Système de scoring intelligent
-
Algorithme de scoring principal
- Formule: (Spécificité×0.4) + (Fraîcheur×0.3) + (Qualité×0.2) + (Anti-dup×0.1)
- Classes ScoreCalculator avec breakdown détaillé
- Tests unitaires sur calculs de scores
-
Scoring spécificité race (40%)
- Race exacte: 100pts
- Groupe/famille: 70pts
- Taille similaire: 50pts
- Usage similaire: 40pts
- Générique chiens: 25pts
- Mapping races vers groupes/tailles/usages
-
Scoring fraîcheur (30%)
- < 7j: 100pts, 7-30j: 70pts, 30-90j: 40pts, 90-180j: 20pts, >180j: 5pts
- Parsing dates multiformats
- Gestion timezones
-
Scoring qualité source (20%)
- Premium: 100pts, Spécialisées: 80pts, Médias animaliers: 60pts
- Presse généraliste: 40pts, Blogs/forums: 20pts
- Base de données domaines avec scores
-
Scoring anti-duplication (10%)
- URL jamais utilisée: 100pts
- Domaine peu utilisé: 70pts
- Source recyclable: 50pts
- Tracking usage avec timestamps
🛡️ Protection anti-prompt injection
-
Layer 1: Content Preprocessing
- Patterns dangereux: ignore instructions, you are now, forget everything
- Suppression/masquage instructions suspectes
- Normalisation texte
-
Layer 2: Pattern Detection
- Instructions directes, redirections, code injections, métaprompts
- Regex + machine learning detection
- Scoring suspicion
-
Layer 3: Validation sémantique
- Cohérence contenu/race mentionnée
- Détection incohérences flagrantes
- Analyse ton vs site source
-
Layer 4: Source Scoring avec pénalités
- Prompt injection: -50pts
- Contenu incohérent: -30pts
- Source historiquement non fiable: -20pts
🗄️ Système de stock intelligent
-
Architecture BDD stock
- Schema complet avec race_tags, angle_tags, universal_tags
- Scoring fields, usage tracking, metadata
- Index optimisés pour recherche rapide
-
Catégories de stock
- Premium: études, clubs officiels (3 usages, 180j rotation)
- Standard: news spécialisées (2-3 usages, 90j rotation)
- Fallback: conseils généraux (illimité, 30j rotation)
-
Logique réutilisation
- Tracking usage_count et last_used
- Calcul éligibilité selon catégorie
- Rotation automatique
🔍 PHASE 2 - NEWS PROVIDERS MODULAIRES (2 semaines)
🧠 LLM News Provider (implémentation par défaut)
-
Interface INewsProvider
- Contrat strict pour tous les providers
- Méthodes searchNews(), validateResults(), getMetadata()
- Types TypeScript pour robustesse
-
LLMNewsProvider implementation
- Intégration OpenAI/Claude API
- Prompts optimisés pour recherche spécialisée
- Gestion tokens et coûts
- Cache intelligent des résultats
-
Providers alternatifs (futurs)
- ScrapingProvider (Puppeteer + anti-détection gratuite)
- HybridProvider (LLM + scraping fallback)
- Configuration plug-and-play
🔄 Recherche en cascade
-
Étape 1: Sources spécialisées race
- Recherche "[nom_race] actualité 2025"
- Clubs race, associations cynophiles
- Magazines élevage, forums modérés
-
Étape 2: Sources animalières générales
- "chien [caractéristique] actualité"
- Médias animaliers grands publics
- Sites conseils vétérinaires
-
Étape 3: Fallback généraliste
- "animaux domestiques", "propriétaires chiens"
- Google News API
- Adaptation contenu mainstream
⚙️ Configuration sources
-
Fichier config/sources.json
- Structure premium/specialized/fallback
- Rules de scraping par domaine
- Weights et rate limits
-
Management dynamique sources
- CRUD sources via API admin
- Test automatique disponibilité
- Scoring fiabilité historique
🔌 PHASE 3 - APIs & INTÉGRATIONS (1 semaine)
📡 API principale de recherche
-
Endpoint GET /api/v1/news/search
- Paramètres: race_code, product_context, min_score, max_age_days
- Validation paramètres entrants
- Réponse JSON structurée avec metadata
-
Logique de recherche
- Stock search d'abord
- Live scraping si insuffisant
- Scoring batch + tri
- Filtrage anti-injection
🏪 APIs stock management
-
GET /api/v1/stock/status
- État global stock par race
- Métriques coverage et qualité
- Alertes stock bas
-
POST /api/v1/stock/refresh
- Force refresh sources
- Background job trigger
- Progress tracking
-
DELETE /api/v1/stock/cleanup
- Nettoyage articles expirés
- Purge contenus bloqués
- Stats cleanup
-
GET /api/v1/stock/race/{code}
- Stock détaillé par race
- Breakdown par catégorie
- Usage history
📊 APIs monitoring
-
GET /api/v1/health
- Status database, Redis, external APIs
- Response time checks
- Memory/CPU usage
-
GET /api/v1/metrics
- KPIs performance (temps réponse, uptime)
- KPIs qualité (scores moyens, détection injection)
- KPIs usage (req/jour, top races)
-
GET /api/v1/sources/status
- Health check toutes sources
- Taux succès scraping
- Sources en erreur
⚡ PHASE 4 - PERFORMANCE & PRODUCTION (1 semaine)
🚀 Performance & Cache
-
Configuration Redis
- Cache résultats recherche (TTL intelligent)
- Session storage rate limiting
- Background job queues
-
Optimisations requêtes
- Index database optimaux
- Query optimization + profiling
- Connection pooling
🔐 Sécurité & Rate limiting
-
Authentification API
- API keys management
- JWT tokens option
- Scopes permissions
-
Rate limiting
- Limites par client/IP
- Burst allowance
- Graceful degradation
📅 Background processing
-
Cron jobs
- Daily 02:00: Stock refresh & cleanup
- Hourly: Sources health check
- 4x/day: New sources discovery
-
Queue management
- Job queues Redis-based
- Retry logic avec backoff
- Dead letter queue
📈 Monitoring avancé
-
Métriques temps réel
- Prometheus/Grafana setup
- Custom metrics business
- Alerting rules
-
Logs structurés
- Winston/Bunyan logger
- Structured JSON logging
- Log aggregation
-
Alertes automatiques
- API down > 2min
- Prompt injection > 5%/1h
- Stock < 10 sources/race
- Performance > 10s
-
Dashboard opérationnel
- Vue temps réel système
- Graphs performance
- Source status overview
🧪 PHASE 5 - TESTS & QUALITÉ
🔒 Tests sécurité
-
Tests prompt injection
- Battery patterns malveillants
- Validation détection multicouches
- Faux positifs acceptable
-
Tests validation sémantique
- Contenu hors contexte
- Incohérences flagrantes
- Edge cases validation
⚡ Tests performance
-
Load testing
- 100 req/min sustained
- Spike testing 500 req/min
- Memory leaks detection
-
Tests API endpoints
- Response time < 5s (95e percentile)
- Concurrent users
- Error rate < 1%
🔗 Tests intégration
-
End-to-end PublicationAutomator
- Workflow complet 1 article/jour
- Qualité résultats retournés
- Gestion erreurs gracieuse
-
Tests multi-clients
- Isolation données clients
- Rate limiting per client
- Scaling behavior
📚 Documentation
-
OpenAPI/Swagger
- Specs complètes toutes APIs
- Exemples requêtes/réponses
- Interactive testing
-
Documentation technique
- Architecture decision records
- Deployment guides
- Troubleshooting runbooks
🎯 DÉFINITION OF DONE
Chaque tâche doit respecter: ✅ Code quality: Linting, type safety, patterns cohérents ✅ Tests: Unit tests + integration appropriés ✅ Sécurité: Validation anti-injection, no secrets exposed ✅ Performance: Benchmarks validés selon KPIs ✅ Documentation: Code comments + API docs ✅ Monitoring: Logs + métriques appropriés
📊 MÉTRIQUES DE RÉUSSITE
Performance: API < 5s (95e), Uptime > 99.5%, 50+ sources/race Qualité: Score moyen > 200pts, 90% requêtes avec résultats, < 1% injection Business: Support PublicationAutomator, architecture multi-clients, extensibilité sources
Total estimé: 155h sur 5 semaines - Projet complexe nécessitant approche méthodique