ListingExtractionApplierTest

11

tests

0

failures

0

ignored

0.002s

duration

100%

successful

Tests

Test Method name Duration Result
Source DESCRIPTION (regex faible) n'écrase PAS un prix/surface LLM (seule STRUCTURED prime) description layer never overrides critical llm value() 0s passed
Extraction vide → base inchangée (no-op) empty extraction is noop() 0s passed
Comble les champs null depuis l'extraction déterministe (dont nbLotsCopro → nombreLots) fills nulls() 0.001s passed
Anti middle-man : ne fait JAMAIS passer un champ existant à null (monotone) never nulls existing fields() 0s passed
N'ÉCRASE JAMAIS une valeur déjà posée (le LLM/structuré gagne) never overwrites() 0s passed
Anti-régression : portail sans blob structuré → valeur LLM survit intacte no structured source keeps llm value() 0s passed
STRUCTURED identique au LLM → no-op (pas d'override inutile) structured equal to llm is noop() 0s passed
STRUCTURED comble aussi un critique null (gap-fill classique) structured fills null critical() 0s passed
BUG SeLoger : prix/surface LLM faux + __NEXT_DATA__ vrai → le vrai (structuré) gagne structured overrides wrong llm price and surface() 0.001s passed
Monotone : structuré non parsable NE nulle PAS un prix LLM existant structured unparsable never nulls existing critical() 0s passed
Valeur non parsable → ignorée, champ reste null (jamais d'exception ni de fausse valeur) unparsable value ignored() 0s passed

Standard output

21:45:49.163 [Test worker] INFO com.alertimmo.aiscraping.extraction.structured.ListingExtractionApplier -- [listing-apply] 5 champ(s) comblé(s) (gap-filler, zéro écrasement): [dpe←DESCRIPTION, etage←DESCRIPTION, anneeConstruction←DESCRIPTION, nbLotsCopro←DESCRIPTION, nbChambres←DESCRIPTION]
21:45:49.165 [Test worker] WARN com.alertimmo.aiscraping.extraction.structured.ListingExtractionApplier -- [listing-apply] 2 champ(s) critique(s) CORRIGÉ(S) par source structurée fiable (LLM→__NEXT_DATA__/JSON-LD): [prix: 195000→169000 (STRUCTURED/HIGH), surface: 78→61 (STRUCTURED/HIGH)]
21:45:49.165 [Test worker] INFO com.alertimmo.aiscraping.extraction.structured.ListingExtractionApplier -- [listing-apply] 2 champ(s) comblé(s) (gap-filler, zéro écrasement): [prix←STRUCTURED, surface←STRUCTURED]