Tidslinjen och vägvalen som data
APILåter projektet hålla tidslinjen och vägvalen aktuella direkt – ett möte, en riktning som blir beslutad – utan att någon committar kod och väntar på en deploy.
källa: apps/projekt/src/handelselistauppdaterad:
Ansvar
- Hålla tidslinjens händelser och vägvalen i startsidans databas (planen fas 7), fyllda med startdatan i handelser.ts och innehall.ts. En post som redan finns rörs inte av startdatan.
- Läsa synkront ur databasen med handelser(), allaHandelser(), vagval() och poster(), så att sidorna läser som förut – och rendera dem vid varje visning.
- Ta emot skrivningar med API:t och skrivnyckeln, pröva varje fält i servern och skriva en rad i ändringsloggen i samma transaktion. Ingen DELETE.
- Hålla godkännandet enligt ADR-035: ett nytt inlägg i tidslinjen, och en ändrad rubrik, text eller ett ändrat datum, godkänns innan det skickas.
- Skicka Teams-kortet när en händelse skrivs, och en gång i timmen för det som fått sitt datum, med samma lista över skickade som vid start.
- Låta möten med egen sida, besluten ur ADR:erna och de sex styrande frågorna vara kod.
Filer
| Sökväg | Roll |
|---|---|
| handelselista/databas.ts | Tabellen handelser: startdatan in med INSERT OR IGNORE, listorna som JSON, ordningen bevarad. |
| handelselista/regler.ts | provaHandelse (zod, strikt): ett datum som finns från projektstarten, slag utom beslut, ADR:er som finns, länk från roten. handelseId ger <datum>-<namn>. |
| handelselista/server.ts | handelser(), allaHandelser() med besluten, skapa, ersätt (PUT) och ändra (PATCH), ändringsloggen och Teams-kortet. Mötets egen sida följer med oförändrad. |
| vagval/regler.ts | Typen Vagval och provaVagval: läge, rubrik, möten som finns i tidslinjen, länk från roten. |
| vagval/databas.ts | Tabellen vagval och startvagval – besluten, riktningarna och de mindre frågorna ur innehall.ts. |
| vagval/server.ts | vagval(), skapa, ersätt och ändra. Ett ändrat läge loggas med det gamla. Id:t krockar aldrig med en styrande fråga. |
| app/(projekt)/register.ts | poster() lägger ihop vägvalen ur databasen med de styrande frågorna i koden; posterFran och franText läser händelserna ur databasen. |
| app/api/handelser/route.ts | GET hela tidslinjen, POST en ny händelse. |
| app/api/vagval/route.ts | GET alla vägval, POST ett nytt. |
| handelselista/handelselista.test.ts | Reglerna, startdatan, API:t och loggen mot en tillfällig databas. |
| vagval/vagval.test.ts | Reglerna, startdatan, API:t, registret och mötets sida mot en tillfällig databas. |
API
| Namn | Signatur | Beskrivning |
|---|---|---|
| GET /api/handelser | → 200 { handelser: Handelse[] } | Hela tidslinjen i datumordning, besluten inräknade. Öppet. |
| POST /api/handelser | Authorization: Bearer <STATUS_SKRIVNYCKEL>, body: { datum, slag, rubrik, text, kort?, punkter?, lank?, adr?, spar? } → 201 { handelse, url } | 400 { fel: string[] } | Lägger till en händelse, efter Jaris godkännande. Id:t blir <datum>-<kortform eller rubrik>. Teams-kortet går när datumet har kommit. |
| GET/PUT/PATCH /api/handelser/:id | Bearer för PUT och PATCH → 200 { handelse, url } | 400 | 404 | En händelse. PATCH byter bara de fält som skickas; lank: null tar bort länken. Besluten skrivs inte här. |
| GET /api/vagval | → 200 { vagval: Vagval[] } | Alla beslut, riktningar och mindre öppna frågor. Öppet. |
| POST /api/vagval | Bearer, body: { lage, rubrik, fran, text?, kort?, amne?, lank? } → 201 { vagval, url } | 400 | Lägger till ett vägval. fran är mötenas id i tidslinjen. |
| GET/PUT/PATCH /api/vagval/:id | Bearer för PUT och PATCH → 200 { vagval, url } | 400 | 404 | Ett vägval. { "lage": "beslutat" } gör en riktning beslutad. |
Kontrakt
- Slaget är milstolpe, mote, workshop eller leverans. Besluten kommer ur ADR:erna och adrDatum, som är kod.
- Läget för ett vägval är beslutat, riktning eller oppen. Ett ändrat läge skrivs med PATCH; det gamla står i ändringsloggen.
- En agent visar först exakt vad den skickar och väntar på ett ja – för tidslinjen är det den hårda regeln i ADR-035.
- Lokalt syns startdatan. Det som skrivits med API:t finns bara i produktionens databas.
Beroenden och beslut
Beslut: ADR-035, ADR-036, ADR-038
Levererar: /api/handelser, /api/handelser/<id>, /api/vagval, /api/vagval/<id>, handelselista/, vagval/, tabellerna handelser och vagval
Kvarstår
- De sex styrande frågorna med alternativ och förslag är kod tills de är besvarade.
- Inget formulär på sidan än – skrivningen sker med API:t.
15 delar i projektportalen · gemensamma i devportalen: ai-adapter, anthropic, bygge, designsystem, dokploy, dokumentation, gemensamt, tokens, ui