sourcefinder/test-data/stock/items/66b052ad-225f-4480-afba-89654ef37138.json
Alexis Trouvé a7bd6115b7
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
feat: Implémentation complète du système SourceFinder avec tests
- 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>
2025-09-15 23:06:10 +08:00

134 lines
4.3 KiB
JSON

{
"id": "66b052ad-225f-4480-afba-89654ef37138",
"title": "Caractéristiques spécifiques du Berger Allemand",
"content": "Le Berger Allemand est une race de chien reconnue pour sa polyvalence et son intelligence. Ce chien de taille moyenne à grande se distingue par sa musculature athlétique et son pelage dense, qui peut être noir et feu, sable ou noir. En moyenne, un Berger Allemand pèse entre 22 et 40 kg et mesure entre 55 et 65 cm de hauteur au garrot. Leur espérance de vie est d'environ 9 à 13 ans. Ils sont connus pour leur loyauté et leur capacité à travailler dans divers rôles, notamment comme chiens de police, de sauvetage et d'assistance. Leur instinct de protection en fait d'excellents chiens de garde, mais cela nécessite une socialisation précoce pour éviter des comportements territoriaux excessifs.",
"category": "education",
"keyPoints": [
"Taille: 55-65 cm, poids: 22-40 kg",
"Espérance de vie: 9-13 ans",
"Intelligence et polyvalence dans divers rôles"
],
"targetAudience": "propriétaires",
"raceCode": "352-1",
"sourceType": "llm_generated",
"provider": "OpenAI",
"model": "gpt-4o-mini",
"publishDate": "2025-09-15T12:29:59.188Z",
"url": "llm://generated/9b1c02ca-34fb-4e3b-9fd2-b7c4587b541f",
"scores": {
"specificity": 85,
"freshness": 100,
"quality": 80,
"reuse": 100
},
"generationMetadata": {
"originalQuery": {
"raceCode": "352-1",
"productContext": "Guide éducatif pour Berger Allemand",
"contentType": "education",
"clientId": "test-client-1"
},
"generatedAt": "2025-09-15T12:29:59.188Z",
"model": "gpt-4o-mini",
"temperature": 0.3
},
"finalScore": 57,
"specificityScore": 100,
"freshnessScore": 0,
"qualityScore": 37,
"reuseScore": 100,
"scoringDetails": {
"specificity": {
"score": 100,
"reason": "exact_race_match",
"details": "Mention exacte de la race trouvée: berger allemand",
"matchedTerms": [
"berger allemand"
]
},
"freshness": {
"score": 0,
"reason": "future_date",
"details": "Article daté du futur (1 jours)",
"ageInDays": -1,
"publishDate": "2025-09-15T12:29:59.188Z",
"searchDate": "2025-09-15T12:29:43.199Z"
},
"quality": {
"score": 37,
"reason": "unknown",
"details": "Source Source inconnue (generated) - Score de base: 30. Ajustements: +7",
"sourceInfo": {
"domain": "generated",
"sourceType": "unknown",
"baseScore": 30,
"adjustments": [
{
"type": "content_quality",
"value": 8,
"reason": "Longueur appropriée, Phrases bien structurées"
},
{
"type": "metadata_quality",
"value": 4,
"reason": "Date publication présente, URL propre"
},
{
"type": "domain_authority",
"value": -5,
"reason": "Source non référencée"
}
]
},
"qualityIndicators": {
"hasAuthor": false,
"hasPublishDate": true,
"hasMetadata": false,
"sourceType": "unknown",
"sourceCategory": "Source inconnue",
"contentLength": 745,
"isKnownSource": false
}
},
"reuse": {
"score": 100,
"reason": "never_used",
"details": "Article jamais utilisé, contenu_permanent (+5)",
"usageCount": 0,
"lastUsed": null,
"rotationStatus": "available",
"breakdown": {
"baseScore": 100,
"timeAdjustment": 0,
"contextAdjustment": 5
}
}
},
"scoringMetadata": {
"engine": "BasicScoringEngine",
"version": "1.0",
"weights": {
"specificity": 0.4,
"freshness": 0.3,
"quality": 0.2,
"reuse": 0.1
},
"calculationTime": 3,
"scoredAt": "2025-09-15T12:29:59.193Z",
"context": {
"raceCode": "352-1",
"clientId": "test-client-1",
"searchDate": "2025-09-15T12:29:43.199Z"
}
},
"scoreCategory": "fair",
"usageRecommendation": "review_needed",
"createdAt": "2025-09-15T12:29:59.195Z",
"updatedAt": "2025-09-15T12:29:59.195Z",
"_metadata": {
"version": 1,
"createdAt": "2025-09-15T12:29:59.195Z",
"updatedAt": "2025-09-15T12:29:59.195Z",
"checksum": "60d3ac53"
}
}