Hoppa till innehållet

Funktionerna

Yta

Samlar 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

Tabell: Sökväg, Roll
SökvägRoll
app/(projekt)/funktioner/funktioner.tsTyperna, 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.tsprovaFunktion (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.tsTabellen funktioner i startsidans databas. Fyller på startdatan med INSERT OR IGNORE; bygger sparas som JSON.
funktionslista/server.tsallaFunktioner, 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.tsFormulärets server actions: spara och logga ut. Kontrollerar skrivkakan själv.
funktionslista/funktionslista.test.tsReglerna, databasen och API:t – också att en skrivning utan nyckel nekas.
app/api/funktioner/route.tsGET alla funktioner, POST en ny.
app/api/funktioner/[id]/route.tsGET, PUT och PATCH på en funktion. Ingen DELETE.
app/(projekt)/funktioner/page.tsxSidan: 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.tsxFormulä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.tsxInloggningen med skrivnyckeln.
app/(projekt)/funktioner/ny/page.tsxLä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

Tabell: Namn, Signatur, Beskrivning
NamnSignaturBeskrivning
GET /api/funktioner→ 200 { funktioner: Funktion[] }Alla funktioner. Öppet.
POST /api/funktionerAuthorization: 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 } | 404En funktion. Öppet.
PUT /api/funktioner/:idBearer, body: FunktionIn → 200 { funktion, url } | 400 | 404Byter allt utom id:t.
PATCH /api/funktioner/:idBearer, body: Partial<FunktionIn> → 200 { funktion, url } | 400 | 404Byter bara de fält som skickas, till exempel { "lage": "paborjad" }.

Kontrakt

Tabell: Fält, Typ, Krav
FältTypKrav
namnstring3–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.
textstring10–1200 tecken. Vad funktionen gör och för vem.
kallastringUnderlaget: varifrån och när, till exempel ”Önskemål från verksamheten, inkommet 16 okt 2026”.
prickarnumber?Från en prickröstning.
byggerstring[]?Id:n på funktioner som finns. Aldrig det egna.
id, skapad, andradstringSä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