Hoppa till innehållet

Att göra-listan

Yta

Samlar allt som ska göras i projektet, från mötena och det som kommer upp mellan dem, så att teamet ser vem som gör vad och vad varje möte ledde till – och kan hålla listan aktuell själv.

källa: apps/projekt/src/app/(projekt)/att-gorauppdaterad:

Ansvar

  • Visa alla uppgifter på /att-gora som en lista per läge – att göra, pågår, inte avstämt, klart – med en rad per uppgift som fälls ut med ett klick, och antalet per läge och per ansvarig överst.
  • Koppla varje uppgift till mötet där den kom upp, och visa mötets uppgifter på mötets sida med länk till platsen i listan.
  • Ge varje uppgift ett fast ankare, /att-gora#<id>. En uppgift tas aldrig bort, den blir klar.
  • Låta projektgruppen, inloggad med egna konton, lägga till uppgifter, ändra dem och byta läge på sidan (ADR-036, ADR-039), och en agent göra detsamma med API:t och skrivnyckeln (planen fas 7, A1). Servern prövar varje skrivning själv och säger vem som gjorde den.
  • Spara uppgifterna så att de överlever en omdeploy: en SQLite-fil i datavolymen, fylld med startdatan i uppgifter.ts.
  • Vara öppen att läsa, med redigeringen bakom ett konto och vem som ändrade synligt bara för inloggade.

Filer

Tabell: Sökväg, Roll
SökvägRoll
app/(projekt)/att-gora/uppgifter.tsTyperna, lägena, LOPANDE, uppgiftHref och startuppgifter – startdatan som läggs in i databasen när den saknas. Med tester på id, möten, länkar, spärren och namn.
attgora/regler.tsprovaUppgift (zod, strikt) och reglerna: möte med egen sida eller löpande och länk från roten. nyttId bildar ett läsbart id ur texten. indataUrJson och tillIndata översätter API:ts form. Ren logik med tester.
app/api/att-gora/route.tsGET alla uppgifter, POST en ny.
app/api/att-gora/[id]/route.tsGET, PUT och PATCH på en uppgift. Ingen DELETE.
attgora/databas.tsTabellen uppgifter i startsidans databas (databas/databas.ts, ADR-037). Fyller på startdatan med INSERT OR IGNORE första gången den läses.
attgora/server.tsallaUppgifter, uppgifterFran, skapa, uppdatera, bytLage och motesval – samma prövning för varje skrivning, och en rad i ändringsloggen i samma transaktion.
attgora/actions.tsServer actions: spara en uppgift, byt läge, logga ut. Varje åtgärd kontrollerar själv att ett konto som får skriva är inloggat, och skickar dess användarnamn till loggen.
attgora/attgora.test.tsReglerna och databasen mot en tillfällig fil.
app/(projekt)/att-gora/page.tsxListan: antalen överst, Ny uppgift, kontot och Konton för admin – eller Redigera listan –, en lista per läge och mötena som bidrar.
app/(projekt)/att-gora/Uppgiftsrad.tsxUppgiftslista på Radlista: kolumnerna uppgift, ansvarig och mötet – eller läget på mötets sida. Ett klick fäller ut hela texten, noten, länkarna och ändringarna, och för den inloggade vem som ändrade, läget att byta och Ändra uppgiften.
app/(projekt)/att-gora/Uppgiftsformular.tsxFormuläret för en ny eller ändrad uppgift. Klient bara för att visa serverns fel – per fält, intill fältet – utan att tappa det som skrivits.
formular/fel.tsFel: ett fel kopplat till fältet det gäller. Regler och actions svarar med det; API:t med texterna (`fel: string[]`).
formular/Formdelar.tsxFormulärens gemensamma delar enligt WCAG 2.2 AA: fältklassen (ram 3:1, basens fokusoutline), Kravrad, Etikett med hjälpen utanför, Faltfel och beskrivs, Felsammanfattning som tar fokus och länkar till fälten, Sparaknapp med aria-disabled medan den skickar, och Sparad – fokus till den sparade raden och ett besked, efter ?sparad=.
app/(projekt)/att-gora/redigera/page.tsxDen gamla vägen in. Leder till /konto och tillbaka till listan, så att utskickade länkar fungerar.
app/(projekt)/att-gora/ny/page.tsxLägg till en uppgift.
app/(projekt)/att-gora/[id]/andra/page.tsxÄndra en uppgift. Id:t visas men ändras inte.
app/(projekt)/_delar/Radlista.tsxListan med rader som fälls ut, i en panel med ett band för kolumnerna. Delas med planen för start.sundsvall.dev.
app/(projekt)/_delar/OppnaVidAnkare.tsxÖppnar raden som /att-gora#<id> eller /material/plan#<id> pekar på.
app/(projekt)/handelser/[id]/page.tsxStandardsidan för ett möte visar Att göra från mötet när mötet har uppgifter.
app/(projekt)/handelser/2026-10-14-taktiska-arbetsgruppen/page.tsxDet första mötet som skrevs in med uppgifter till listan.

