1.6 KiB
1.6 KiB
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
- Server poluje TASKS/ svake 2s
- Računa SHA-256 hash svih task ID:status parova
- Ako se hash promenio → broadcast SSE event svim klijentima
- Browser EventSource prima event → zameni board HTML
- 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 ./...— čistgo build ./...— prolazi