KAOS/TASKS/reports/T16-report.md
djuka ddc54e739a T16: SSE auto-refresh dashboarda sa polling i hash detekcijom
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 13:09:12 +00:00

56 lines
1.6 KiB
Markdown

# T16 Izveštaj: SSE auto-refresh dashboarda
**Agent:** coder
**Model:** Opus
**Datum:** 2026-02-20
---
## Šta je urađeno
Dashboard se automatski ažurira kad se stanje taskova promeni putem SSE.
### Novi fajlovi
| Fajl | Opis |
|------|------|
| `internal/server/events.go` | EventBroker, polling (2s), hashTaskState, SSE handler |
### Izmenjeni fajlovi
| Fajl | Izmena |
|------|--------|
| `internal/server/server.go` | events field, GET /events ruta, startPolling u Run() |
| `internal/server/render.go` | renderBoardFragment() za SSE updates |
| `internal/server/server_test.go` | 4 nova testa |
| `web/templates/layout.html` | initSSE(), isDragging flag, onStart handler |
| `web/templates/partials/column.html` | Uklonjen hx-trigger="every 5s" (zamenjeno SSE-om) |
### Kako radi
1. Server poluje TASKS/ svake 2s
2. Računa SHA-256 hash svih task ID:status parova
3. Ako se hash promenio → broadcast SSE event svim klijentima
4. Browser EventSource prima event → zameni board HTML
5. Tokom drag & drop — SSE update se ignoruje (isDragging flag)
### Endpoint
| Ruta | Opis |
|------|------|
| `GET /events` | SSE stream — event `taskUpdate` sa board HTML |
### Novi testovi — 4 PASS
```
TestSSE_EventsEndpoint PASS — proverava Content-Type text/event-stream
TestHashTaskState PASS — hash se menja kad se status menja, stabilan za isti set
TestSSE_BroadcastOnChange PASS — premesti fajl → broadcast event
TestSSE_NoBroadcastWithoutChange PASS — bez promene → bez eventa
```
### Ukupno projekat: 129 testova, svi prolaze
- `go vet ./...` — čist
- `go build ./...` — prolazi