{"enabled":true,"aiProvider":"qwen","cacheEnabled":true,"cacheEntries":5,"responseCache":{"enabled":true,"total":5,"usable":0,"unsafe":5,"reasons":{"expired":5},"maxEntries":500,"ttlMs":21600000,"lastPrunedAt":"2026-09-30T06:22:30.794Z","lastPrunedReason":"startup","lastPrunedRemoved":4},"knowledgeChunks":39,"localRouter":{"enabled":true,"model":"qwen3:1.7b","timeoutMs":3500,"keepAlive":"10m","cooldownMs":60000,"minConfidence":0.72,"status":"unavailable_non_blocking","nonBlocking":true,"hotPathAvailable":false,"health":{"ok":false,"running":false,"checkedAt":"2026-10-07T02:27:52.286Z","ageMs":137496,"latencyMs":null,"error":"This operation was aborted","reason":"interval","timeoutMs":10000,"maxLatencyMs":10000,"ttlMs":600000,"probeIntervalMs":300000,"failureRetryMs":60000},"coolingDownUntil":null,"lastError":null,"lastResolvedError":"This operation was aborted","url":"127.0.0.1:11434"},"codexCli":{"enabled":false,"bin":"codex","configuredModel":"gpt-5.4-mini","model":"gpt-5.4-mini","modelAliasApplied":null,"reasoningFast":"low","reasoningSmart":"medium","timeoutMs":12000,"cooldownMs":600000,"coolingDownUntil":null,"lastError":null,"lastResolvedError":null},"webResearch":{"enabled":true,"domains":["comune.pordenone.it","regione.fvg.it","protezionecivile.fvg.it","arpa.fvg.it","prefettura.interno.gov.it","interno.gov.it","pordenonecapitale2027.it","cultura.gov.it","rainews.it","rai.it","pordenonetoday.it","messaggeroveneto.gelocal.it","ilgazzettino.it","ilfriuli.it"],"publicCitationDomains":["comune.pordenone.it","regione.fvg.it","protezionecivile.fvg.it","arpa.fvg.it","prefettura.interno.gov.it","interno.gov.it","pordenonecapitale2027.it","cultura.gov.it"],"timeoutMs":5500,"maxResults":4,"officialSourceCardCache":{"hit":0,"miss":0,"pendingHit":0,"error":0,"size":0,"max":250,"ttlMs":1800000}},"eventAiReview":{"enabled":true,"timeoutMs":2500,"cooldownMs":300000,"maxCandidates":12,"coolingDownUntil":null,"lastError":null,"lastResolvedError":null},"weatherAlerts":{"enabled":true,"ttlMs":1800000,"staleMs":7200000,"available":true,"source":"arpa_osmer","checkedAt":"2026-10-07T02:22:37.422Z","ageMs":452379,"fresh":true,"usable":true,"running":false,"protectionTimeoutMs":900,"osmerTimeoutMs":3500},"eventsCache":{"ttlMs":600000,"readyMaxAgeMs":21600000,"refresh":{"enabled":true,"intervalMs":1800000,"startupDelayMs":20000,"running":false,"runTotal":330,"lastReason":"timer","lastStartedAt":"2026-10-07T02:22:36.164Z","lastFinishedAt":"2026-10-07T02:22:46.574Z","lastDurationMs":10410,"lastStatus":"ok","lastError":null,"lastResults":[{"key":"comune","label":"Calendario Comune","ok":true,"empty":false,"items":551,"durationMs":10410},{"key":"cinemazero-cinema","label":"Cinema Sotto le Stelle","ok":true,"empty":false,"items":1,"durationMs":225},{"key":"pordenone2027","label":"Pordenone 2027","ok":true,"empty":true,"items":0,"durationMs":831},{"key":"comune-news","label":"Novità Comune","ok":true,"empty":false,"items":60,"durationMs":3587}]},"entries":[{"key":"cinemazero-cinema","updatedAt":"2026-07-27T21:53:45.017Z","ageMs":6150984787,"stale":true,"complete":true,"emptyReason":null,"usable":false,"items":1,"futureItems":0,"pageCount":null,"failedPageCount":0},{"key":"comune","updatedAt":"2026-10-07T02:22:46.571Z","ageMs":443233,"stale":false,"complete":true,"emptyReason":null,"usable":true,"items":551,"futureItems":270,"pageCount":6,"failedPageCount":0},{"key":"comune-news","updatedAt":"2026-10-07T02:22:39.767Z","ageMs":450037,"stale":false,"complete":true,"emptyReason":null,"usable":true,"items":60,"futureItems":0,"pageCount":null,"failedPageCount":0},{"key":"pordenone2027","updatedAt":"2026-10-07T02:22:37.006Z","ageMs":452798,"stale":false,"complete":true,"emptyReason":"no_future_items","usable":false,"items":0,"futureItems":0,"pageCount":null,"failedPageCount":0}],"totalItems":612,"futureItems":270,"completeEntries":4,"fallbackEntries":1,"usableEntries":2,"freshestUpdatedAt":"2026-10-07T02:22:46.571Z"},"warnings":{"throttleMs":600000,"healthWindowMs":900000,"activeKeys":1,"recentKeys":0,"totalSuppressed":0,"totalSuppressedRecent":0,"entries":[{"key":"comune-news","lastAt":"2026-10-07T00:22:42.735Z","ageMs":7647075,"recent":false,"suppressed":0}]},"chatContext":{"enabled":true,"maxTurns":8,"ttlMs":3600000},"graphIngestQueue":{"depth":0,"max":500,"running":false,"dropped":0},"graph":{"enabled":true,"reachable":true,"ok":true,"neo4jConfigured":true,"neo4jAvailable":true,"counts":{"sources":10,"pages":39,"faqs":342,"chatTurns":170,"candidatePending":0,"candidatePendingMax":500,"candidatePendingTarget":400,"answerIssueOpen":1,"answerIssueMax":500,"topics":14,"indexedPages":39,"indexedFaqs":342,"canonicalCandidates":1040,"normalization":{"version":3,"pages":39,"domains":10,"domainBreakdown":{"comune.pordenone.it":{"pages":27,"citationAllowed":27,"internalOnly":0,"sourceType":"official"},"regione.fvg.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"arpa.fvg.it":{"pages":3,"citationAllowed":3,"internalOnly":0,"sourceType":"official"},"asfo.sanita.fvg.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"pordenonecapitale2027.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"prefettura.interno.gov.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"estate.comune.pordenone.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"primavera.comune.pordenone.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"biblioteca.comune.pordenone.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"meteo.fvg.it":{"pages":2,"citationAllowed":2,"internalOnly":0,"sourceType":"official"}},"citationAllowedPages":39,"internalOnlyPages":0,"pagesWithOtherOnlyTopic":3,"pagesWithoutText":0,"topicCoverage":14,"faqSourceUrls":0,"faqPublicUrls":0,"tokens":{"pageTerms":5879,"faqTerms":1659},"duplicateCanonicalCandidates":252,"updatedAt":"2026-10-07T02:22:36.935Z"}},"countsReady":true,"metrics":{"queryTotal":1824,"queryHit":1068,"queryMiss":756,"ingestPage":94784,"ingestChat":14592,"answerIssueCreated":80,"answerIssueMerged":47,"lastCrawlAt":"2026-10-07T02:22:37.210Z","lastCrawlStatus":{"total":41,"ok":37,"fail":0,"optionalUnavailable":4,"failedDomains":{},"optionalUnavailableDomains":{"protezionecivile.fvg.it":4},"optionalUnavailableSources":[{"url":"https://www.protezionecivile.fvg.it/it","domain":"protezionecivile.fvg.it","error":"fetch failed"},{"url":"https://www.protezionecivile.fvg.it/it/allerte","domain":"protezionecivile.fvg.it","error":"fetch failed"},{"url":"https://www.protezionecivile.fvg.it/it/previsione-ed-allerta","domain":"protezionecivile.fvg.it","error":"fetch failed"},{"url":"https://www.protezionecivile.fvg.it/it/widget-allerta","domain":"protezionecivile.fvg.it","error":"fetch failed"}],"failed":[]},"neo4jAvailable":true,"candidateCreated":1945,"candidateSkipped":1533,"candidateMerged":10630,"ingestChatSkippedSynthetic":1,"lastFullCrawlAt":"2026-10-07T02:22:37.210Z","lastFullCrawlStatus":{"total":41,"ok":37,"fail":0,"optionalUnavailable":4,"failedDomains":{},"optionalUnavailableDomains":{"protezionecivile.fvg.it":4},"optionalUnavailableSources":[{"url":"https://www.protezionecivile.fvg.it/it","domain":"protezionecivile.fvg.it","error":"fetch failed"},{"url":"https://www.protezionecivile.fvg.it/it/allerte","domain":"protezionecivile.fvg.it","error":"fetch failed"},{"url":"https://www.protezionecivile.fvg.it/it/previsione-ed-allerta","domain":"protezionecivile.fvg.it","error":"fetch failed"},{"url":"https://www.protezionecivile.fvg.it/it/widget-allerta","domain":"protezionecivile.fvg.it","error":"fetch failed"}],"failed":[]},"refreshInProgress":false,"refreshStartedAt":"2026-10-07T02:22:21.210Z","refreshCompletedAt":"2026-10-07T02:22:37.210Z","refreshTotal":41,"refreshProcessed":41,"refreshFailed":0,"refreshCurrentUrl":null,"refreshError":null,"refreshCurrentUrls":[],"refreshConcurrency":4,"candidateRejectedQuality":24,"candidateRejectedSynthetic":1,"candidateRejectedOverflow":18,"refreshOptionalUnavailable":4,"answerIssueArchivedBenign":8,"graphCounts":{"sources":10,"pages":39,"faqs":342,"chatTurns":170,"candidatePending":0,"candidatePendingMax":500,"candidatePendingTarget":400,"answerIssueOpen":1,"answerIssueMax":500,"topics":14,"indexedPages":39,"indexedFaqs":342,"canonicalCandidates":1040,"normalization":{"version":3,"pages":39,"domains":10,"domainBreakdown":{"comune.pordenone.it":{"pages":27,"citationAllowed":27,"internalOnly":0,"sourceType":"official"},"regione.fvg.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"arpa.fvg.it":{"pages":3,"citationAllowed":3,"internalOnly":0,"sourceType":"official"},"asfo.sanita.fvg.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"pordenonecapitale2027.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"prefettura.interno.gov.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"estate.comune.pordenone.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"primavera.comune.pordenone.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"biblioteca.comune.pordenone.it":{"pages":1,"citationAllowed":1,"internalOnly":0,"sourceType":"official"},"meteo.fvg.it":{"pages":2,"citationAllowed":2,"internalOnly":0,"sourceType":"official"}},"citationAllowedPages":39,"internalOnlyPages":0,"pagesWithOtherOnlyTopic":3,"pagesWithoutText":0,"topicCoverage":14,"faqSourceUrls":0,"faqPublicUrls":0,"tokens":{"pageTerms":5879,"faqTerms":1659},"duplicateCanonicalCandidates":252,"updatedAt":"2026-10-07T02:22:36.935Z"}},"graphStoreBytes":5488171,"graphSummaryUpdatedAt":"2026-10-07T02:22:37.209Z","lastCandidatePruneAt":"2026-10-05T08:52:07.670Z","lastNeo4jError":"Neo4j timeout after 5000ms","answerIssueSkippedBenign":94,"neo4jQueueDepth":0,"neo4jQueueDropped":0,"neo4jQueueMax":250},"sourcePolicy":{"official":["comune.pordenone.it","regione.fvg.it","asfo.sanita.fvg.it","protezionecivile.fvg.it","arpa.fvg.it","meteo.fvg.it","prefettura.interno.gov.it","interno.gov.it","pordenonecapitale2027.it","cultura.gov.it"],"secondary":[]},"taxonomy":[{"id":"anagrafe-stato-civile","label":"Anagrafe e stato civile"},{"id":"animali","label":"Animali e anagrafe canina"},{"id":"ambiente","label":"Ambiente e verde pubblico"},{"id":"eventi-cultura","label":"Eventi e cultura"},{"id":"mobilita-parcheggi","label":"Mobilita e parcheggi"},{"id":"segnalazioni","label":"Segnalazioni e manutenzioni"},{"id":"protezione-civile","label":"Protezione civile e allerte"},{"id":"amministrazione","label":"Amministrazione e organi politici"},{"id":"tributi-pagamenti","label":"Tributi e pagamenti"},{"id":"scuola-famiglia","label":"Scuola e famiglia"},{"id":"servizi-sociali","label":"Servizi sociali"},{"id":"salute-sanita","label":"Salute e sanita"},{"id":"urp-contatti","label":"URP e contatti"}]},"today":{},"quality":{"status":"ok","reasons":[],"totalReplies":0,"groundedReplies":0,"groundedRatio":0,"fallbackTotal":0,"fallbackRatio":0,"aiErrorTotal":0,"aiErrorRatio":0,"thresholds":{"fallbackWarnRatio":0.08,"fallbackCriticalRatio":0.15,"aiErrorWarnRatio":0.02,"aiErrorCriticalRatio":0.05},"sources":{"template":0,"cache":0,"localKb":0,"localRouter":0,"graphHit":0,"eventCache":0,"webResearch":0,"ai":0,"fallback":0,"aiError":0},"updatedAt":null},"config":{"aiProvider":"qwen","aiModelFast":"gemini-2.5-flash-lite","aiModelSmart":"gemini-2.5-flash","geminiConfigured":true,"openaiConfigured":false,"codexCliConfiguredModel":"gpt-5.4-mini","codexCliModel":"gpt-5.4-mini","graphEnabled":true,"graphUrl":"127.0.0.1:5010","graphTimeoutMs":2500,"graphIngestTimeoutMs":12000,"cacheMinSimilarity":0.78,"cacheTtlMs":21600000,"cacheStoresAiReplies":false,"localKbMinScore":6,"retrievalChunks":4}}