Files
WebWizard/docs/prompts/step14.md
2026-06-12 12:54:10 +02:00

80 lines
2.8 KiB
Markdown

# Krok 14 - Služba LLMpool a Validácia AI výstupu
## Kontext projektu
`LLMpool.php` je "worker", ktorý konzumuje frontu úloh, komunikuje s AI a ukladá výsledný obsah do projektu.
## Pred implementáciou si preštuduj
- `docs/architecture.md` - Sekcia 10 (AI workflow).
- `docs/prompts/step13.md` - DAIClient a Prompt.
## Cieľ
Implementovať logiku pre spracovanie AI fronty, validáciu JSON výstupu a aktualizáciu stavu projektu.
## Požadované zmeny
1. Vytvorenie skriptu `src/Services/LLMpool.php` (alebo CLI skriptu):
- Vyhľadanie úloh v stave `queued` v `data/llm/`.
- Uzamknutie úlohy (zmena stavu na `generating`).
- Volanie `ContentPrompt` na vygenerovanie zadania.
- Volanie `DAIClient` na získanie odpovede od AI.
- Validácia odpovede:
- Musí to byť validný JSON.
- Nesmie obsahovať HTML tagy.
- Musí obsahovať povinné sekcie (napr. `seo`, `hero`, `sections`).
- Pri úspechu:
- Uloženie obsahu do projektu (`data/projects/<id>.json` pod kľúč `content.generated`).
- Zmena stavu projektu na `content_ready`.
- Vymazanie alebo archivácia úlohy z `data/llm/`.
- Pri chybe:
- Inkrementácia `attempt_count`.
- Ak prekročený limit (3), stav projektu `failed`.
- Uloženie chyby do projektu.
## Implementačné pravidlá
- Zabezpeč ochranu proti súbežnému spusteniu viacerých workerov na tej istej úlohe (atomic file operations).
- Loguj všetky dôležité udalosti (začiatok, koniec, chybu AI).
## Súbory ktoré je potrebné vytvoriť
- `src/Services/LLMpool.php`
## Súbory ktoré je potrebné upraviť
- `public/ajax.php` (môže spúšťať LLMpool synchrónne pre MVP ak nie je cron).
## API a dátové štruktúry
Štruktúra `content.generated`:
```json
{
"seo": { "title": "...", "description": "..." },
"hero": { "headline": "...", "subheadline": "..." },
"sections": {
"about": { "title": "...", "text": "..." },
"services": [ { "title": "...", "description": "..." } ]
}
}
```
## Frontend požiadavky
Nerelevantné (worker beží na pozadí).
## Backend požiadavky
- PHP 8.2.
## Testovací scenár
1. Vlož manuálne úlohu do `data/llm/`.
2. Spusti `php src/Services/LLMpool.php`.
3. Sleduj logy a over, či sa projekt v `data/projects/` aktualizoval o vygenerovaný obsah.
4. Skús simulovať neplatný JSON od AI a over, či worker správne inkrementuje pokusy.
## Definition of Done
- Worker spoľahlivo spracováva AI frontu.
- Výstup od AI je zvalidovaný a bezpečne uložený.
- Stavy projektu sa menia podľa priebehu generovania.
## Obmedzenia
- Worker sa v MVP môže volať aj na konci `generateWebsite` requestu pre jednoduchosť, ak je DAIAPI rýchle.
## Výstup
- zoznam vytvorených súborov
- zoznam upravených súborov
- stručné zhrnutie vykonaných zmien
- prípadné otvorené problémy