KAOS/TASKS/ready/T08.md
djuka 04ef8e75ef T08: HTTP server + API za taskove
- Gin HTTP server sa dashboard i API endpointima
- JSON API: GET /api/tasks, GET /api/task/:id, POST /api/task/:id/move
- HTML dashboard sa Kanban prikazom (5 kolona)
- HTMX za interaktivnost (klik na task → detalj panel)
- Embedded static fajlovi (htmx.min.js, sortable.min.js)
- Config: dodat KAOS_PORT
- 10 server testova, 77 ukupno — svi prolaze
- Očišćeni duplikati taskova iz v0.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 12:10:49 +00:00

2.8 KiB

T08: HTTP server + API za taskove

Kreirao: planer Datum: 2026-02-20 Agent: coder Model: Sonnet Zavisi od: T07


Opis

Go HTTP server koji servira dashboard i API za upravljanje taskovima. Koristi postojeću supervisor logiku (ScanTasks, FindTask, MoveTask).

Fajlovi za kreiranje

code/
├── cmd/kaos-server/
│   └── main.go                ← HTTP server entry point
├── internal/server/
│   ├── server.go              ← Server struct, rute, handler-i
│   └── server_test.go         ← testovi API-ja
└── web/
    └── static/
        ├── htmx.min.js        ← HTMX (ugradi u binary)
        └── sortable.min.js    ← Sortable.js (ugradi u binary)

API endpointi

GET  /                         → dashboard stranica (HTML)
GET  /api/tasks                → svi taskovi (JSON)
GET  /api/task/{id}            → jedan task (JSON + sadržaj fajla)
POST /api/task/{id}/move       → premesti task (query: to=ready)
GET  /task/{id}                → task detalj (HTML fragment za HTMX)
POST /task/{id}/move           → premesti + vrati ažuriran HTML

Pravila

  • Gin framework (već odlučeno)
  • Port iz .env: KAOS_PORT (default 8080)
  • Static fajlovi ugrađeni u binary (embed.FS)
  • CORS nije potreban (sve sa istog servera)
  • Graceful shutdown

Pravila premestanja (server MORA da validira)

Dozvoljeno iz dashboarda (operater):

  • backlog → ready (odobri task)
  • ready → backlog (povuče nazad)
  • review → done (odobri završen)
  • review → ready (vrati na doradu)

Dozvoljeno samo iz CLI/agenta:

  • ready → active (agent preuzme)
  • active → review (agent završi ili ima pitanje)

Zabranjeno (server odbije sa 403):

  • done → bilo gde
  • active → bilo gde osim review
  • backlog → active (preskoči odobrenje)
  • bilo šta → active osim ready → active

Move endpoint prima source parametar: dashboard ili agent. Ako source=dashboard, dozvoljeni su samo operaterski potezi. Ako source=agent, dozvoljeni su samo agentski potezi. Nepoznat source → 403.

Testovi

  • GET /api/tasks → vraća JSON listu taskova
  • GET /api/task/T01 → vraća task sa sadržajem
  • POST /api/task/T08/move?to=ready&source=dashboard → premesti, 200
  • POST /api/task/T08/move?to=active&source=dashboard → odbije, 403
  • POST /api/task/T08/move?to=active&source=agent → premesti, 200
  • POST /api/task/T01/move?to=backlog&source=dashboard → done task, 403
  • POST /api/task/T99/move?to=ready → nepostojeći, 404
  • POST /api/task/T01/move?to=invalid → nepoznat folder, 400

Očekivani izlaz

go build ./cmd/kaos-server/ kreira binary. go test ./internal/server/ -v — svi testovi zeleni. Server sluša na portu, vraća JSON na API pozive.


Pitanja


Odgovori