# T02: Task loader — parsiranje markdown taskova **Kreirao:** planer **Datum:** 2026-02-20 **Agent:** coder **Model:** Sonnet **Zavisi od:** T01 ✅ --- ## Opis Supervisor mora da čita taskove iz markdown fajlova u TASKS/ folderima. Parsira pojedinačne task fajlove, izvlači ID, status (folder), zavisnosti. ## Fajlovi za kreiranje ``` code/internal/supervisor/ ├── task.go ← Task struct, LoadTask(), ScanTasks(), NextTask() └── task_test.go ← testovi sa primer markdown-om ``` ## Task struct ```go type Task struct { ID string // T01, T02... Title string // naslov iz # zaglavlja Status string // backlog, ready, active, review, done (iz foldera) Agent string // coder, checker, frontend... Model string // Haiku, Sonnet, Opus DependsOn []string // lista task ID-eva Description string // ceo opis FilePath string // putanja do fajla } ``` ## Funkcije - `LoadTask(filePath string) (Task, error)` — parsira jedan task fajl - `ScanTasks(tasksDir string) ([]Task, error)` — skenira sve foldere (backlog/, ready/, active/, review/, done/), učita sve taskove, status iz imena foldera - `FindTask(tasks []Task, id string) *Task` — nađi po ID-u - `NextTask(tasks []Task) *Task` — prvi task u ready/ čije su zavisnosti u done/ - `MoveTask(tasksDir, taskID, fromFolder, toFolder string) error` — premesti fajl između foldera ## Parsiranje Task fajl format (primer T01.md): ```markdown # T01: Naslov **Agent:** coder **Model:** Sonnet **Zavisi od:** — --- ## Opis Tekst opisa... ``` Parser izvlači: - ID i Title iz `# T{XX}: Naslov` - Agent iz `**Agent:** vrednost` - Model iz `**Model:** vrednost` - DependsOn iz `**Zavisi od:** T01, T03` (ili `—` za bez zavisnosti) - Description iz `## Opis` sekcije - Status iz imena foldera u kojem se fajl nalazi ## Testovi - LoadTask sa primer fajlom → parsira tačno sva polja - ScanTasks sa temp folderima → nalazi taskove u svim folderima - NextTask: task u ready/ sa zavisnostima u done/ → vraća ga - NextTask: task u ready/ sa zavisnošću u backlog/ → ne vraća - MoveTask: premesti fajl, proveri da je u novom folderu - Edge case: prazan folder, fajl bez zavisnosti, nepostojeći ID ## Očekivani izlaz `go test ./internal/supervisor/ -v` — svi testovi zeleni. `go vet ./...` čist. `go build ./...` prolazi. --- ## Pitanja *(agent piše pitanja ovde, planer odgovara)* --- ## Odgovori *(planer piše odgovore ovde)*