import type { NormalizedItem, ScoredItem } from "./types.js"; const DEFAULT_TERMS = [ "health", "technology", "agriculture", "primary production", "horticulture", "infrastructure", "economy", "employment", "trade", "climate", "energy", "transport", "earthquake", "food", "housing", "business", "environment" ]; function watchTerms() { return (process.env.WATCH_TERMS?.split(",") ?? DEFAULT_TERMS) .map((v) => v.trim().toLowerCase()) .filter(Boolean); } export function scoreItem(item: NormalizedItem): ScoredItem { let score = 0; const reasons: string[] = []; const haystack = `${item.title} ${item.summary} ${item.topics.join(" ")}`.toLowerCase(); const matches = watchTerms().filter((term) => haystack.includes(term)).slice(0, 5); if (matches.length) { score += Math.min(3, matches.length); reasons.push(`Matches watch terms: ${matches.join(", ")}`); } if (item.sourceId === "geonet") { const magnitude = Number(item.metrics?.magnitude ?? 0); const mmi = Number(item.metrics?.mmi ?? 0); if (magnitude >= 5) { score += 4; reasons.push(`Magnitude ${magnitude} earthquake`); } else if (magnitude >= 4) { score += 2; reasons.push(`Magnitude ${magnitude} earthquake`); } if (mmi >= 4) { score += 2; reasons.push(`Potentially notable shaking (MMI ${mmi})`); } } if (item.sourceId === "stats-nz") { score += 1; reasons.push("New or changed official statistical release"); } if (item.sourceId === "parliament") { score += 1; reasons.push("New or changed parliamentary evidence/submission"); } if (item.sourceId === "data-govt-nz") { score += 1; reasons.push("New or updated public dataset metadata"); } if (item.sourceId === "treasury") { score += 1; reasons.push("New or updated Treasury publication"); } if (item.sourceId === "rbnz") { score += 1; reasons.push("New or updated Reserve Bank statistical release"); } if (item.sourceId === "mbie-jobs-online") { score += 1; reasons.push("New or updated MBIE labour-demand data"); } if (item.sourceId === "companies-office") { score += 1; reasons.push("New or updated Companies Office business statistics"); } if (item.sourceId === "nz-gazette") { score += 1; reasons.push("New official Gazette notice"); } if (item.sourceId === "electricity-authority") { score += 1; reasons.push("New or updated Electricity Authority supply snapshot"); } return { score, reasons }; }