API

Tabell: Namn, Signatur, Beskrivning
NamnSignaturBeskrivning
GET /api/att-gora→ 200 { uppgifter: Uppgift[] }Alla uppgifter. Öppet, som listan.
POST /api/att-goraAuthorization: Bearer <STATUS_SKRIVNYCKEL>, body: { vad, fran, lage, ansvarig?, not?, lank? } → 201 { uppgift, url } | 400 { fel: string[] }Lägger till en uppgift. Id:t ges ur texten.
GET /api/att-gora/:id→ 200 { uppgift } | 404En uppgift. Öppet.
PUT /api/att-gora/:idBearer, body: { vad, fran, lage, ansvarig?, not?, lank? } → 200 { uppgift, url } | 400 | 404Byter allt utom id:t.
PATCH /api/att-gora/:idBearer, body: delar av samma → 200 { uppgift, url } | 400 | 404Byter bara de fält som skickas, till exempel { "lage": "klart" }. Tom sträng tar bort ansvarig eller not; lank: null tar bort länken.

Kontrakt

Tabell: Fält, Typ, Krav
FältTypKrav
idstringFast ankare i gemener med bindestreck. Ändras aldrig.
vadstringUppgiften, som mötet formulerade den.
ansvarigstring?Förnamn. Saknas när mötet inte utsåg någon – då syns det i gult.
franstringHändelsens id i tidslinjen – mötet ska ha en egen sida – eller "lopande" för det som kom upp mellan mötena.
lage"att-gora" | "pagar" | "inte-avstamt" | "klart"Inte avstämt betyder att ingen vet läget; det väntar på teamet och är gult.
notstring?Det som behöver sägas om läget eller vägen dit.
lank{ text, href }?Där resultatet går att se, med hela adressen från roten.
skapad, andradstringISO-tid. Sätts av servern, bara i databasen.
  • En ny uppgift eller ett ändrat läge görs på /att-gora, inloggad med ett konto, eller med API:t och skrivnyckeln. Texten i vad ändras helst inte; det som har hänt står i not. En agent visar först exakt vad den skickar och väntar på ett ja.
  • Ett nytt möte med uppgifter kan också committas: händelsen i tidslinjen med en sida, och uppgifterna i uppgifter.ts med mötets id i fran. De läggs in i databasen vid nästa start.
  • En uppgift som redan finns i databasen ändras på sidan. En ändring i uppgifter.ts får ingen verkan på den.

Beroenden och beslut

Beslut: ADR-036, ADR-039, ADR-037, ADR-031, ADR-012

Levererar: /att-gora, /att-gora/ny, /att-gora/<id>/andra, /api/att-gora, attgora/, Att göra från mötet på mötenas sidor, Att göra i huvudmenyn

Kvarstår

  • API:t skriver med skrivnyckeln, inte med ett konto, så ändringsloggen säger inte vem – som för funktionerna.
  • Ingen tavla med kolumner och inga datum för när en uppgift ska vara klar.
  • Ansvarig är ett förnamn i texten, inte ett konto. Kontona är en mellanlösning tills SAML-sessionen i fas 4.

15 delar i projektportalen · gemensamma i devportalen: ai-adapter, anthropic, bygge, designsystem, dokploy, dokumentation, gemensamt, tokens, ui