Checkpoint: Ajout de server/articleFetcher.ts (fetch HTTP + extraction 500 mots, timeout 5s, fallback silencieux). Intégration dans rssEngine.ts : si le résumé RSS est court (<150 car.), le 1er paragraphe de l'article est récupéré et transmis à classifyArticle. Signature de classifyArticle mise à jour avec paramètre contenuPage optionnel. 0 erreur TypeScript, 21 tests passés.
This commit is contained in:
@@ -99,16 +99,22 @@ function parseJsonSafe<T>(text: string): T | null {
|
||||
* Détermine simultanément la pertinence et le type de veille.
|
||||
* Retourne toujours un résultat (fallback sur rules en cas d'erreur).
|
||||
*
|
||||
* @param titre Titre de l'article
|
||||
* @param resume Résumé / description de l'article
|
||||
* @param fallbackFn Fonction de fallback appelée si l'IA échoue
|
||||
* @param titre Titre de l'article
|
||||
* @param resume Résumé / description de l'article
|
||||
* @param fallbackFn Fonction de fallback appelée si l'IA échoue
|
||||
* @param contenuPage Premiers paragraphes de l'article complet (optionnel, améliore la précision)
|
||||
*/
|
||||
export async function classifyArticle(
|
||||
titre: string,
|
||||
resume: string,
|
||||
fallbackFn: () => { typeVeille: AiTypeVeille }
|
||||
fallbackFn: () => { typeVeille: AiTypeVeille },
|
||||
contenuPage?: string | null
|
||||
): Promise<AiClassificationResult> {
|
||||
const userContent = `Titre : ${titre}\n\nRésumé : ${resume}`;
|
||||
// Construire le contenu utilisateur en enrichissant avec le contenu de la page si disponible
|
||||
const contenuSection = contenuPage
|
||||
? `\n\nExtrait de l'article (premiers paragraphes) : ${contenuPage}`
|
||||
: "";
|
||||
const userContent = `Titre : ${titre}\n\nRésumé RSS : ${resume}${contenuSection}`;
|
||||
|
||||
try {
|
||||
const response = await invokeLLM({
|
||||
|
||||
Reference in New Issue
Block a user