Skemaets opgave
Skemaet beskriver obligatoriske felter, typer, enums, grænser og tilladte kombinationer. For en journalpostering betyder det blandt andet dato, DKK, referencer og hele øre. Ukendte felter afvises i partnerprofilen, så et ekstra organisation- eller statusfelt ikke kan blive en uforudset instruktionskanal.
Vær tydelig om null og fravær. Nogle valgfrie felter normaliseres til null, mens manglende debet eller kredit normaliseres til nul før balancekontrol. En tom streng er ikke altid det samme som et manglende felt.
Eksempel på forskellige fejltrin
Et output kan fejle JSON-parsning. Det kan være gyldigt JSON, men have "12500" som en streng i stedet for et tal. Det kan have korrekte typer, men være ubalanceret. Det kan være balanceret, men henvise til en konto i en anden organisation.
De fejl skal ikke alle få samme forklaring. Klienten skal kunne se, om den skal rette syntaks, mapping, fagligt input eller autorisation. En model, der regenererer det samme input ti gange, kan ikke løse en manglende kundegrant.
Normalisering og idempotens
Input normaliseres efter en fast model, før det bruges i domæneoperationen. Objektfelternes rækkefølge er ikke et forretningsmæssigt input, mens rækkefølgen af linjer kan have betydning. Gem derfor en stabil repræsentation af den tilsigtede operation.
Ved retry skal samme nøgle beskrive samme normaliserede input. Hvis modellen ændrer beskrivelsen, linjerne eller datoen mellem to forsøg, er det ikke længere nødvendigvis samme operation. Lad ikke en genoprettet prompt beslutte transaktionsidentitet.
Output fra Hours
Skrivekvitteringen og læselisterne er afgrænsede outputmodeller. De returnerer ikke automatisk hele den interne databasepost. Et felt kan blive udeladt af sikkerhedshensyn, selv om det findes i Hours' interne skema.
Lister og fakturaer kan ændre sig efter, du har læst dem. Journalens beløb er hele øre, og en fakturas total_incl_vat_minor er null, indtil fakturaen er bogført; behandl null som ukendt og ikke som nul.
AI er ikke et autoritetslag
Et AI-system kan hjælpe med at producere en payload. Den skal stadig gennem servervalidering, referencekontrol, grantkontrol og den autoritative transaktion. Modellen kan ikke sætte sin egen aktør eller vælge skjulte sourceværdier.
Hours MCP's lokale validator bruger Partner-API'ets inputmodel og returnerer altid posted: false. Det gør den nyttig før et netværkskald, men resultatet dokumenterer ikke, at kontoen eller regnskabsperioden er undersøgt.
Test og versionsstyring
Test grænseværdier, forkert null, ekstra felter, ukendte enums, store heltal, decimalmængder, kontroltegn og ændringer i arrays. Hold OpenAPI, eksempler og den udførte validator synkroniseret. Et schema i dokumentationen skal ikke love et felt, som serveren afviser, eller omvendt.