- 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>
97 lines
2.8 KiB
Markdown
97 lines
2.8 KiB
Markdown
# 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
|