80 lines
2.8 KiB
Markdown
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
|