// ── Module "Handleiding" — inhoud ────────────────────────────────────────────
// Snelstartgids + gedetailleerde documentatie per module: hoe je elke module
// in enkele stappen gebruikt (snelstart), hoe ze onder de motorkap werkt
// (werking), met welke andere modules ze samenspeelt (interacties) en welke
// gebruikstips het kantoor hanteert. Pure data — de weergave leeft in
// app/handleiding/page.tsx. De koppeling met lib/modules.ts wordt bewaakt
// door data/handleiding.test.ts: elke module heeft een handleiding, en elke
// verwijzing (moduleId, interactie-doelwit) bestaat echt.

/** Samenspel tussen twee modules, beschreven vanuit de module van de handleiding. */
export interface HandleidingInteractie {
  /** `Module.id` (lib/modules.ts) van de andere module. */
  metModuleId: string;
  /**
   * "naar": deze module stuurt gegevens/opent de andere;
   * "van": deze module ontvangt gegevens van de andere;
   * "beide": tweerichtingsverkeer.
   */
  richting: "naar" | "van" | "beide";
  omschrijving: string;
}

/** Handleiding van één module: snelstart, gedetailleerde werking, samenspel en tips. */
export interface ModuleHandleiding {
  /** `Module.id` uit lib/modules.ts. */
  moduleId: string;
  /** In één zin: waarvoor gebruik je deze module. */
  inEenZin: string;
  /** Genummerde snelstart-stappen (2 à 6). */
  snelstart: string[];
  /** Alinea's met de gedetailleerde werking. */
  werking: string[];
  /** Samenspel met andere modules. */
  interacties: HandleidingInteractie[];
  /** Gebruikstips van het kantoor. */
  tips: string[];
}

/** Snelstart voor de hele applicatie (bovenaan de handleiding). */
export const ALGEMENE_SNELSTART: string[] = [
  "Controleer eenmalig de Kantoorinstellingen (notaris, standplaats, kantoornaam): die voeden automatisch de parameters van akten en mails.",
  "Start een nieuw dossier in de module Dossiers — bij voorkeur via “Importeer uit brondocument”, zodat elk veld zijn bron kent.",
  "Genereer vanuit de dossierfiche de werkdocumenten: ontwerpakte of compromis (Modeldocumenten), modelmails (Modelbrieven) en de afrekening (Ereloonberekening / Schenk- vs Erfbelasting) — telkens met de dossiergegevens al voorgevuld.",
  "Lees elk gegenereerd werkdocument na: [AAN TE VULLEN]-markeringen zijn ontbrekende gegevens, [NAKIJKEN OF SCHRAPPEN]-markeringen zijn beslissingen die de notaris neemt.",
  "Keur voorstellen van AI-agenten goed of af in het tabblad “Te valideren” van Modeldocumenten — de gedeelde bibliotheek wijzigt nooit zonder die validatie.",
];

/**
 * Het governance-kader in drie regimes (zie AGENTS.md), samengevat voor de
 * gebruiker: wat de assistent vrij doet, wat validatie vraagt en wat nooit
 * geautomatiseerd wordt.
 */
export const HANDELINGSREGIMES: { titel: string; omschrijving: string }[] = [
  {
    titel: "Genereren, berekenen en opzoeken — vrij",
    omschrijving:
      "Ontwerpdocumenten invullen, modelmails klaarmaken, afrekeningen berekenen en regelgeving raadplegen wijzigt geen gedeelde gegevens: dat doet de assistent (of een AI-agent) autonoom. Het resultaat is altijd een werkdocument dat de notaris naleest.",
  },
  {
    titel: "De kantoorbibliotheek wijzigen — altijd via validatie",
    omschrijving:
      "Modelclausules of modeldocumenten toevoegen, wijzigen of samenvoegen gebeurt nooit rechtstreeks, maar via een wijzigingsvoorstel in het tabblad “Te valideren” (Modeldocumenten). De notaris keurt goed of wijst af.",
  },
  {
    titel: "De ambtelijke handeling — nooit geautomatiseerd",
    omschrijving:
      "Identiteits- en wilscontrole, voorlezing en het verlijden zelf blijven bij wet aan de notaris. Alles wat de applicatie oplevert is “klaar voor het verlijden”, nooit het verlijden zelf.",
  },
];

