Some checks failed
SourceFinder CI/CD Pipeline / Code Quality & Linting (push) Has been cancelled
SourceFinder CI/CD Pipeline / Unit Tests (push) Has been cancelled
SourceFinder CI/CD Pipeline / Security Tests (push) Has been cancelled
SourceFinder CI/CD Pipeline / Integration Tests (push) Has been cancelled
SourceFinder CI/CD Pipeline / Performance Tests (push) Has been cancelled
SourceFinder CI/CD Pipeline / Code Coverage Report (push) Has been cancelled
SourceFinder CI/CD Pipeline / Build & Deployment Validation (16.x) (push) Has been cancelled
SourceFinder CI/CD Pipeline / Build & Deployment Validation (18.x) (push) Has been cancelled
SourceFinder CI/CD Pipeline / Build & Deployment Validation (20.x) (push) Has been cancelled
SourceFinder CI/CD Pipeline / Regression Tests (push) Has been cancelled
SourceFinder CI/CD Pipeline / Security Audit (push) Has been cancelled
SourceFinder CI/CD Pipeline / Notify Results (push) Has been cancelled
- 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>
308 lines
8.9 KiB
Markdown
308 lines
8.9 KiB
Markdown
# 📋 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* |