# 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/.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