// ── AUT-S1 · Extractor: stedenbouwkundige inlichtingen ───────────────────────
// Leest de ruimtelijke bestemming, de gekende vergunningen en de datum van de
// stedenbouwkundige inlichtingen (gemeentelijk uittreksel). Voedt
// attesten.stedenbouw. De bestemming stuurt informatieplichten in de akte.

import type { Brondocument, ExtractorRegistratie, GeextraheerdeWaarneming } from "../perceptie";
import { waarneming, eersteMatch, zoekDatumNaLabel } from "../extractie-hulp";

function extractStedenbouw(doc: Brondocument): GeextraheerdeWaarneming[] {
  const t = doc.tekst;
  const w: GeextraheerdeWaarneming[] = [];

  const bestemming = eersteMatch(t, [
    /(?:stedenbouwkundige bestemming|ruimtelijke bestemming|bestemming(?:szone)?|gewestplan)\s*:?\s*([^\n]+)/i,
  ]);
  if (bestemming) w.push(waarneming(doc, "attesten.stedenbouw.bestemming", bestemming.replace(/[.\s]+$/, ""), "zeker"));

  const vergunningen = eersteMatch(t, [
    /(?:stedenbouwkundige vergunning(?:en)?|omgevingsvergunning(?:en)?|vergunning(?:en)?)\s*:?\s*([^\n]+)/i,
  ]);
  if (vergunningen) w.push(waarneming(doc, "attesten.stedenbouw.vergunningen", vergunningen.replace(/[.\s]+$/, ""), "waarschijnlijk"));

  const datum = zoekDatumNaLabel(t, [
    /(?:datum\s+(?:uittreksel|inlichtingen|afgifte)|afgeleverd op|datum)\s*:?\s*(.+)/i,
  ]);
  if (datum) w.push(waarneming(doc, "attesten.stedenbouw.datum", datum, "zeker"));

  return w;
}

export const stedenbouwExtractors: ExtractorRegistratie[] = [
  { bronType: "stedenbouwkundige-inlichtingen", extractor: extractStedenbouw },
];
