76 lines
2.8 KiB
Markdown
76 lines
2.8 KiB
Markdown
# Krok 12 - Generovanie fronty úloh (AI Queue)
|
|
|
|
## Kontext projektu
|
|
Po dokončení wizardu sa spustí proces generovania obsahu pomocou AI. Tento proces je asynchrónny a prebieha cez frontu úloh v `data/llm/`.
|
|
|
|
## Pred implementáciou si preštuduj
|
|
- `docs/architecture.md` - Sekcia 10 (AI workflow).
|
|
- `docs/prompts/step04.md` - Správa projektov.
|
|
|
|
## Cieľ
|
|
Implementovať API akciu `generateWebsite`, ktorá vytvorí AI úlohu a prepne stav projektu.
|
|
|
|
## Požadované zmeny
|
|
1. Na backende (`ajax.php` alebo `TaskActions.php`):
|
|
- Implementácia akcie `generateWebsite`.
|
|
- Overenie, či projekt existuje a má všetky potrebné dáta (najmä GDPR súhlas).
|
|
- Zmena stavu projektu na `queued`.
|
|
- Vytvorenie JSON súboru úlohy v `data/llm/` s unikátnym `task_id`.
|
|
- Súbor úlohy obsahuje `project_id`, `wizard_data` a metadáta (pokusy, čas vytvorenia).
|
|
2. Na frontende (`wizard.js`):
|
|
- Volanie `generateWebsite` po poslednom kroku wizardu.
|
|
- Implementácia "polling" mechanizmu (volanie `getProjectStatus` každých pár sekúnd) na sledovanie progresu.
|
|
- Zobrazenie loaderu s aktuálnym stavom (`queued`, `generating`, `rendering`).
|
|
|
|
## Implementačné pravidlá
|
|
- Úloha vo fronte musí obsahovať snapshot `wizard_data` v čase vytvorenia.
|
|
- Stav projektu `queued` blokuje ďalšie zmeny v `wizard_data`.
|
|
|
|
## Súbory ktoré je potrebné vytvoriť
|
|
- `src/Actions/TaskActions.php` (voliteľné, pre čistotu kódu)
|
|
|
|
## Súbory ktoré je potrebné upraviť
|
|
- `public/ajax.php` (pridanie akcie `generateWebsite`)
|
|
- `public/js/wizard.js` (logika pre spustenie generovania a polling)
|
|
|
|
## API a dátové štruktúry
|
|
Štruktúra úlohy (`data/llm/t_<id>.json`):
|
|
```json
|
|
{
|
|
"task_id": "t_...",
|
|
"project_id": "p_...",
|
|
"status": "queued",
|
|
"attempt_count": 0,
|
|
"max_attempts": 3,
|
|
"created_at": "...",
|
|
"wizard_data": { ... }
|
|
}
|
|
```
|
|
|
|
## Frontend požiadavky
|
|
- Animovaný spinner alebo progress bar.
|
|
- Informovanie používateľa, že generovanie môže trvať niekoľko desiatok sekúnd.
|
|
|
|
## Backend požiadavky
|
|
- Zabezpečenie, aby nevznikali duplicitné úlohy pre ten istý projekt, ak už jedna prebieha.
|
|
|
|
## Testovací scenár
|
|
1. Prejdi celým wizardom a na konci klikni na "Generovať web".
|
|
2. Over, či sa v `data/llm/` vytvoril súbor úlohy.
|
|
3. Over, či sa stav projektu v `data/projects/` zmenil na `queued`.
|
|
4. Sleduj v konzole prehliadača, či polling (`getProjectStatus`) prebieha správne.
|
|
|
|
## Definition of Done
|
|
- Systém úspešne zaraďuje projekty do AI fronty.
|
|
- Frontend korektne sleduje stav generovania.
|
|
- Dáta pre AI sú správne pripravené.
|
|
|
|
## Obmedzenia
|
|
- V tomto kroku sa ešte nevykonáva samotné volanie AI (len zaradenie do fronty).
|
|
|
|
## Výstup
|
|
- zoznam vytvorených súborov
|
|
- zoznam upravených súborov
|
|
- stručné zhrnutie vykonaných zmien
|
|
- prípadné otvorené problémy
|