Date in italiano ok intervallo con anno ok intervallo senza anno → anno dedotto e segnalato ok mesi diversi ok a cavallo d'anno (in autunno → anno nuovo) ok numerico ok solo scadenza ok dal nome del file ok con i giorni della settimana (formato Boningros) ok sceglie la validità delle offerte, non quella dei buoni (anche se compare prima) ok solo date di buoni → nessuna data (meglio nulla che sbagliata) ok nessuna data → null (mai inventata) ok data impossibile → null robots.txt ok percorso vietato ok percorso libero ok Allow più specifico vince ok gruppo specifico batte «*» ok jolly e fine riga ok Disallow vuoto = tutto libero ok robots.txt HTTP 404 → accesso consentito ok robots.txt HTTP 410 → accesso consentito ok robots.txt HTTP 403 → accesso NEGATO ok robots.txt HTTP 401 → accesso NEGATO ok robots.txt HTTP 500 → accesso NEGATO ok robots.txt HTTP 503 → accesso NEGATO ok robots.txt irraggiungibile → accesso NEGATO ok robots.txt «Disallow: /» → accesso NEGATO Client HTTP sicuro (nessuna richiesta reale) ok https + host consentito ok rifiutato: http ok rifiutato: altro host ok rifiutato: IP ok rifiutato: credenziali ok rifiutato: porta ok rifiutato: ftp ok rifiutato: sottodominio ingannevole ok rifiutato: spazi ok IP non pubblico 10.0.0.1 ok IP non pubblico 127.0.0.1 ok IP non pubblico 169.254.169.254 ok IP non pubblico 192.168.1.5 ok IP non pubblico 172.16.0.1 ok IP non pubblico ::1 ok IP non pubblico fd00::1 ok IP pubblico ok URL relativi risolti Pianificazione dei controlli ok scade il 20 → controllo dal 21 alle 06:00 ok anche a cavallo del cambio ora legale ok scala dei tentativi 3h, 6h, 12h, poi 24h ok volantino scaduto e nuovo assente → riprova tra 3 ore ok controllo anticipato con volantino valido → attende la scadenza ok nuovo volantino → prossimo dopo la sua scadenza ok nuovo volantino senza data → domani alle 06:00 Validazione delle offerte ok offerta valida ok prezzo non coerente col testo → segnalato e confidenza ≤ 0.3 ok «99 cent» coerente col prezzo 0,99 ok scartata: {"name":""} ok scartata: {"price":0} ok scartata: {"price":1500} ok scartata: {"price":"abc"} ok scartata: {"price_basis":"dozzina"} ok scartata: {"price_text":""} ok multi-acquisto → confidenza ≤ 0.5 ok prezzo IVA esclusa → confidenza ≤ 0.4 ok prezzo originale ≤ prezzo → scartato, non inventato ok pagina fuori dall'intervallo → segnalata ok formati ok EAN: controllo cifra finale Unità e prezzo unitario ok al kg → €/kg ok all'etto → convertito a €/kg senza perdite ok confezione 500 g → €/kg ok formato diverso dal prodotto → non pubblicabile ok al kg su prodotto a confezione → non pubblicabile ok multi-acquisto → non pubblicabile ok confezione senza formato su prodotto a pezzo Risposta dell'IA ok tool_use letto, voci non valide ignorate ok max_tokens → troncata ok errore HTTP con chiave → chiave oscurata ok 429 è ritentabile, 401 no ok senza chiave: problema segnalato ok log: chiavi oscurate ok prompt: vieta di inventare e tratta il volantino come dati ok prompt: prezzi con/senza IVA ambigui non vanno riportati; quantità disponibili ignorate Connettori (sito finto) ok Mersì: trova il PDF del volantino con le date ok Mersì: ignora PDF di altro tipo e host non consentiti ok Mersì (struttura reale): link su immagine, data in un titolo accanto → 7–20 ottobre ok più PDF vicini: la data comune NON viene attribuita a caso ok pagina senza PDF → not_found (non inventa) ok PDF su host non consentito → spiegato, non scaricato ok HTTP 403 → blocked ok HTTP 404 → not_found ok SuperConveniente: avviso multi-negozio ok SuperConveniente (struttura reale, 5 PDF per zona): tiene SOLO quello che cita Villafranca ok SuperConveniente: titolo dall'etichetta della zona, date 2–12 ottobre ok parola chiave assente → not_found con spiegazione (nessun volantino a caso) ok senza parole chiave verrebbero proposti tutti i PDF (per questo la fonte ne ha una) ok Boningros: testo visibile e date ok Boningros (frasi reali): validità 8–21 ottobre, non la data dei buoni ok Boningros: pagina senza testo → not_found ok fonte bloccata: nessuna richiesta di rete ok inbox: prende solo i PDF veri e non quelli ancora in caricamento ok inbox: date dal nome del file, segnalate come dedotte Client educato (robots, tetto di richieste) ok pagina consentita: scaricata ok pagina vietata da robots.txt: NESSUNA richiesta effettuata ok robots.txt scaricato una volta sola e contato nel tetto ok tetto di richieste: oltre il limite non si scarica più PDF ok PDF valido: pagine contate ok stima delle pagine senza strumenti esterni ok file che non è un PDF → rifiutato ok taglio pagine 2-3 → file di 2 pagine con offset 1 ok PDF intero: nessun taglio Somiglianza dei testi ok testo con un contatore diverso → quasi identico ok volantino davvero diverso → NON considerato lo stesso (scenari con database saltati: imposta SPESAMIA_TEST_DSN, SPESAMIA_TEST_USER, SPESAMIA_TEST_PASS su un database DI PROVA) 111 test, 0 falliti