Funktionerna
YtaSamlar de funktioner som kan komma att utvecklas, i tre lager, så att den som kommer till sidan snabbt förstår vad som är möjligt – utan att säga vad som byggs eller när.
källa: apps/projekt/src/app/(projekt)/funktioneruppdaterad:
Ansvar
- Visa varje funktion med läget i dag, underlaget, prickarna från workshopen och vad den bygger på.
- Ordna funktionerna i tre lager – infrastruktur, grundfunktioner och tjänster – i bokstavsordning och utan tidplan: det är en bruttolista, och vad som byggs och när är inte bestämt.
- Säga tydligt att det är en bruttolista: inget är beslutat, varken vad eller när.
- Ta emot nya funktioner och önskemål löpande – i formuläret och via API:t – och visa dem direkt (ADR-038). Servern prövar varje skrivning själv.
Filer
| Sökväg | Roll |
|---|---|
| app/(projekt)/funktioner/funktioner.ts | Typerna, lagren, perioderna, lägena (LAGEN, KATEGORIER, PERIODER) och startfunktioner – startdatan som läggs in i databasen när den saknas. Med tester på id, beroenden och perioder. |
| funktionslista/regler.ts | provaFunktion (zod, strikt): kända lager, lägen och perioder, slut inte före start, bygger bara på funktioner som finns och aldrig på sig själv. |
| funktionslista/databas.ts | Tabellen funktioner i startsidans databas. Fyller på startdatan med INSERT OR IGNORE; bygger sparas som JSON. |
| funktionslista/server.ts | allaFunktioner, funktion, skapa, ersätt (PUT) och ändra (PATCH) – samma prövning för formulär och API, och en rad i ändringsloggen i samma transaktion. |
| funktionslista/actions.ts | Formulärets server actions: spara och logga ut. Kontrollerar skrivkakan själv. |
| funktionslista/funktionslista.test.ts | Reglerna, databasen och API:t – också att en skrivning utan nyckel nekas. |
| app/api/funktioner/route.ts | GET alla funktioner, POST en ny. |
| app/api/funktioner/[id]/route.ts | GET, PUT och PATCH på en funktion. Ingen DELETE. |
| app/(projekt)/funktioner/page.tsx | Sidan: lagren överst, en lista per lager i bokstavsordning och underlaget – ingen tidplan. Ny funktion och Ändra för den som är inloggad. |
| app/(projekt)/funktioner/Funktionsformular.tsx | Formuläret för en ny eller ändrad funktion, med Bygger på som kryssrutor i en grupp per lager. Felen står intill fälten och nämner namnen i listorna, inte nycklarna. |
| app/(projekt)/funktioner/redigera/page.tsx | Inloggningen med skrivnyckeln. |
| app/(projekt)/funktioner/ny/page.tsx | Lägg till en funktion eller ett önskemål. |
| app/(projekt)/funktioner/[id]/andra/page.tsx | Ändra en funktion. Id:t visas men ändras inte. |
API
| Namn | Signatur | Beskrivning |
|---|---|---|
| GET /api/funktioner | → 200 { funktioner: Funktion[] } | Alla funktioner. Öppet. |
| POST /api/funktioner | Authorization: Bearer <STATUS_SKRIVNYCKEL>, body: FunktionIn → 201 { funktion, url } | 400 { fel: string[] } | Lägger till en funktion. Id:t ges ur namnet. |
| GET /api/funktioner/:id | → 200 { funktion } | 404 | En funktion. Öppet. |
| PUT /api/funktioner/:id | Bearer, body: FunktionIn → 200 { funktion, url } | 400 | 404 | Byter allt utom id:t. |
| PATCH /api/funktioner/:id | Bearer, body: Partial<FunktionIn> → 200 { funktion, url } | 400 | 404 | Byter bara de fält som skickas, till exempel { "lage": "paborjad" }. |
Kontrakt
| Fält | Typ | Krav |
|---|---|---|
| namn | string | 3–100 tecken. |
| kat | "infra" | "grund" | "tjanst" | Lagret. |
| lage | "finns" | "paborjad" | "planerad" | "oppen" | "onskemal" | Läget i dag. |
| fran, till | "okt" | "nov" | "dec" | "efter" | Perioden. till är aldrig före fran. Visas inte på sidan just nu – listan har ingen tidplan. |
| text | string | 10–1200 tecken. Vad funktionen gör och för vem. |
| kalla | string | Underlaget: varifrån och när, till exempel ”Önskemål från verksamheten, inkommet 16 okt 2026”. |
| prickar | number? | Från en prickröstning. |
| bygger | string[]? | Id:n på funktioner som finns. Aldrig det egna. |
| id, skapad, andrad | string | Sätts av servern. Id:t ur namnet, och det ändras aldrig. |
- Läget i dag skrivs om på sidan eller med PATCH när det ändras: finns i prototypen (grönt, byggt med fiktiv data), påbörjad (blått), planerad (grått), öppen fråga (gult) eller önskemål (grått och streckat – inkommet, inte prövat eller prioriterat). Ett nytt önskemål läggs till med läget onskemal, perioden efter och en källa som säger när och varifrån det kom.
- Varje funktion har ett fast id som ankare: /funktioner#<id>. bygger pekar på andra id:n; servern vägrar ett id som inte finns, och ett test vaktar startdatan.
- Lagren skiljs med blåtoner, aldrig med grönt – grönt är status.
- Underlaget är workshopen 8 oktober, arkitekturmötet 6 oktober och prototypen, sammanställt 13 oktober 2026. En ny källa skrivs in i kalla på funktionen.
Beroenden och beslut
Beslut: ADR-038, ADR-032
Levererar: /funktioner, /funktioner/ny, /funktioner/<id>/andra, /api/funktioner, funktionslista/, funktioner.ts (startdata)
Kvarstår
- Vad som utvecklas och när är inte bestämt. Perioderna fran och till finns kvar i datan, API:t och formuläret men visas inte; när en tidplan finns avgörs om de ska användas eller tas bort.
- Funktionerna är inte kopplade till katalogen i devportalen, där det som finns i prototypen redan står.
15 delar i projektportalen · gemensamma i devportalen: ai-adapter, anthropic, bygge, designsystem, dokploy, dokumentation, gemensamt, tokens, ui