151 lines
5.0 KiB
Markdown
151 lines
5.0 KiB
Markdown
# T20: Fix — dugmad po statusu taska (workflow kontrole)
|
|
|
|
**Kreirao:** planer
|
|
**Datum:** 2026-02-20
|
|
**Agent:** coder
|
|
**Model:** Sonnet
|
|
**Zavisi od:** T19 ✅
|
|
|
|
---
|
|
|
|
## Opis
|
|
|
|
Svaki task prikazuje RAZLIČITO dugme zavisno od stanja i uslova.
|
|
Operater mora da pregleda i odobri pre pokretanja.
|
|
|
|
## Dugmad po stanju
|
|
|
|
### backlog/ — zavisnosti NISU ispunjene
|
|
```
|
|
┌────────────────────────────┐
|
|
│ T18 │
|
|
│ End-to-end test │
|
|
│ coder · Sonnet │
|
|
│ Zavisi od: T17 ⏳ │
|
|
│ [Blokiran 🔒] │ ← sivo, nije klikabilno
|
|
└────────────────────────────┘
|
|
```
|
|
|
|
### backlog/ — zavisnosti JESU ispunjene
|
|
```
|
|
┌────────────────────────────┐
|
|
│ T16 │
|
|
│ SSE auto-refresh │
|
|
│ coder · Sonnet │
|
|
│ Zavisi od: T15 ✅ │
|
|
│ [Pregledaj 👁] │ ← otvori sadržaj taska
|
|
└────────────────────────────┘
|
|
```
|
|
|
|
Klik "Pregledaj 👁" → otvori task sadržaj u panelu.
|
|
U panelu prikaži dugme [Odobri ✅] koje premesti u ready/.
|
|
|
|
### ready/ — odobren, spreman za rad
|
|
```
|
|
┌────────────────────────────┐
|
|
│ T16 │
|
|
│ SSE auto-refresh │
|
|
│ coder · Sonnet │
|
|
│ Zavisi od: T15 ✅ │
|
|
│ [Pusti ▶] │ ← pokreni agenta
|
|
└────────────────────────────┘
|
|
```
|
|
|
|
Klik "Pusti ▶" → pokreni Claude Code u čistoj sesiji.
|
|
SAMO ready/ taskovi imaju Play dugme.
|
|
|
|
### active/ — agent radi
|
|
```
|
|
┌────────────────────────────┐
|
|
│ T16 │
|
|
│ SSE auto-refresh │
|
|
│ coder · Sonnet │
|
|
│ [Radi ⚙️] │ ← informativno, nije klikabilno
|
|
└────────────────────────────┘
|
|
```
|
|
|
|
### review/ — agent završio, čeka pregled
|
|
```
|
|
┌────────────────────────────┐
|
|
│ T16 │
|
|
│ SSE auto-refresh │
|
|
│ coder · Sonnet │
|
|
│ [Pregledaj 👁] │ ← otvori izveštaj
|
|
└────────────────────────────┘
|
|
```
|
|
|
|
Klik → otvori izveštaj + task sadržaj u panelu.
|
|
U panelu dva dugmeta:
|
|
- [Odobri ✅] → premesti u done/
|
|
- [Vrati ↩] → premesti u ready/ (za doradu)
|
|
|
|
### review/ — agent ima pitanje
|
|
```
|
|
┌────────────────────────────┐
|
|
│ T16 │
|
|
│ SSE auto-refresh │
|
|
│ coder · Sonnet │
|
|
│ ❓ Pitanje čeka odgovor │
|
|
│ [Odgovori 💬] │ ← otvori pitanje
|
|
└────────────────────────────┘
|
|
```
|
|
|
|
Klik → otvori task sa pitanjem. Operater vidi ## Pitanja sekciju.
|
|
Treba mogućnost da upiše odgovor u ## Odgovori sekciju.
|
|
Posle odgovora: dugme [Nastavi ▶] pokrene agenta ponovo.
|
|
|
|
### done/ — završen
|
|
```
|
|
┌────────────────────────────┐
|
|
│ T01 ✅ │
|
|
│ Inicijalizacija Go projekta│
|
|
│ v0.1.1 │
|
|
│ [Izveštaj 📊] │ ← otvori report
|
|
└────────────────────────────┘
|
|
```
|
|
|
|
## Logika za server
|
|
|
|
```
|
|
Za svaki task:
|
|
1. Pročitaj zavisnosti iz fajla (## Zavisi od)
|
|
2. Proveri da li su sve zavisnosti u done/
|
|
3. Ako je review/ → proveri da li ## Pitanja postoji i nije prazno
|
|
4. Na osnovu toga odluči koje dugme
|
|
|
|
Funkcija: resolveTaskAction(task) → action string
|
|
- "blocked" → zavisnosti nisu ispunjene
|
|
- "review" → u backlog/, zavisnosti ok, čeka pregled
|
|
- "run" → u ready/, spreman za pokretanje
|
|
- "running" → u active/
|
|
- "question" → u review/, ima pitanje bez odgovora
|
|
- "approve" → u review/, završen, čeka odobrenje
|
|
- "done" → u done/
|
|
```
|
|
|
|
## Pozicija dugmeta
|
|
|
|
Uvek desno dole na kartici. Kartica ima `display: flex; flex-direction: column;`
|
|
Dugme u `margin-top: auto;` kontejneru da bude na dnu.
|
|
|
|
## Testovi
|
|
|
|
- Task u backlog/ bez zavisnosti → "Pregledaj 👁"
|
|
- Task u backlog/ sa blokirajućom zavisnošću → "Blokiran 🔒"
|
|
- Task u ready/ → "Pusti ▶"
|
|
- Task u active/ → "Radi ⚙️" (neklikabilno)
|
|
- Task u review/ završen → "Pregledaj 👁"
|
|
- Task u review/ sa pitanjem → "Odgovori 💬"
|
|
- Task u done/ → "Izveštaj 📊"
|
|
- Klik "Odobri" na backlog task → premešten u ready/
|
|
- Klik "Pusti" na ready task → agent pokrenut
|
|
- Klik "Odobri" na review task → premešten u done/
|
|
|
|
---
|
|
|
|
## Pitanja
|
|
|
|
---
|
|
|
|
## Odgovori
|