KAOS/TASKS/done/T02.md
djuka bd62320642 v0.1 kompletna — svi taskovi završeni
T01-T07 u done/. 67 testova, sve zeleno.

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

96 lines
2.5 KiB
Markdown

# 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)*