diff --git a/docs/architecture.md b/docs/architecture.md index 6336abc..d6d8566 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -44,7 +44,8 @@ Systém funguje na princípe **Single-Page Application (SPA)** komunikujúcej s / ├── data/ # NEPRÍSTUPNÉ Z WEBU (.htaccess deny all) │ ├── users/ # .json -│ └── projects/ # .json +│ ├── projects/ # .json +│ └── llm/ # Fronta úloh pre AI (prikazy.json) ├── sites/ # PRÍSTUPNÉ Z WEBU (Vygenerované weby) │ └── a8f7c3d1/ # Konkrétny vygenerovaný web │ ├── index.html @@ -53,7 +54,8 @@ Systém funguje na princípe **Single-Page Application (SPA)** komunikujúcej s │ └── config.json # Kópia konfigurácie pre daný export ├── src/ # PHP Logika │ ├── Actions/ # Triedy pre jednotlivé AJAX akcie -│ ├── Services/ # AI Engine (DAIAPI Wrapper), FileStorage, Renderer +│ ├── Services/ # AI Engine (LLMpool.php), FileStorage, Renderer +│ ├── Prompts/ # Externé prompty (.txt, .md) │ └── Utils/ # Helpery ├── public/ # Root webservera │ ├── index.html # Hlavná aplikácia (Wizard) @@ -143,29 +145,37 @@ Všetky požiadavky smerujú na `public/ajax.php`. --- -## 7. Generovanie a publikovanie +## 7. Generovanie a publikovanie (Asynchrónny proces) + +Kvôli eliminácii timeoutov a stabilite generovania využíva systém **LLM Pool**. ### Workflow: -1. **Spracovanie dát:** PHP vezme `wizard_data` z JSON súboru. -2. **AI Prompt:** Service vytvorí systémový prompt a pošle ho do DAIAPI cez HTTP POST. -3. **Parsing:** DAIAPI vráti vygenerovaný obsah (text/JSON). -4. **Templating:** - * PHP prečíta základnú HTML šablónu (v `/src/Templates/`). - * Nahradí placeholdery (napr. `{{BUSINESS_NAME}}`) vygenerovaným obsahom. -5. **Súborový systém:** - * Vytvorí priečinok `/sites//`. - * Nakopíruje statické assety (CSS, JS). - * Zapíše `index.html`. -6. **Relatívne URL:** Všetky cesty v šablóne sú `/assets/style.css` -> v kóde menené na `assets/style.css` (relatívne k index.html). +1. **Vytvorenie úlohy:** AJAX akcia `generateWebsite` nezavolá AI hneď. Zapíše JSON súbor do `/data/llm/.json`, ktorý obsahuje vstupné dáta z wizardu a cieľové cesty. +2. **Spracovanie (LLMpool.php):** + * Skript spúšťaný cez **Cron** (napr. každú minútu) prechádza zložku `/data/llm/`. + * Pre každú úlohu načíta príslušný **Prompt** zo zložky `/src/Prompts/`. + * Nahradí premenné v prompte (napr. `[BUSINESS_TYPE]`) reálnymi dátami. + * Pošle požiadavku do DAIAPI. +3. **Dynamické generovanie:** + * Systém nepoužíva fixné HTML šablóny. + * AI inštruujeme, aby vygenerovalo kompletný kód (HTML/CSS) na mieru. +4. **Zápis a Cleanup:** + * Po úspešnom vygenerovaní skript vytvorí súbory v `/sites//`. + * Až po úspešnom zápise sa úloha z `/data/llm/` odstráni. + * **Retry mechanizmus:** Ak DAIAPI zlyhá, súbor s úlohou ostáva v zložke a skript sa ho pokúsi spracovať v ďalšom behu. --- -## 8. Bezpečnosť (MVP) +## 8. Správa dát a Limity (Storage Management) 1. **Ochrana dát:** `.htaccess` v priečinku `/data/` s obsahom `Deny from all`. -2. **Sanitizácia:** PHP `htmlspecialchars()` pri renderovaní vygenerovaného obsahu (prevencia XSS). -3. **Path Traversal:** Validácia `user_id` a `project_id` (iba alfanumerické znaky), aby sa predišlo prístupu k súborom mimo určených priečinkov. -4. **Rate Limiting:** Jednoduchá kontrola počtu požiadaviek na IP adresu v `ajax.php`. +2. **Uploady:** + * Limit na veľkosť súboru (napr. max 2MB pre logo). + * Kontrola povolených prípon (jpg, png, svg) a overenie MIME typu na strane PHP. +3. **Storage Cleanup:** + * Ak celkový objem dát v `/sites/` presiahne stanovenú kvótu, systém automaticky premaže najstaršie projekty (FIFO - First In, First Out). +4. **Sanitizácia:** PHP `htmlspecialchars()` pri renderovaní, ak je to potrebné, a validácia vstupov proti Path Traversal. + --- diff --git a/docs/specification2.md b/docs/specification2.md index 056b4bd..0f7e6f1 100644 --- a/docs/specification2.md +++ b/docs/specification2.md @@ -9,7 +9,7 @@ Tento dokument nadväzuje na pôvodnú špecifikáciu a detailnejšie rozpracov WebWizard je navrhnutý ako **AI Website Concierge**, ktorý premieňa štruktúrované dáta od používateľa na funkčný web. ### 1.1 Komponenty -* **Frontend (Wizard UI):** Jednostránková aplikácia (React/Next.js) s dôrazom na UX, ktorá sprevádza používateľa procesom. +* **Frontend (Wizard UI):** Jednostránková aplikácia (Vanilla JS) s dôrazom na UX, ktorá sprevádza používateľa procesom. * **Backend (API Layer):** Node.js (Express) alebo Python (FastAPI). Spracováva odpovede, spravuje session a komunikuje s AI. * **AI Engine:** Integrácia s LLM (napr. GPT-4o) cez API. Používa špecifické system prompty pre rôzne segmenty biznisu. * **Generator Service:** Modul, ktorý transformuje AI výstup (JSON/Markdown) na finálny kód (HTML/CSS/JS).