export const moduleHandleidingen: ModuleHandleiding[] = [
  {
    moduleId: "handleiding",
    inEenZin: "Deze gids: snelstart en gedetailleerde uitleg per module.",
    snelstart: [
      "Lees bovenaan de algemene snelstart (dossier → werkdocumenten → nalezen → valideren).",
      "Klik in de inhoudsopgave op een module voor haar snelstart.",
      "Klap “Werking in detail” open voor de diepere uitleg, het samenspel en de tips.",
    ],
    werking: [
      "De handleiding beschrijft elke module op drie niveaus: een snelstart in enkele stappen, de gedetailleerde werking, en het samenspel met de andere modules. De inhoud leeft als gestructureerde data (data/handleiding.ts) en wordt door een test bewaakt: een nieuwe module kan niet stilzwijgend zonder handleiding blijven.",
    ],
    interacties: [],
    tips: [
      "Mis je uitleg of klopt iets niet meer? Registreer het als verbetervoorstel — een AI-agent werkt de gids dan bij.",
    ],
  },
  {
    moduleId: "voortgang",
    inEenZin: "Dashboard van de hele uitbouw: waar staat Notary.AI vandaag.",
    snelstart: [
      "Open de module: je ziet de dossierketen (lagen 0–8 van de autonomie-roadmap) met per laag de status.",
      "Bekijk de werven (grotere bouwstappen) en de bewaakte meters.",
      "Klik door naar een module om ze te gebruiken.",
    ],
    werking: [
      "Voortgang toont in één oogopslag hoe ver de uitbouw richting het einddoel staat: een assistent die de volledige dossierketen voorbereidt en de tussenkomst van de notaris beperkt tot het wettelijk voorbehouden sluitstuk. De lagen komen uit de autonomie-roadmap (AUTONOMIE-ROADMAP.md); de meters zijn dezelfde die de kwaliteitstests bewaken.",
      "De pagina is beschrijvend: er worden geen gegevens gewijzigd. Ze is bedoeld voor de notaris die wil zien wat al betrouwbaar werkt en wat in aanbouw is.",
    ],
    interacties: [
      { metModuleId: "gouden-paden", richting: "naar", omschrijving: "Gouden paden detailleert per rechtshandeling wat Voortgang op ketenniveau toont." },
    ],
    tips: [
      "Een module met status “in aanbouw” kan al bruikbaar zijn voor deelscenario's — de gouden paden tonen welke rechtshandelingen al volledig gedragen worden.",
    ],
  },
  {
    moduleId: "gouden-paden",
    inEenZin: "Per rechtshandeling: wat de assistent al zelfstandig klaarzet en wat nog ontbreekt.",
    snelstart: [
      "Kies een rechtshandeling (verkoop, schenking, nalatenschap, …).",
      "Bekijk de vijf pijlers: ontwerp opstellen, FR-spiegel, aktetype-detectie, modelmails, afrekening.",
      "Groen = gedragen; de openstaande gaten zijn de eerstvolgende bouwstappen.",
    ],
    werking: [
      "Een “gouden pad” is een rechtshandeling waarvoor de assistent op basis van de bronstukken zelfstandig het volledige pakket klaarzet: de ontwerpdocumenten (NL én FR), de bijbehorende modelmails en de afrekening (aktekosten/ereloon en schenk-/erfbelasting). De status per pad wordt berekend uit het echte gedrag van de applicatie, niet uit een handmatig bijgehouden lijstje — een pad kleurt pas groen wanneer de generatie effectief werkt.",
    ],
    interacties: [
      { metModuleId: "dossier", richting: "van", omschrijving: "De paden beschrijven wat een dossier van dat type kan genereren." },
      { metModuleId: "voortgang", richting: "van", omschrijving: "Voortgang aggregeert de paden tot een ketenoverzicht." },
    ],
    tips: [
      "Begin een nieuw dossiertype bij voorkeur op een groen pad: daar is de hele keten (ontwerp, mails, afrekening) al betrouwbaar.",
    ],
  },
  {
    moduleId: "belasting",
    inEenZin: "Vergelijk schenk- en erfbelasting per gewest en verwantschap, schijf per schijf.",
    snelstart: [
      "Kies gewest en verwantschapsrelatie, en geef het bedrag (of meerdere begunstigden) in.",
      "Lees de vergelijking per schijf, met de fiscale redenering erbij.",
      "Spring met één klik door naar de aktekosten van de schenkingsakte (Ereloonberekening).",
    ],
    werking: [
      "De module rekent de schenkbelasting en de erfbelasting uit volgens de barema's per gewest (Vlaanderen, Brussel, Wallonië) en per relatiecategorie, en zet beide naast elkaar zodat het fiscale voordeel van schenken tegenover vererven zichtbaar wordt. Alle tarieven en drempels leven als pure data (data/belastingen.ts) — de pagina bevat zelf geen bedragen, zodat een tariefwijziging op één plaats volstaat.",
      "Voor complexere planningen kun je meerdere begunstigden opgeven; de simulatie verdeelt en berekent per begunstigde.",
    ],
    interacties: [
      { metModuleId: "ereloon", richting: "naar", omschrijving: "Vanuit een schenkingssimulatie open je de ereloonmodule met akteType, bedrag en relatie voorgevuld (handoff)." },
      { metModuleId: "dossier", richting: "van", omschrijving: "Een dossier opent deze module met de belastbare waarde en verwantschap al ingevuld." },
    ],
    tips: [
      "Tarieven zijn ter indicatie: controleer bij een beslissend advies altijd de actuele wetgeving (module Regelgeving).",
    ],
  },
  {
    moduleId: "ereloon",
    inEenZin: "Volledige kostenraming van een akte: ereloon, aktekosten, overheidsrechten.",
    snelstart: [
      "Kies het akteType (verkoop, hypotheekvestiging, schenking, …).",
      "Geef het bedrag (prijs, kredietbedrag, geschonken waarde) in.",
      "Lees de uitsplitsing: ereloon volgens barema, getarifeerde aktekosten, registratie- en hypotheekrechten.",
    ],
    werking: [
      "De berekening volgt de wettelijke barema's per akteType en telt daar de getarifeerde aktekosten en de overheidsrechten (registratie, overschrijving, hypothecaire formaliteiten) bij op. Net als bij de belastingmodule leven alle tarieven als pure data (data/ereloon.ts).",
      "Het resultaat is een indicatieve cliëntafrekening die je als werkdocument in het dossier gebruikt; de definitieve afrekening blijft kantoorwerk.",
    ],
    interacties: [
      { metModuleId: "belasting", richting: "van", omschrijving: "De schenkingssimulatie opent deze module met de schenkingsgegevens voorgevuld." },
      { metModuleId: "dossier", richting: "van", omschrijving: "Een dossier opent deze module voor de verkoopakte (prijs) of de kredietakte (kredietbedrag) met het bedrag voorgevuld." },
    ],
    tips: [
      "Bij een verkoop met krediet maak je twee ramingen: één voor de verkoopakte en één voor de hypotheekvestiging — het dossier heeft voor beide een knop.",
    ],
  },
  {
    moduleId: "vastgoed",
    inEenZin: "Welke opzoekingen zijn vereist voor deze rechtshandeling, in dit gewest.",
    snelstart: [
      "Kies de rechtshandeling en het gewest.",
      "Doorloop de lijst van vereiste opzoekingen (kadaster, stedenbouw, bodem, voorkooprechten, …).",
      "Vink af wat al in het dossier zit; de rest is je opzoekingslijst.",
    ],
    werking: [
      "Per rechtshandeling en per gewest verschillen de verplichte opzoekingen en attesten (denk aan OVAM/Leefmilieu Brussel/SPW voor bodem, EPC/PEB, voorkooprechten, erfgoed). De module bundelt die vereisten zodat niets over het hoofd wordt gezien, met per opzoeking de bevoegde instantie.",
      "Het effectief aanvragen bij de overheid gebeurt (nog) buiten de applicatie; de module is de checklist en de bron van de aanvraaggegevens.",
    ],
    interacties: [
      { metModuleId: "dossier", richting: "van", omschrijving: "Een dossier opent deze module met gewest en rechtshandeling al gekozen." },
    ],
    tips: [
      "Start de opzoekingen zo vroeg mogelijk in het dossier: sommige attesten (bodem, stedenbouw) bepalen mee de clausules van het compromis.",
    ],
  },
  {
    moduleId: "dossier",
    inEenZin: "De spil: één gestructureerde dossierfiche waaruit alle werkdocumenten vertrekken.",
    snelstart: [
      "Maak een dossier aan — bij voorkeur via “Importeer uit brondocument” (een AI-agent leest compromis of intake in als gestructureerde JSON).",
      "Controleer de fiche: elk veld toont zijn bron, zodat tegenstrijdigheden tussen documenten zichtbaar blijven.",
      "Genereer vanuit de fiche: ontwerpakte/compromis, modelmails, aktekosten en belastingsimulatie — telkens voorgevuld.",
      "Open het tabblad “Werkdossiers (.docx)”: elke Word-generatie blijft 24 uur als sessie staan — bekijk het document in het venster rechts, bewerk het (rechtstreeks of via de parameters) en download de aangepaste versie.",
      "Volg de dossierlijst werklijst-gedreven op: urgentie, statusfilter en labels tonen wat vandaag aandacht vraagt.",
    ],
    werking: [
      "De dossierfiche is gestructureerd per rubriek (partijen, goed met kadastrale gegevens, prijs, hypothecaire lasten, verwantschap, …). Bij import uit een brondocument bewaart elk veld zijn herkomst; wijkt een later stuk af, dan zie je beide bronnen naast elkaar in plaats van een stille overschrijving.",
      "Uit de fiche worden de andere modules gevoed via getypeerde “handoffs”: de dossiergegevens worden eenmalig meegegeven en vullen daar de parameters voor. Het aktetype wordt automatisch gedetecteerd uit de dossierfeiten en bepaalt welk modeldocument, welke mails en welke afrekening passen.",
      "De detectie kiest ook de juiste hypotheses in de clausules (bv. burgerlijke staat van de partijen, gewest van het goed) zodat het gegenereerde werkdocument al zo ver mogelijk op maat staat.",
      "Het tabblad Werkdossiers (voorheen een aparte module) bewaart elke .docx-generatie 24 uur onder een dossierToken (Supabase, met in-memory-terugval). Het documentvenster toont de ontwerptekst van het .docx — gereconstrueerd met exact dezelfde motor als de Word-generatie — en laat ze rechtstreeks bewerken; opslaan rendert meteen een nieuw .docx. Een AI-agent werkt op dezelfde sessies via de MCP-tools lijstWerkdossierSessies / haalWerkdossierSessie / werkWerkdossierSessieBij.",
    ],
    interacties: [
      { metModuleId: "modeldocumenten", richting: "naar", omschrijving: "Genereert de ontwerpakte of het compromis met partijen, goed en prijs voorgevuld, en de hypotheses al gekozen." },
      { metModuleId: "modelbrieven", richting: "naar", omschrijving: "Opent de mailbibliotheek met partijen, prijs en ontbrekende stukken voorgevuld." },
      { metModuleId: "ereloon", richting: "naar", omschrijving: "Opent de kostenraming voor verkoop- of kredietakte met het bedrag voorgevuld." },
      { metModuleId: "belasting", richting: "naar", omschrijving: "Opent de belastingsimulatie met belastbare waarde en verwantschap voorgevuld." },
      { metModuleId: "vastgoed", richting: "naar", omschrijving: "Opent de opzoekingslijst voor het gewest en de rechtshandeling van het dossier." },
    ],
    tips: [
      "Importeer liever dan handmatig in te tikken: de bronvermelding per veld is je audit-spoor bij tegenstrijdige stukken.",
      "Genereer werkdocumenten opnieuw nadat de fiche is aangevuld — ze vertrekken altijd van de actuele dossierstand.",
    ],
  },
  {
    moduleId: "regelgeving",
    inEenZin: "Wetgevingsbibliotheek van het kantoor, met notities en bladwijzers.",
    snelstart: [
      "Kies een wet of decreet in de lijst.",
      "Navigeer door de artikelen; zet bladwijzers op veelgebruikte bepalingen.",
      "Noteer kantoorinterpretaties als annotatie bij het artikel.",
    ],
    werking: [
      "De module centraliseert de teksten waarmee het kantoor dagelijks werkt en verrijkt ze met eigen notities en bladwijzers, gedeeld over het kantoor. Zo groeit naast de wettekst een laag kantoorpraktijk die bij het artikel zelf staat in plaats van in losse documenten.",
      "Een actualiteitscontrole signaleert wanneer een geraadpleegde tekst mogelijk gewijzigd is, zodat verouderde clausules (zie ook de nazicht-status in Modeldocumenten) sneller opvallen.",
    ],
    interacties: [
      { metModuleId: "modeldocumenten", richting: "naar", omschrijving: "De wetsbasis van clausules verwijst naar bepalingen die je hier naleest; de nazicht-status van clausules volgt de evoluerende wetgeving." },
    ],
    tips: [
      "Leg een bladwijzer bij elk artikel dat een modelclausule schraagt — bij een wetswijziging vind je zo meteen de te herziene clausules.",
    ],
  },
  {
    moduleId: "modeldocumenten",
    inEenZin: "De evolutieve bibliotheek van clausules en modellen — het hart van de documentgeneratie.",
    snelstart: [
      "Open het tabblad Modeldocumenten: de modellen staan als NL/FR-paar per rechtshandeling, met standaard een ingevulde voorbeeldakte.",
      "Pas de voorbeeldwaarden aan — de NL- en FR-voorbeeldakte werken live mee.",
      "Klik “Vul in & genereer” voor een echt werkdocument (of laat het dossier dat voorvullen), en exporteer naar Word.",
      "Keur in het tabblad “Te valideren” de wijzigingsvoorstellen van AI-agenten goed of af — met NL/FR-voorbeeld en de wijzigingen gemarkeerd.",
    ],
    werking: [
      "Modellen zijn opgebouwd uit herbruikbare modelonderdelen (clausules) met hypotheses (varianten) en {{parameters}}. Bij het genereren kies je per clausule de toepasselijke hypothese en vul je de parameters in; niet-gemaakte keuzes blijven uitdrukkelijk gemarkeerd ([KIES DE TOEPASSELIJKE HYPOTHESE…], [NAKIJKEN OF SCHRAPPEN]) zodat het resultaat een na te lezen werkdocument blijft.",
      "NL en FR lopen als paar: elke clausule en elk model heeft (of krijgt) een spiegelvertaling met dezelfde hypotheses en parameters. De pariteit wordt door tests bewaakt; in de lijst kleurt een nog te vertalen clausule groen.",
      "De gedeelde bibliotheek wordt nooit rechtstreeks gewijzigd: elke aanpassing — ook door een AI-agent via de MCP-server — komt als wijzigingsvoorstel in “Te valideren” terecht, met het verschil tegenover de bestaande clausule woordelijk gemarkeerd in het ingevulde NL/FR-voorbeeld. Goedkeuren neemt de nieuwe versie op (met versiehistoriek en herstel); afwijzen verwijdert het voorstel.",
      "De overige tabbladen: Modelonderdelen (de clausules zelf, met ingevuld NL/FR-voorbeeld per clausule), Overzicht & hergebruik (welke clausule in welk model), Verrijken (nieuwe bronnen laten verwerken) en Verwerkte bronnen (het register van reeds geïntegreerde brondocumenten).",
    ],
    interacties: [
      { metModuleId: "dossier", richting: "van", omschrijving: "Een dossier opent de invulweergave met waarden, partijherhalingen en hypothese-keuzes al klaargezet." },
      { metModuleId: "ai-prompts", richting: "naar", omschrijving: "Een model kan als context aan een AI-prompt worden meegegeven (Modus A)." },
      { metModuleId: "regelgeving", richting: "naar", omschrijving: "De wetsbasis per clausule verwijst naar de regelgeving; het juridisch nazicht volgt wetswijzigingen." },
      { metModuleId: "instellingen", richting: "van", omschrijving: "Kantoorgegevens (notaris, standplaats) vullen de vaste akteparameters." },
    ],
    tips: [
      "Gebruik de live voorbeeldakte om een model te leren kennen vóór je het in een dossier inzet: je ziet meteen welke parameters en hypotheses er zijn.",
      "Dupliceer een kantoormodel niet om een variant te maken — voeg een hypothese toe aan de bestaande clausule (via een wijzigingsvoorstel), anders ontstaan parallelle versies die uit elkaar groeien.",
      "Behandel “Te valideren” regelmatig: hoe korter de wachtrij, hoe sneller verbeteringen van agenten in de bibliotheek terechtkomen.",
    ],
  },
  {
    moduleId: "modelbrieven",
    inEenZin: "Modelmails voor dossierbeheer, in NL/FR/EN naast elkaar, klaar om te kopiëren.",
    snelstart: [
      "Zoek of filter op categorie (betaling, akteontwerp, verkoop, nalatenschap, …) en kies een modelmail.",
      "Vul de parameters in — alle taalversies (NL/FR/EN) werken live mee.",
      "Vink de toepasselijke passages (varianten) aan en kopieer onderwerp + tekst naar je e-mailclient.",
    ],
    werking: [
      "Elke modelbrief heeft een onderwerp en tekst met {{parameters}}, optionele varianten (alternatieve passages zoals een andere betaalwijze) en een vaste afsluiting. Vertalingen zijn gekoppelde items: kies je een brief, dan verschijnen alle beschikbare taalversies naast elkaar, aangedreven door één gedeelde parameterset.",
      "Vanuit een dossier opent de module met de gekende gegevens (partijen, prijs, referte, ontbrekende stukken) al ingevuld — velden “uit dossier” zijn gemarkeerd zodat je ziet wat je nog moet aanvullen.",
    ],
    interacties: [
      { metModuleId: "dossier", richting: "van", omschrijving: "Het dossier kiest de passende categorie en vult de parameters voor." },
      { metModuleId: "instellingen", richting: "van", omschrijving: "Kantoorgegevens vullen de vaste mailparameters (kantoornaam, notaris)." },
    ],
    tips: [
      "Kies de taal van de cliënt: de EN-versies bestaan voor de meest voorkomende brieven aan anderstalige kopers/verkopers.",
      "Controleer de aangevinkte passages vóór het kopiëren — standaard staan ze allemaal aan, zodat je niets over het hoofd ziet.",
    ],
  },
  {
    moduleId: "conventie-nazicht",
    inEenZin: "Een van een derde ontvangen ontwerp (onbekend model) toetsen aan de kennisbank en aanpassen in track changes.",
    snelstart: [
      "Plak of upload het ontwerp dat je van een confrater, makelaar of partij ontving (compromis, volmacht, bevestiging bankgift, …).",
      "Controleer de automatisch herkende rechtshandeling of kies ze zelf.",
      "Overloop de bevindingen — essentieel, belangrijk, kan beter, te vermijden — en download het .docx: elk voorstel staat als bijgehouden wijziging, die je in Word per punt aanvaardt of verwerpt.",
    ],
    werking: [
      "De module toetst de tekst aan een kennisbank van controlepunten per rechtshandeling. Vereiste punten die ontbreken worden als in te voegen clausule voorgesteld; verdachte formuleringen (voorschot aan de verkoper, absolute exoneratie, beding over een niet-opengevallen nalatenschap, …) worden als schrapping of vervanging aangeduid, telkens met motivering en wetsbasis.",
      "In het tabblad “Kennisbank beheren” consulteer, valideer en bewerk je de controlepunten, en voeg je eigen kantoorpunten toe. De seed wijzigt nooit rechtstreeks: elke validatie of bewerking wordt als kantooraanpassing bewaard (gesynchroniseerd tussen apparaten). De effectieve, gevalideerde kennisbank voedt het nazicht.",
    ],
    interacties: [
      { metModuleId: "modeldocumenten", richting: "naar", omschrijving: "De voorgestelde clausules sluiten aan bij de modelclausules van de kantoorbibliotheek (o.m. de verplichte beschrijving onroerend goed)." },
    ],
    tips: [
      "Het resultaat blijft een werkdocument: aanvaard of verwerp elke wijziging in Word en lees het na vóór je het terugstuurt.",
      "Valideer de controlepunten die het kantoor onderschrijft — zo weet je in één oogopslag welke punten AI-opgesteld en welke nagekeken zijn.",
    ],
  },
  {
    moduleId: "kennisbank",
    inEenZin: "Gedeelde kantoorkennis: werkwijzen, aandachtspunten en checklists.",
    snelstart: [
      "Zoek op thema of categorie, of blader door de gevalideerde items.",
      "Voeg zelf kennis toe — nieuwe items starten als “te valideren”.",
      "Gebruik de checklists als afvinkbare werkwijze per dossiertype.",
    ],
    werking: [
      "De kennisbank bundelt wat vroeger in hoofden en losse notities zat: kantoorgebruiken, valkuilen, stappenplannen. Items hebben een status (gevalideerd / te valideren / gearchiveerd) zodat de gedeelde waarheid expliciet gevalideerd is, en checklists maken werkwijzen afvinkbaar.",
      "AI-agenten die dossiers voorbereiden raadplegen dezelfde werkwijzen: kennis die je hier vastlegt, stuurt dus ook het gedrag van de assistent.",
    ],
    interacties: [
      { metModuleId: "ai-prompts", richting: "naar", omschrijving: "Werkwijzen uit de kennisbank voeden de instructies waarmee agenten dossiers behandelen." },
    ],
    tips: [
      "Leg een les uit een incident meteen vast als kennisitem — de validatiestap houdt de kwaliteit hoog zonder de drempel te verhogen.",
    ],
  },
  {
    moduleId: "ai-prompts",
    inEenZin: "Herbruikbare instructieprompts voor AI-agenten bij dossierwerk.",
    snelstart: [
      "Kies de prompt die bij de taak past (dossier voorbereiden, model invullen, …).",
      "Kopieer de prompt naar je AI-omgeving (Claude, Microsoft Copilot, …) en voeg de dossierstukken toe (Modus A).",
      "Laat de agent het werkdocument opleveren en lees het na zoals elk werkdocument.",
    ],
    werking: [
      "De prompts leggen per taak vast wat een agent moet doen, welke bronnen hij raadpleegt en in welk formaat hij oplevert — inclusief de vaste markeringsconventies ([AAN TE VULLEN], [NAKIJKEN OF SCHRAPPEN]) zodat agent-output naadloos in de kantoorworkflow past.",
      "In Modus A geef je een modeldocument uit de bibliotheek mee als context, gevolgd door de dossierstukken: de agent vult dan het kantoormodel in plaats van zelf een structuur te verzinnen.",
    ],
    interacties: [
      { metModuleId: "modeldocumenten", richting: "van", omschrijving: "Een model uit de bibliotheek wordt als context aan de prompt meegegeven (Modus A)." },
      { metModuleId: "kennisbank", richting: "van", omschrijving: "Werkwijzen uit de kennisbank worden in de instructies verwerkt." },
    ],
    tips: [
      "Werk altijd met Modus A wanneer er een kantoormodel bestaat: de agent blijft dan binnen de gevalideerde bibliotheek.",
    ],
  },
  {
    moduleId: "verbetervoorstellen",
    inEenZin: "De backlog van de applicatie: registreer wat beter moet, een AI-agent voert uit.",
    snelstart: [
      "Beschrijf de gewenste verbetering en geef een prioriteit.",
      "Een AI-agent pikt het voorstel op en implementeert het.",
      "Volg de status op en toets het resultaat in de applicatie.",
    ],
    werking: [
      "De module is de brug tussen gebruikers en de (AI-)bouwers van de applicatie: elk voorstel is een gestructureerd werkitem met prioriteit. Zo verloopt de doorontwikkeling langs dezelfde geverifieerde weg als het dossierwerk.",
    ],
    interacties: [],
    tips: [
      "Beschrijf het gewenste gedrag, niet de technische oplossing — de agent kiest de implementatie die in de architectuur past.",
    ],
  },
  {
    moduleId: "boekhouding",
    inEenZin: "Per verkoopdossier: décompte koper, décompte verkoper en de betalingen door het kantoor.",
    snelstart: [
      "Kies een verkoopdossier in de keuzelijst.",
      "Encodeer de commissiefactuur van het agentschap en vink aan wanneer ze al op het voorschot werd ingehouden — het kantoor betaalt ze dan niet nogmaals.",
      "Encodeer elke ontvangst op de derdenrekening (datum, bedrag, van wie).",
      "Lees de drie panelen na: wat de koper nog moet storten, wat de verkoper netto ontvangt, en welke betalingen het kantoor moet uitvoeren (met dekkingsstatus).",
    ],
    werking: [
      "De verkoopdecompte-motor (lib/dossier/verkoopdecompte.ts) berekent alles uit het dossier met exact dezelfde kosten en heffing als de afrekeningspijler van het werkdossier. De dekking per betaling volgt de derdengeldenregel: het dossiersaldo mag nooit negatief, dus een betaling toont pas 'gedekt' zodra de geëncodeerde ontvangsten ze dragen. Uitbetalingen blijven onder het strengste regime: nooit autonoom, altijd vrijgegeven door de notaris.",
    ],
    interacties: [
      { metModuleId: "dossier", richting: "van", omschrijving: "De decompte vertrekt van de dossiergegevens (prijs, voorschot, hypothecaire lasten, makelaar)." },
      { metModuleId: "ereloon", richting: "van", omschrijving: "Aktekosten en verkooprecht komen uit dezelfde rekenmotor als de ereloonmodule." },
    ],
    tips: [
      "Registreer de doorstorting van het voorschot door het agentschap als ontvangst 'van het agentschap' — niet 'van de koper' — zodat het voorschot niet dubbel telt.",
      "Vraag vóór het verlijden de exacte aflossingsstaat (dagsaldo + royementskosten) op bij de schuldeiser; het dossierbedrag is indicatief.",
    ],
  },
  {
    moduleId: "instellingen",
    inEenZin: "Kantoorgegevens die overal doorwerken: notaris, standplaats, kantoornaam.",
    snelstart: [
      "Vul de kantoorgegevens één keer in (notaris, standplaats, plaats van ondertekening, kantoornaam).",
      "Ze vullen voortaan automatisch de overeenkomstige parameters in akten en mails.",
    ],
    werking: [
      "De instellingen gelden kantoorbreed: elke generatie van een akte of mail neemt de actuele kantoorgegevens op in de vaste parameters, zodat die nooit per document opnieuw worden ingetikt (en dus ook nooit per document verkeerd staan).",
    ],
    interacties: [
      { metModuleId: "modeldocumenten", richting: "naar", omschrijving: "Vult de vaste akteparameters (notaris, standplaats, plaats van verlijden)." },
      { metModuleId: "modelbrieven", richting: "naar", omschrijving: "Vult de vaste mailparameters (kantoornaam, ondertekening)." },
    ],
    tips: [
      "Controleer de instellingen na elke wijziging in het kantoor (nieuwe notaris, adreswijziging) — één aanpassing werkt overal door.",
    ],
  },
];

/** Handleiding van één module opzoeken (undefined = nog niet gedocumenteerd — de test verhindert dit voor geregistreerde modules). */
export function vindHandleiding(moduleId: string): ModuleHandleiding | undefined {
  return moduleHandleidingen.find((h) => h.moduleId === moduleId);
}
