KAOS/TASKS/review/T05.md
djuka 028872be43 T05: Reporter — pisanje izveštaja
- WriteReport generiše markdown izveštaj u reports/
- formatDuration, truncateOutput za formatiranje
- Kreira folder ako ne postoji, skraćuje output na 50 linija
- 10 reporter testova — svi prolaze
- T03 premešten u done/

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

91 lines
1.7 KiB
Markdown

# T05: Reporter — pisanje izveštaja
**Kreirao:** planer
**Datum:** 2026-02-20
**Agent:** coder
**Model:** Sonnet
**Zavisi od:** T03 ✅, T04 ✅
---
## Opis
Generiše markdown izveštaj posle izvršenog taska.
Koristi RunResult iz T03 i VerifyResult iz T04.
## Fajlovi za kreiranje
```
code/internal/supervisor/
├── reporter.go ← WriteReport()
└── reporter_test.go
```
## Funkcije
```go
func WriteReport(
task Task,
run RunResult,
verify VerifyResult,
reportsDir string,
) (string, error) // vraća putanju do izveštaja
```
## Format izveštaja
```markdown
# T{XX}: Naslov
**Datum:** 2026-02-20 10:15
**Trajanje:** 8m 45s
**Status:** ✅ Završen / ❌ Neuspešan
**Tag:** v0.1.X
## Verifikacija
- ✅/❌ go build (0.3s)
- ✅/❌ go vet (0.2s)
- ✅/❌ go test (12/12 testova, 2.1s)
## Agent output
(skraćen output Claude Code sesije, max 50 linija)
## Commit
- Hash: a1b2c3d
- Branch: main
```
## Pravila
- Fajl ime: `T{XX}-report.md` (npr. T01-report.md)
- Ako reportsDir ne postoji — kreiraj
- Output skrati na max 50 linija (poslednje linije, najrelevantnije)
- Datum u formatu: YYYY-MM-DD HH:MM
- Trajanje: Xm Ys ili Xs ako manje od minuta
## Testovi
- WriteReport sa mock podacima → fajl postoji, sadržaj tačan
- Proveri format datuma, trajanja
- Proveri da folder kreira ako ne postoji
- Proveri skraćivanje outputa (>50 linija → samo poslednjih 50)
- AllPassed=true → "✅ Završen"
- AllPassed=false → "❌ Neuspešan"
## Očekivani izlaz
`TASKS/reports/T{XX}-report.md` se generiše sa tačnim sadržajem.
`go test ./internal/supervisor/ -v` — svi testovi zeleni.
---
## Pitanja
*(agent piše pitanja ovde, planer odgovara)*
---
## Odgovori
*(planer piše odgovore ovde)*