added files with prompts
This commit is contained in:
@ -85,5 +85,89 @@
|
||||
<p>Plán implementácie MVP. Kompletný zoznam očíslovaných krokov pre postupnú realizáciu celého projektu.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Implementation Prompts</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="prompts/step01.md">step01.md</a>
|
||||
<p>Inicializácia projektu a základná štruktúra.</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step02.md">step02.md</a>
|
||||
<p>Core Data Services (Úložisko).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step03.md">step03.md</a>
|
||||
<p>API vrstva a Error Handling.</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step04.md">step04.md</a>
|
||||
<p>Správa používateľov a projektov (Session).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step05.md">step05.md</a>
|
||||
<p>Služba pre GDPR súhlas.</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step06.md">step06.md</a>
|
||||
<p>Kostra Wizardu (Frontend UI).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step07.md">step07.md</a>
|
||||
<p>Wizard - Segmentácia biznisu (Krok 1).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step08.md">step08.md</a>
|
||||
<p>Wizard - Identita a Kontakt (Krok 2).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step09.md">step09.md</a>
|
||||
<p>Wizard - Služby a Smart otázky (Krok 3).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step10.md">step10.md</a>
|
||||
<p>Wizard - Vizuál a Assety (Krok 4).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step11.md">step11.md</a>
|
||||
<p>Wizard - Moduly a Formulár (Krok 5).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step12.md">step12.md</a>
|
||||
<p>Generovanie fronty úloh (AI Queue).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step13.md">step13.md</a>
|
||||
<p>Architektúra promptov a DAIAPI klient.</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step14.md">step14.md</a>
|
||||
<p>Služba LLMpool a Validácia AI výstupu.</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step15.md">step15.md</a>
|
||||
<p>Rendering Vrstva (Jadro a Baseline šablóna).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step16.md">step16.md</a>
|
||||
<p>Rendering Vrstva (Obsahové Sekcie).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step17.md">step17.md</a>
|
||||
<p>Rendering Vrstva (CSS Assety).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step18.md">step18.md</a>
|
||||
<p>Kontakt a Formuláre (SMTP & Lokálny mód).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step19.md">step19.md</a>
|
||||
<p>Preview a Export (Posledné fázy Wizarda).</p>
|
||||
</li>
|
||||
<li>
|
||||
<a href="prompts/step20.md">step20.md</a>
|
||||
<p>Kvalitatívne Validácie a Error Handling Fixes.</p>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
67
docs/prompts/step01.md
Normal file
67
docs/prompts/step01.md
Normal file
@ -0,0 +1,67 @@
|
||||
# Krok 01 - Inicializácia projektu a základná štruktúra
|
||||
|
||||
## Kontext projektu
|
||||
WebWizard je AI website concierge (MVP), ktorý umožňuje používateľom vytvoriť statický web prostredníctvom wizardu. Projekt využíva PHP 8.2, JSON súbory pre ukladanie dát, Vanilla JavaScript a lokálne DAIAPI pre generovanie obsahu. Celá architektúra je postavená na jednoduchosti bez externých frameworkov.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/mvp.md` - Celkový rozsah a ciele MVP.
|
||||
- `docs/architecture.md` - Definícia adresárovej štruktúry a technologického stacku.
|
||||
|
||||
## Cieľ
|
||||
Vytvoriť základnú adresárovú štruktúru projektu a zabezpečiť ochranu citlivých dát v priečinku `data/`. Nastaviť základný autoloading pre PHP triedy v `src/`.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie adresárovej štruktúry podľa `architecture.md`.
|
||||
2. Vytvorenie `composer.json` so základným nastavením PSR-4 autoloadingu pre menný priestor `App\\` v priečinku `src/`.
|
||||
3. Vytvorenie `.htaccess` v koreňovom adresári (alebo konfigurácia servera), ktorá zakáže priamy prístup do priečinka `data/`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Nepoužívaj žiadne externé knižnice v `composer.json` okrem vývojových nástrojov, ak sú potrebné.
|
||||
- Adresárová štruktúra musí presne zodpovedať `architecture.md`.
|
||||
- `data/` priečinok musí byť neverejný.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `data/users/.gitkeep` (a podobné pre ostatné podadresáre v data/)
|
||||
- `data/projects/`
|
||||
- `data/consent/`
|
||||
- `data/llm/`
|
||||
- `data/admin/`
|
||||
- `exports/`
|
||||
- `src/`
|
||||
- `public/`
|
||||
- `composer.json`
|
||||
- `.htaccess` (v koreni projektu)
|
||||
- `data/.htaccess` (na zablokovanie prístupu)
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
Žiadne (inicializácia nového projektu).
|
||||
|
||||
## API a dátové štruktúry
|
||||
V tomto kroku sa nedefinujú API endpointy.
|
||||
|
||||
## Frontend požiadavky
|
||||
Nerelevantné pre tento krok.
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2.
|
||||
- PSR-4 autoloading.
|
||||
|
||||
## Testovací scenár
|
||||
1. Spusti `composer dump-autoload` a over, či nevznikli chyby.
|
||||
2. Pokús sa v prehliadači pristúpiť na `http://localhost/data/` (alebo ekvivalent) a over, či dostaneš 403 Forbidden.
|
||||
3. Over, či existujú všetky požadované adresáre.
|
||||
|
||||
## Definition of Done
|
||||
- Adresárová štruktúra je vytvorená.
|
||||
- Autoloading z `src/` funguje.
|
||||
- Priečinok `data/` je chránený pred priamym prístupom z webu.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepridávaj žiadne frameworky (Laravel, Symfony, atď.).
|
||||
- Nepridávaj databázu.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
63
docs/prompts/step02.md
Normal file
63
docs/prompts/step02.md
Normal file
@ -0,0 +1,63 @@
|
||||
# Krok 02 - Core Data Services (Úložisko)
|
||||
|
||||
## Kontext projektu
|
||||
WebWizard ukladá všetky dáta (používatelia, projekty, súhlasy) do JSON súborov v priečinku `data/`. Je potrebné mať jednotnú službu, ktorá bude tieto operácie bezpečne vykonávať.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/architecture.md` - Sekcia 4 (Adresárová štruktúra) a 5 (Dátové súbory).
|
||||
- `docs/prompts/step01.md` - Predpokladá sa vytvorená štruktúra.
|
||||
|
||||
## Cieľ
|
||||
Implementovať triedu `FileStorage` v PHP, ktorá bude slúžiť ako hlavné rozhranie pre prácu s JSON súbormi v rámci systému.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie triedy `App\Services\FileStorage` v `src/Services/FileStorage.php`.
|
||||
2. Implementácia metód pre:
|
||||
- `put(string $path, array $data): bool` - Uloží pole ako JSON.
|
||||
- `get(string $path): ?array` - Načíta JSON a vráti pole.
|
||||
- `exists(string $path): bool` - Overí existenciu súboru.
|
||||
- `delete(string $path): bool` - Vymaže súbor.
|
||||
3. Pridanie ochrany proti "path traversal" (napr. použitie `realpath` alebo sanitizácia cesty, aby sa operácie obmedzili na priečinok `data/`).
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Používaj `json_encode` s `JSON_PRETTY_PRINT` pre lepšiu čitateľnosť súborov.
|
||||
- Zabezpeč ošetrenie chýb pri čítaní/zápise (napr. neexistujúci súbor, neplatný JSON).
|
||||
- Trieda musí byť v namespace `App\Services`.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `src/Services/FileStorage.php`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
Žiadne.
|
||||
|
||||
## API a dátové štruktúry
|
||||
Metódy triedy `FileStorage` pracujú s asociatívnymi poľami PHP.
|
||||
|
||||
## Frontend požiadavky
|
||||
Nerelevantné.
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2.
|
||||
- Prístupové práva na zápis do `data/`.
|
||||
|
||||
## Testovací scenár
|
||||
1. Vytvor testovací skript, ktorý vytvorí inštanciu `FileStorage`.
|
||||
2. Skús uložiť pole `['test' => 123]` do `users/test.json`.
|
||||
3. Over, či súbor existuje a obsahuje správny JSON.
|
||||
4. Skús načítať dáta zo súboru.
|
||||
5. Skús zadať cestu s `../` a over, či služba vyhodí výnimku alebo chybu (path traversal protection).
|
||||
|
||||
## Definition of Done
|
||||
- Trieda `FileStorage` je funkčná a otestovaná.
|
||||
- Ukladanie a načítavanie JSON dát funguje bezpečne.
|
||||
- Path traversal ochrana je implementovaná.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepoužívaj žiadnu externú DB knižnicu.
|
||||
- Všetky cesty musia byť relatívne k base path projektu alebo striktne v `data/`.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
67
docs/prompts/step03.md
Normal file
67
docs/prompts/step03.md
Normal file
@ -0,0 +1,67 @@
|
||||
# Krok 03 - API vrstva a Error Handling
|
||||
|
||||
## Kontext projektu
|
||||
Frontend komunikuje s backendom výhradne cez jeden endpoint `ajax.php` pomocou POST požiadaviek s JSON payloadom.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/architecture.md` - Sekcia 9 (AJAX API).
|
||||
|
||||
## Cieľ
|
||||
Vytvoriť základný API router `public/ajax.php` a implementovať jednotný systém pre spracovanie chýb a formátovanie odpovedí.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie súboru `public/ajax.php`.
|
||||
2. Implementácia logiky pre:
|
||||
- Načítanie JSON vstupu z `php://input`.
|
||||
- Overenie prítomnosti hlavičky `X-User-ID`.
|
||||
- Základný router (switch podľa poľa `action`).
|
||||
- Jednotný formát úspešnej odpovede: `{"success": true, "data": {...}}`.
|
||||
- Jednotný formát chybovej odpovede: `{"success": false, "error": {"code": "...", "message": "..."}}`.
|
||||
3. Globálny `try-catch` blok na zachytávanie výnimiek a ich transformáciu do JSON odpovede.
|
||||
4. Nastavenie správnych HTTP hlavičiek (`Content-Type: application/json`).
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Nepoužívaj frameworky pre routing.
|
||||
- Každá odpoveď musí mať nastavený status kód (typicky 200 pre aplikačné chyby v JSONe, alebo 4xx/5xx pri systémových chybách).
|
||||
- Zabezpeč, aby PHP warningy a errory neboli vypisované priamo do výstupu (použi `display_errors = 0` v produkčnom nastavení a vlastný error handler).
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `public/ajax.php`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
Žiadne.
|
||||
|
||||
## API a dátové štruktúry
|
||||
Vstupné dáta (JSON):
|
||||
```json
|
||||
{
|
||||
"action": "string",
|
||||
"project_id": "string",
|
||||
"payload": {}
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
Nerelevantné (v tomto kroku len backend).
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2.
|
||||
|
||||
## Testovací scenár
|
||||
1. Pošli POST požiadavku na `ajax.php` s prázdnym telom. Mal by si dostať JSON chybu.
|
||||
2. Pošli POST požiadavku s neexistujúcou akciou. Mal by si dostať JSON chybu `UNKNOWN_ACTION`.
|
||||
3. Pošli validnú požiadavku (zatiaľ môžeš implementovať akciu `ping`) a over formát `success: true`.
|
||||
|
||||
## Definition of Done
|
||||
- `ajax.php` funguje ako centrálny router.
|
||||
- Odpovede majú jednotnú štruktúru.
|
||||
- Chybové stavy sú ošetrené a vracajú JSON.
|
||||
|
||||
## Obmedzenia
|
||||
- Žiadne HTML vo výstupe z `ajax.php`.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
74
docs/prompts/step04.md
Normal file
74
docs/prompts/step04.md
Normal file
@ -0,0 +1,74 @@
|
||||
# Krok 04 - Správa používateľov a projektov (Session)
|
||||
|
||||
## Kontext projektu
|
||||
WebWizard potrebuje identifikovať používateľa (pomocou ID uloženého v prehliadači) a priradiť k nemu jeho projekty. MVP nepoužíva klasické prihlasovanie, ale `user_id` generované pri prvej návšteve.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/architecture.md` - Sekcia 5 (Projekt) a 8 (Identifikácia používateľa).
|
||||
- `docs/wizard.md` - Sekcia 10 (Wizard Data Schema).
|
||||
|
||||
## Cieľ
|
||||
Implementovať logiku pre inicializáciu session (vytvorenie `user_id`) a základnú správu projektov (vytvorenie, zoznam).
|
||||
|
||||
## Požadované zmeny
|
||||
1. Implementácia akcie `initSession` v `ajax.php`:
|
||||
- Ak `user_id` chýba, vygeneruj unikátne ID (napr. `u_` + hash).
|
||||
- Vytvor súbor `data/users/<user_id>.json`.
|
||||
2. Implementácia akcie `createProject` v `ajax.php`:
|
||||
- Vygeneruj unikátne `project_id`.
|
||||
- Vytvor základnú štruktúru projektu v `data/projects/<project_id>.json` so stavom `draft`.
|
||||
- Pridaj `project_id` do zoznamu projektov v používateľskom JSONe.
|
||||
3. Implementácia akcie `listProjects` v `ajax.php`:
|
||||
- Vráti zoznam projektov pre dané `user_id` so základnými metadátami (názov z identity, stav, dátum).
|
||||
4. Implementácia akcie `getProjectStatus` v `ajax.php`:
|
||||
- Vráti kompletné dáta projektu pre dané `project_id`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Používaj `FileStorage` službu z Kroku 02.
|
||||
- ID musia byť bezpečne generované.
|
||||
- Overuj, či projekt patrí danému `user_id` pri každej operácii s projektom.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `src/Actions/ProjectActions.php` (odporúčané pre logiku)
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/ajax.php` (pridanie nových akcií)
|
||||
|
||||
## API a dátové štruktúry
|
||||
Šruktúra projektu (`data/projects/<project_id>.json`):
|
||||
```json
|
||||
{
|
||||
"project_id": "...",
|
||||
"user_id": "...",
|
||||
"status": "draft",
|
||||
"current_step": 1,
|
||||
"wizard_data": {},
|
||||
"created_at": "...",
|
||||
"updated_at": "..."
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
Nerelevantné (implementácia backend logic).
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2.
|
||||
|
||||
## Testovací scenár
|
||||
1. Zavolaj `initSession` bez `X-User-ID`. Dostaneš nové ID.
|
||||
2. Zavolaj `createProject` s novým ID. Dostaneš `project_id`.
|
||||
3. Over, či vznikli súbory v `data/users/` a `data/projects/`.
|
||||
4. Zavolaj `listProjects` a over, či obsahuje vytvorený projekt.
|
||||
|
||||
## Definition of Done
|
||||
- Používateľské relácie a projekty sú perzistentne uložené v JSON súboroch.
|
||||
- API akcie pre správu projektov sú funkčné.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepoužívaj PHP natívne sessions (`session_start()`), identifikácia je čiste cez `user_id` v hlavičke a perzistenciu v súboroch.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
67
docs/prompts/step05.md
Normal file
67
docs/prompts/step05.md
Normal file
@ -0,0 +1,67 @@
|
||||
# Krok 05 - Služba pre GDPR súhlas
|
||||
|
||||
## Kontext projektu
|
||||
Podľa právnych požiadaviek a špecifikácie MVP musí systém evidovať explicitný súhlas používateľa so spracovaním údajov pred tým, než povolí uloženie akýchkoľvek citlivých dát alebo generovanie webu.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/mvp.md` - Sekcia 10 (GDPR).
|
||||
- `docs/architecture.md` - Sekcia 7 (GDPR súhlas).
|
||||
|
||||
## Cieľ
|
||||
Vytvoriť službu na správu GDPR súhlasov a implementovať API akciu na uloženie súhlasu.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie triedy `App\Services\ConsentService` v `src/Services/ConsentService.php`.
|
||||
2. Implementácia metódy `saveConsent(string $projectId, string $userId, string $consentText): bool`.
|
||||
- Uloží súbor `data/consent/<project_id>.json`.
|
||||
- Záznam musí obsahovať: `project_id`, `user_id`, `consent_text_version`, `consent_text`, `accepted: true`, `accepted_at` (v UTC).
|
||||
3. Implementácia metódy `hasConsent(string $projectId): bool`.
|
||||
4. Implementácia API akcie `saveConsent` v `ajax.php`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Verzia textu súhlasu by mala byť konštanta v kóde (napr. `webwizard-mvp-2026-06-12`).
|
||||
- Dátum musí byť v ISO 8601 formáte (UTC).
|
||||
- Bez súhlasu nesmie systém povoliť krok generovania AI (bude validované v neskorších krokoch).
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `src/Services/ConsentService.php`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/ajax.php` (pridanie akcie `saveConsent`)
|
||||
|
||||
## API a dátové štruktúry
|
||||
JSON súhlasu:
|
||||
```json
|
||||
{
|
||||
"project_id": "...",
|
||||
"user_id": "...",
|
||||
"consent_text_version": "...",
|
||||
"consent_text": "...",
|
||||
"accepted": true,
|
||||
"accepted_at": "2026-06-12T10:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
Nerelevantné.
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2.
|
||||
|
||||
## Testovací scenár
|
||||
1. Zavolaj akciu `saveConsent` s platným `project_id` a textom.
|
||||
2. Over, či sa vytvoril súbor v `data/consent/`.
|
||||
3. Over obsah súboru, najmä formát dátumu a prítomnosť všetkých polí.
|
||||
|
||||
## Definition of Done
|
||||
- Systém dokáže auditovateľne ukladať GDPR súhlasy.
|
||||
- Existuje služba na overenie existencie súhlasu pre daný projekt.
|
||||
|
||||
## Obmedzenia
|
||||
- Súhlas je neprenosný medzi projektami (každý projekt musí mať vlastný záznam súhlasu, aj keď je to ten istý používateľ).
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
70
docs/prompts/step06.md
Normal file
70
docs/prompts/step06.md
Normal file
@ -0,0 +1,70 @@
|
||||
# Krok 06 - Kostra Wizardu (Frontend UI)
|
||||
|
||||
## Kontext projektu
|
||||
Používateľské rozhranie WebWizardu je postavené na Vanilla JavaScript bez použitia frontend frameworkov. Celá interakcia prebieha v rámci jednej stránky (`index.html`).
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 1 (Prehľad wizardu).
|
||||
- `docs/architecture.md` - Sekcia 8 (Identifikácia používateľa).
|
||||
|
||||
## Cieľ
|
||||
Vytvoriť základnú HTML štruktúru, CSS štýly a JavaScriptovú logiku pre navigáciu v rámci wizardu a inicializáciu používateľskej relácie.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie `public/index.html` s:
|
||||
- Kontajnerom pre jednotlivé kroky wizardu.
|
||||
- Navigačnými prvkami (Späť / Pokračovať).
|
||||
- Indikátorom progresu.
|
||||
2. Vytvorenie `public/css/wizard.css` pre základný layout a vizuálnu stránku wizardu.
|
||||
3. Vytvorenie `public/js/wizard.js` s logikou:
|
||||
- Kontrola `localStorage.getItem('ww_user_id')`.
|
||||
- Volanie `initSession` cez AJAX, ak ID chýba.
|
||||
- Správa stavu (aktuálny krok).
|
||||
- Funkcie `nextStep()` a `prevStep()`.
|
||||
- Funkcia `showStep(n)` pre zobrazenie správneho kontajnera v DOM.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Používaj moderný Vanilla JS (ES6+).
|
||||
- AJAX volania realizuj pomocou `fetch`.
|
||||
- Nepoužívaj žiadne externé knižnice (jQuery, Bootstrap, atď.).
|
||||
- Layout musí byť responzívny.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `public/index.html`
|
||||
- `public/css/wizard.css`
|
||||
- `public/js/wizard.js`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
Žiadne.
|
||||
|
||||
## API a dátové štruktúry
|
||||
Používa API akciu `initSession` z Kroku 04.
|
||||
|
||||
## Frontend požiadavky
|
||||
- Čistý a moderný dizajn.
|
||||
- Plynulé prechody medzi krokmi (môže byť jednoduchý show/hide).
|
||||
- Ukladanie `ww_user_id` do `localStorage`.
|
||||
|
||||
## Backend požiadavky
|
||||
- API musí byť dostupné na `ajax.php`.
|
||||
|
||||
## Testovací scenár
|
||||
1. Otvor `public/index.html` v prehliadači.
|
||||
2. Over v DevTools (Application -> Local Storage), či sa vygenerovalo `ww_user_id`.
|
||||
3. Vyskúšaj klikanie na tlačidlá pre prechod medzi krokmi.
|
||||
4. Over, či sa vizuálne mení obsah podľa aktuálneho kroku.
|
||||
|
||||
## Definition of Done
|
||||
- Kostra wizardu je funkčná.
|
||||
- Používateľ je identifikovaný a relácia je inicializovaná.
|
||||
- Prepínanie krokov funguje správne.
|
||||
|
||||
## Obmedzenia
|
||||
- Žiadny build proces (žiadne Webpack, Vite, atď.).
|
||||
- Všetko v rámci priečinka `public/`.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
78
docs/prompts/step07.md
Normal file
78
docs/prompts/step07.md
Normal file
@ -0,0 +1,78 @@
|
||||
# Krok 07 - Wizard - Segmentácia biznisu (Krok 1)
|
||||
|
||||
## Kontext projektu
|
||||
Prvým krokom wizardu je výber kategórie podnikania. Tento výber ovplyvňuje ďalšie otázky (Smart answers) a obsah, ktorý AI vygeneruje.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 2 (Krok 1 - Segmentácia biznisu).
|
||||
|
||||
## Cieľ
|
||||
Implementovať UI pre výber kategórie a podkategórie podnikania a uloženie týchto dát na backend.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie súboru `data/categories.json` s definíciou kategórií (Gastro, Krása, Remeslá, atď.) a ich podkategórií.
|
||||
2. Na frontende (`wizard.js`):
|
||||
- Načítanie kategórií (môže byť hardcoded v JS alebo načítané cez API).
|
||||
- Zobrazenie kategórií ako "radio cards" (vizuálne boxy s ikonou/názvom).
|
||||
- Po výbere kategórie zobrazenie podkategórií (napr. ako chips alebo dropdown).
|
||||
- Pole pre vlastný popis, ak používateľ zvolí "Iné".
|
||||
- Volanie `saveStep` pri prechode na ďalší krok.
|
||||
3. Na backende (`ajax.php`):
|
||||
- Implementácia akcie `saveStep`.
|
||||
- Validácia, že vybraná kategória a podkategória sú platné.
|
||||
- Uloženie do `wizard_data.business_category`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Používaj moderné UI prvky (napr. CSS Grid pre radio cards).
|
||||
- Zabezpeč plynulú interakciu pri zmene kategórie (reset podkategórií).
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `data/categories.json`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/js/wizard.js` (logika pre Krok 1)
|
||||
- `public/index.html` (DOM pre Krok 1)
|
||||
- `public/ajax.php` (implementácia `saveStep`)
|
||||
|
||||
## API a dátové štruktúry
|
||||
Payload pre `saveStep`:
|
||||
```json
|
||||
{
|
||||
"step": 1,
|
||||
"data": {
|
||||
"business_category": {
|
||||
"group": "gastro",
|
||||
"subcategory": "restaurant",
|
||||
"custom_description": null
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
- Atraktívne zobrazenie kategórií.
|
||||
- Intuitívny výber podkategórie.
|
||||
|
||||
## Backend požiadavky
|
||||
- Validácia vstupov.
|
||||
|
||||
## Testovací scenár
|
||||
1. Vyber kategóriu "Gastro".
|
||||
2. Vyber podkategóriu "Reštaurácia".
|
||||
3. Klikni na "Pokračovať".
|
||||
4. Over v JSONe projektu v `data/projects/`, či sa dáta správne uložili.
|
||||
5. Skús zvoliť "Iné" a napísať vlastný text.
|
||||
|
||||
## Definition of Done
|
||||
- Používateľ vie vybrať segment biznisu.
|
||||
- Dáta sa správne ukladajú na server.
|
||||
- UI reaguje na výbery používateľa.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepoužívaj externé UI knižnice (napr. Vuetify, Material UI).
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
74
docs/prompts/step08.md
Normal file
74
docs/prompts/step08.md
Normal file
@ -0,0 +1,74 @@
|
||||
# Krok 08 - Wizard - Identita a Kontakt (Krok 2)
|
||||
|
||||
## Kontext projektu
|
||||
Tento krok zbiera základné fakty o firme, ktoré AI nesmie meniť. Zároveň je tu vyžadovaný povinný súhlas s GDPR.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 3 (Krok 2).
|
||||
- `docs/prompts/step05.md` - Služba pre GDPR súhlas.
|
||||
|
||||
## Cieľ
|
||||
Implementovať formulár pre zadanie názvu firmy, kontaktov a povinný GDPR checkbox.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Na frontende (`index.html` + `wizard.js`):
|
||||
- Polia: Názov firmy (povinné), Slogan, Popis firmy.
|
||||
- Kontaktné polia: Email, Telefón (povinný aspoň jeden), Adresa, Mesto, Sociálne siete.
|
||||
- GDPR Checkbox s textom súhlasu.
|
||||
- Validácia: Tlačidlo "Pokračovať" je neaktívne, kým nie je názov firmy a GDPR checkbox.
|
||||
- Pri uložení: Najprv zavolaj `saveConsent`, potom `saveStep`.
|
||||
2. Na backende (`ajax.php`):
|
||||
- Rozšírenie validácie `saveStep` pre krok 2.
|
||||
- Overenie prítomnosti súhlasu v `data/consent/` pred uložením dát.
|
||||
- Uloženie do `wizard_data.identity` a `wizard_data.contact`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Validácia na frontende aj backende.
|
||||
- Správne ošetrenie chýb (napr. neplatný email).
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
Žiadne.
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/index.html` (DOM pre Krok 2)
|
||||
- `public/js/wizard.js` (logika pre Krok 2)
|
||||
- `public/ajax.php` (validácia kroku 2)
|
||||
|
||||
## API a dátové štruktúry
|
||||
Payload pre `saveStep`:
|
||||
```json
|
||||
{
|
||||
"step": 2,
|
||||
"data": {
|
||||
"identity": { ... },
|
||||
"contact": { ... }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
- Jasne označené povinné polia.
|
||||
- Chybové hlášky pri neplatnom vstupe.
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP validácia (email, povinné polia).
|
||||
|
||||
## Testovací scenár
|
||||
1. Vyplň názov firmy, ale nezaškrtni GDPR. Tlačidlo "Pokračovať" by malo byť blokované (alebo vrátiť chybu).
|
||||
2. Vyplň všetko správne a zaškrtni GDPR.
|
||||
3. Over, či sa vytvoril súbor v `data/consent/` a či sú dáta v `data/projects/`.
|
||||
4. Skús zadať neplatný email a over správanie.
|
||||
|
||||
## Definition of Done
|
||||
- Identita a kontakty sú úspešne uložené.
|
||||
- GDPR súhlas je riadne evidovaný a vyžadovaný.
|
||||
- Validácia funguje na oboch stranách.
|
||||
|
||||
## Obmedzenia
|
||||
- Bez GDPR súhlasu nesmie prejsť uloženie kroku 2 na backende.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
78
docs/prompts/step09.md
Normal file
78
docs/prompts/step09.md
Normal file
@ -0,0 +1,78 @@
|
||||
# Krok 09 - Wizard - Služby a Smart otázky (Krok 3)
|
||||
|
||||
## Kontext projektu
|
||||
Krok 3 zbiera konkrétne informácie o službách a odpovede na dynamické otázky, ktoré závisia od kategórie vybranej v Kroku 1.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 4 (Krok 3 - Služby a smart otazky).
|
||||
- `data/categories.json` - Definícia smart otázok pre jednotlivé kategórie.
|
||||
|
||||
## Cieľ
|
||||
Vytvoriť dynamické rozhranie pre zadávanie služieb a zodpovedanie segmentovo špecifických otázok.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Na frontende (`wizard.js`):
|
||||
- Rozhranie pre dynamické pridávanie/odoberanie služieb (Názov, Popis, Cena od).
|
||||
- Logika pre načítanie "Smart questions" z `categories.json` na základe vybranej kategórie.
|
||||
- Zobrazenie otázok (checkboxy pre Áno/Nie, textové polia pre detaily).
|
||||
- Tlačidlo "Preskočiť" pre voliteľné polia.
|
||||
2. Na backende (`ajax.php`):
|
||||
- Validácia dát pre krok 3.
|
||||
- Uloženie do `wizard_data.services` a `wizard_data.smart_answers`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Minimálne 2 služby by mali byť odporúčané, ale nie striktne povinné pre MVP (AI vie zvyšok domyslieť).
|
||||
- Smart otázky musia presne zodpovedať kategórii.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
Žiadne (predpokladá sa, že `data/categories.json` už existuje).
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/index.html` (DOM pre Krok 3)
|
||||
- `public/js/wizard.js` (logika pre Krok 3)
|
||||
- `public/ajax.php` (validácia kroku 3)
|
||||
- `data/categories.json` (doplnenie smart otázok, ak chýbajú)
|
||||
|
||||
## API a dátové štruktúry
|
||||
Payload pre `saveStep`:
|
||||
```json
|
||||
{
|
||||
"step": 3,
|
||||
"data": {
|
||||
"services": {
|
||||
"items": [{ "name": "...", "description": "...", "price_from": "..." }],
|
||||
"pricing_note": "..."
|
||||
},
|
||||
"smart_answers": {
|
||||
"question_id": "answer"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
- Jednoduché pridávanie položiek do zoznamu.
|
||||
- Prehľadné zobrazenie dynamických otázok.
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP validácia štruktúry poľa služieb.
|
||||
|
||||
## Testovací scenár
|
||||
1. Pridaj 3 služby a vyplň im názvy.
|
||||
2. Odpovedz na smart otázky (napr. pre Gastro: donaska = true).
|
||||
3. Klikni na "Pokračovať".
|
||||
4. Over v JSONe projektu, či sú služby a odpovede správne uložené.
|
||||
|
||||
## Definition of Done
|
||||
- Používateľ vie zadať služby a odpovedať na segmentové otázky.
|
||||
- Dáta sú perzistentne uložené.
|
||||
- UI je dynamické podľa kategórie.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepoužívaj zložité state management knižnice (Redux a pod.), zostaň pri Vanilla JS.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
75
docs/prompts/step10.md
Normal file
75
docs/prompts/step10.md
Normal file
@ -0,0 +1,75 @@
|
||||
# Krok 10 - Wizard - Vizuál a Assety (Krok 4)
|
||||
|
||||
## Kontext projektu
|
||||
V tomto kroku si používateľ vyberá vizuálny štýl webu a nahráva svoje assety (logo, obrázky). MVP podporuje asynchrónny upload súborov.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 5 (Krok 4 - Vizualny styl a assety).
|
||||
- `docs/architecture.md` - Sekcia 13 (Bezpečnostné minimum).
|
||||
|
||||
## Cieľ
|
||||
Implementovať výber vizuálneho štýlu a bezpečný asynchrónny upload obrázkov.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Na frontende (`index.html` + `wizard.js`):
|
||||
- Výber štýlu (Minimal, Modern, Premium, atď.).
|
||||
- Výber farebnej schémy (preddefinované palety).
|
||||
- UI pre nahrávanie loga a obrázkov (file input).
|
||||
- Asynchrónne odoslanie súboru na API akciu `uploadAsset`.
|
||||
- Zobrazenie náhľadu nahraného obrázka.
|
||||
2. Na backende (`ajax.php`):
|
||||
- Implementácia akcie `uploadAsset`.
|
||||
- Striktná validácia:
|
||||
- MIME typ (JPG, PNG, WEBP, SVG).
|
||||
- Prípona súboru.
|
||||
- Maximálna veľkosť (napr. 2MB).
|
||||
- Ochrana proti path traversal.
|
||||
- Ukladanie do `exports/<project_id>/assets/images/`.
|
||||
- Vrátenie cesty k súboru.
|
||||
3. Uloženie vizuálnych nastavení cez `saveStep`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Nahrané súbory nesmú byť spustiteľné.
|
||||
- Každý projekt má vlastný podadresár v `exports/`.
|
||||
- Používaj `FileStorage` pre správu ciest.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
Žiadne.
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/index.html` (DOM pre Krok 4)
|
||||
- `public/js/wizard.js` (logika pre Krok 4 + upload)
|
||||
- `public/ajax.php` (akcia `uploadAsset` + validácia kroku 4)
|
||||
|
||||
## API a dátové štruktúry
|
||||
Akcia `uploadAsset`:
|
||||
- Request: `FormData` (file, project_id).
|
||||
- Response: `{"success": true, "data": {"path": "..."}}`.
|
||||
|
||||
## Frontend požiadavky
|
||||
- Progress bar alebo spinner počas uploadu.
|
||||
- Možnosť zadať alt text k obrázku.
|
||||
|
||||
## Backend požiadavky
|
||||
- Bezpečné ukladanie súborov (unikátne názvy alebo bezpečné sanitizovanie).
|
||||
- Kontrola `GD` alebo `finfo` pre MIME typ.
|
||||
|
||||
## Testovací scenár
|
||||
1. Vyber vizuálny štýl.
|
||||
2. Nahraj JPG súbor ako logo. Over, či sa zobrazí náhľad.
|
||||
3. Skús nahrať `.php` alebo `.exe` súbor a over, či ho backend odmietne.
|
||||
4. Over, či sa súbor fyzicky nachádza v `exports/<project_id>/assets/images/`.
|
||||
|
||||
## Definition of Done
|
||||
- Vizuálne nastavenia sú uložené.
|
||||
- Assety sú bezpečne nahrané a priradené k projektu.
|
||||
- Validácia súborov funguje správne.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepoužívaj externé knižnice na upload (napr. Dropzone.js).
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
84
docs/prompts/step11.md
Normal file
84
docs/prompts/step11.md
Normal file
@ -0,0 +1,84 @@
|
||||
# Krok 11 - Wizard - Moduly a Formulár (Krok 5)
|
||||
|
||||
## Kontext projektu
|
||||
V poslednom kroku zberu dát si používateľ vyberá sekcie webu a konfiguruje kontaktný formulár (SMTP alebo lokálny mód).
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 6 (Krok 5 - Moduly webu a kontaktny formular).
|
||||
- `docs/mvp.md` - Sekcia 9 (Kontaktny formular).
|
||||
|
||||
## Cieľ
|
||||
Implementovať výber sekcií webu a konfiguráciu kontaktného formulára vrátane zabezpečeného uloženia hesla pre lokálny mód.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Na frontende (`index.html` + `wizard.js`):
|
||||
- Checkboxy pre výber sekcií (Hero, O nás, Služby, Cenník, Galéria, FAQ, Kontakt).
|
||||
- Prepínač pre kontaktný formulár (Zapnutý/Vypnutý).
|
||||
- Výber módu formulára: SMTP alebo Lokálny.
|
||||
- Polia pre SMTP (Host, Port, User, Pass, atď.).
|
||||
- Pole pre heslo k lokálnemu módu.
|
||||
2. Na backende (`ajax.php`):
|
||||
- Implementácia validácie pre krok 5.
|
||||
- Pri lokálnom móde: Heshovanie hesla pomocou `password_hash()` pred uložením do `wizard_data`.
|
||||
- Uloženie do `wizard_data.modules`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Heslo pre lokálny mód sa nikdy neukladá v plain-texte.
|
||||
- Sekcia "Hero" a "Kontakt" by mali byť predvolene vybrané.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
Žiadne.
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/index.html` (DOM pre Krok 5)
|
||||
- `public/js/wizard.js` (logika pre Krok 5)
|
||||
- `public/ajax.php` (validácia a heshovanie hesla)
|
||||
|
||||
## API a dátové štruktúry
|
||||
Payload pre `saveStep`:
|
||||
```json
|
||||
{
|
||||
"step": 5,
|
||||
"data": {
|
||||
"modules": {
|
||||
"pages": ["home"],
|
||||
"sections": ["hero", "about", "services", "contact"],
|
||||
"contact_form": {
|
||||
"enabled": true,
|
||||
"mode": "local",
|
||||
"smtp": null,
|
||||
"local_viewer": {
|
||||
"password_hash": "..."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
- Podmienené zobrazenie polí pre SMTP vs Lokálny mód.
|
||||
- Validácia sily hesla (voliteľne).
|
||||
|
||||
## Backend požiadavky
|
||||
- Použitie `PASSWORD_DEFAULT` pre `password_hash`.
|
||||
|
||||
## Testovací scenár
|
||||
1. Vyber sekcie "Hero", "O nás" a "Kontakt".
|
||||
2. Zvoľ Lokálny mód formulára a zadaj heslo "mojeheslo123".
|
||||
3. Klikni na "Pokračovať".
|
||||
4. Over v JSONe projektu, či je v `contact_form.local_viewer.password_hash` uložený hash, nie plain-text.
|
||||
|
||||
## Definition of Done
|
||||
- Konfigurácia modulov a formulára je uložená.
|
||||
- Heslo pre lokálny prehliadač správ je bezpečne zaheshované.
|
||||
- UI správne prepína medzi módmi formulára.
|
||||
|
||||
## Obmedzenia
|
||||
- Žiadne odosielanie testovacích mailov v tomto kroku.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
75
docs/prompts/step12.md
Normal file
75
docs/prompts/step12.md
Normal file
@ -0,0 +1,75 @@
|
||||
# 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
|
||||
66
docs/prompts/step13.md
Normal file
66
docs/prompts/step13.md
Normal file
@ -0,0 +1,66 @@
|
||||
# Krok 13 - Architektúra promptov a DAIAPI klient
|
||||
|
||||
## Kontext projektu
|
||||
Systém využíva lokálne DAIAPI na generovanie textového obsahu (JSON content layer). AI nesmie generovať HTML, ale štruktúrované dáta podľa dodaného promptu.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/mvp.md` - Sekcia 7 (AI workflow).
|
||||
- `docs/architecture.md` - Sekcia 10 (AI workflow).
|
||||
|
||||
## Cieľ
|
||||
Implementovať klienta pre DAIAPI a vytvoriť generátor promptov, ktorý na základe `wizard_data` pripraví zadanie pre AI.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie triedy `App\Services\DAIClient` v `src/Services/DAIClient.php`:
|
||||
- Metóda `sendRequest(string $prompt): ?string` (použitie `curl` alebo `file_get_contents` pre POST na lokalne API).
|
||||
- Spracovanie odpovede a ošetrenie timeoutov.
|
||||
2. Vytvorenie triedy `App\Prompts\ContentPrompt` v `src/Prompts/ContentPrompt.php`:
|
||||
- Metóda `generate(array $wizardData): string`.
|
||||
- Prompt musí obsahovať:
|
||||
- Kontext projektu.
|
||||
- Inštrukcie pre "Content Layer" (SEO, Hero, Služby, atď.).
|
||||
- Striktný zákaz HTML výstupu.
|
||||
- Príklad požadovaného JSON formátu.
|
||||
- Vstupné fakty z `wizard_data`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Prompt musí byť v slovenskom jazyku (alebo podľa `wizard_data.language`).
|
||||
- Klient musí logovať chyby komunikácie s API.
|
||||
- Použi systémovú premennú alebo konfiguračný súbor pre URL DAIAPI.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `src/Services/DAIClient.php`
|
||||
- `src/Prompts/ContentPrompt.php`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
Žiadne.
|
||||
|
||||
## API a dátové štruktúry
|
||||
DAIAPI typicky očakáva:
|
||||
- URL: `http://localhost:port/v1/chat/completions` (podľa lokálneho nastavenia).
|
||||
- Formát: JSON (messages, temperature, atď.).
|
||||
|
||||
## Frontend požiadavky
|
||||
Nerelevantné.
|
||||
|
||||
## Backend požiadavky
|
||||
- Povolené rozšírenie `curl` v PHP.
|
||||
|
||||
## Testovací scenár
|
||||
1. Vytvor testovací skript, ktorý vygeneruje prompt pre mock `wizard_data`.
|
||||
2. Over, či prompt obsahuje všetky kľúčové informácie (názov firmy, služby).
|
||||
3. Skús (ak máš prístup k API) poslať testovací dopyt a over, či vráti validný JSON bez HTML.
|
||||
|
||||
## Definition of Done
|
||||
- Klient pre AI je funkčný.
|
||||
- Prompt je správne navrhnutý a generuje štruktúrované zadanie.
|
||||
- Systém je pripravený na integráciu s workerom.
|
||||
|
||||
## Obmedzenia
|
||||
- AI nesmie v žiadnom prípade generovať tagy ako `<div>`, `<h1>` a pod. v rámci content layer.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
79
docs/prompts/step14.md
Normal file
79
docs/prompts/step14.md
Normal file
@ -0,0 +1,79 @@
|
||||
# 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
|
||||
67
docs/prompts/step15.md
Normal file
67
docs/prompts/step15.md
Normal file
@ -0,0 +1,67 @@
|
||||
# Krok 15 - Rendering Vrstva (Jadro a Baseline šablóna)
|
||||
|
||||
## Kontext projektu
|
||||
Renderer je PHP služba, ktorá z `wizard_data` a AI vygenerovaného obsahu vytvorí statický HTML web. Rendering layer je oddelená od content layer.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/mvp.md` - Sekcia 4 (Rendering layer).
|
||||
- `docs/architecture.md` - Sekcia 12 (Website Quality Requirements).
|
||||
|
||||
## Cieľ
|
||||
Vytvoriť základnú triedu `Renderer` a baseline HTML šablónu, ktorá bude slúžiť ako kostra pre generovaný web.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie triedy `App\Services\Renderer` v `src/Services/Renderer.php`:
|
||||
- Metóda `render(string $projectId): bool`.
|
||||
- Načítanie dát projektu.
|
||||
- Implementácia "tvrdého" HTML escapovania pre všetky texty z JSONu (`htmlspecialchars`).
|
||||
2. Vytvorenie základnej šablóny `src/Templates/base.php`:
|
||||
- Kompletná HTML5 štruktúra.
|
||||
- Dynamické vkladanie SEO meta tagov (`title`, `description`, OpenGraph).
|
||||
- Inklúzia CSS a JS súborov (relatívne cesty).
|
||||
- Kontajner `<main id="content">`, do ktorého sa budú vkladať sekcie.
|
||||
3. Vytvorenie statických assetov pre export:
|
||||
- `src/Templates/css/site.css` (základný reset a štruktúra).
|
||||
- `src/Templates/js/site.js` (voliteľné pre interaktivitu).
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Všetky URL v exporte musia byť relatívne.
|
||||
- Renderer nesmie generovať žiadne inline štýly, ak to nie je nevyhnutné (napr. farby v :root).
|
||||
- Striktné dodržanie sémantiky HTML5.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `src/Services/Renderer.php`
|
||||
- `src/Templates/base.php`
|
||||
- `src/Templates/css/site.css`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
Žiadne.
|
||||
|
||||
## API a dátové štruktúry
|
||||
Metóda `render` zapisuje výsledok do `exports/<project_id>/index.html`.
|
||||
|
||||
## Frontend požiadavky
|
||||
Nerelevantné (generovanie výstupu).
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2 (použitie `ob_start()` / `ob_get_clean()` pre buffering šablón).
|
||||
|
||||
## Testovací scenár
|
||||
1. Spusti `Renderer::render()` pre projekt, ktorý má v `content.generated` základné SEO dáta.
|
||||
2. Over, či vznikol súbor `exports/<project_id>/index.html`.
|
||||
3. Over v prehliadači, či má stránka správny titulok a meta tagy.
|
||||
4. Over, či je HTML kód čistý a správne escapovaný.
|
||||
|
||||
## Definition of Done
|
||||
- Renderer dokáže vytvoriť základnú HTML kostru webu.
|
||||
- SEO metadáta sú správne namapované.
|
||||
- Escapovanie je implementované na úrovni jadra.
|
||||
|
||||
## Obmedzenia
|
||||
- Žiadne externé template engine (ako Twig/Blade), použi čisté PHP šablóny.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
75
docs/prompts/step16.md
Normal file
75
docs/prompts/step16.md
Normal file
@ -0,0 +1,75 @@
|
||||
# Krok 16 - Rendering Vrstva (Obsahové Sekcie)
|
||||
|
||||
## Kontext projektu
|
||||
Po vytvorení HTML kostry je potrebné implementovať vykresľovanie jednotlivých sekcií webu (Hero, O nás, Služby, atď.) na základe AI dát.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/mvp.md` - Sekcia 4 (Rendering layer).
|
||||
- `docs/wizard.md` - Sekcia 11 (Website Quality Requirements).
|
||||
- `docs/prompts/step15.md` - Core Renderer.
|
||||
|
||||
## Cieľ
|
||||
Implementovať šablóny pre jednotlivé sekcie webu a zabezpečiť ich dynamické vkladanie do výsledného HTML.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie adresára `src/Templates/sections/`.
|
||||
2. Implementácia PHP šablón pre sekcie:
|
||||
- `hero.php` - Headline, subheadline, CTA tlačidlo.
|
||||
- `about.php` - Titulok a text O nás.
|
||||
- `services.php` - Zoznam služieb (karty).
|
||||
- `pricing.php` - Cenník alebo balíky.
|
||||
- `gallery.php` - Zobrazenie nahraných obrázkov.
|
||||
- `faq.php` - Harmonika s otázkami a odpoveďami.
|
||||
- `contact.php` - Kontaktné údaje a formulár.
|
||||
3. Úprava `Renderer.php`:
|
||||
- Logika pre iteráciu cez `wizard_data.modules.sections`.
|
||||
- Inklúzia príslušných šablón sekcií.
|
||||
- Odovzdávanie dát z `content.generated` do šablón.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Používaj sémantické HTML tagy (`<section>`, `<article>`, `<header>`, `<footer>`).
|
||||
- Zabezpeč logickú hierarchiu nadpisov (H1 len v Hero, H2 pre sekcie).
|
||||
- Každá sekcia musí mať unikátne ID pre navigáciu (anchor links).
|
||||
- Obrázky musia mať alt texty (z AI alebo fallback).
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `src/Templates/sections/hero.php`
|
||||
- `src/Templates/sections/about.php`
|
||||
- `src/Templates/sections/services.php`
|
||||
- `src/Templates/sections/pricing.php`
|
||||
- `src/Templates/sections/gallery.php`
|
||||
- `src/Templates/sections/faq.php`
|
||||
- `src/Templates/sections/contact.php`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `src/Services/Renderer.php`
|
||||
|
||||
## API a dátové štruktúry
|
||||
Vstupné dáta sú `wizard_data` a `content.generated` z JSONu projektu.
|
||||
|
||||
## Frontend požiadavky
|
||||
- Responzívny layout pre všetky sekcie.
|
||||
- Moderný styling (definovaný v `site.css` z kroku 15).
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2.
|
||||
|
||||
## Testovací scenár
|
||||
1. Vygeneruj web pre projekt s viacerými sekciami.
|
||||
2. Over, či sa v `index.html` nachádzajú všetky vybrané sekcie.
|
||||
3. Skontroluj sémantiku HTML (napr. či sú služby v zozname `<ul>` alebo v kartách).
|
||||
4. Over, či sú texty správne escapované.
|
||||
|
||||
## Definition of Done
|
||||
- Všetky podporované sekcie sú implementované a vykresľujú sa.
|
||||
- Web obsahuje kompletný obsah z AI content layer.
|
||||
- HTML je sémantické a validné.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepoužívaj žiadne JS frameworky v šablónach sekcií.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
64
docs/prompts/step17.md
Normal file
64
docs/prompts/step17.md
Normal file
@ -0,0 +1,64 @@
|
||||
# Krok 17 - Rendering Vrstva (CSS Assety)
|
||||
|
||||
## Kontext projektu
|
||||
Vizuálny štýl webu (farby, fonty, spacing) je definovaný v `wizard_data`. Renderer musí tieto nastavenia transformovať do CSS, ktoré sa aplikuje na exportovaný web.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 5 (Krok 4 - Vizualny styl).
|
||||
- `docs/prompts/step15.md` - Core Renderer.
|
||||
|
||||
## Cieľ
|
||||
Implementovať generovanie dynamického CSS na základe vizuálnych preferencií používateľa.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Úprava `Renderer.php`:
|
||||
- Generovanie bloku `:root` v HTML hlavičke alebo v samostatnom súbore.
|
||||
- Mapovanie `wizard_data.visuals.color_scheme` na CSS premenné (`--primary-color`, `--bg-color`, atď.).
|
||||
- Mapovanie `wizard_data.visuals.font_style` na konkrétne font-family (napr. Google Fonts importy).
|
||||
- Mapovanie `wizard_data.visuals.layout_density` na premenné pre padding a margin.
|
||||
2. Úprava `src/Templates/css/site.css`:
|
||||
- Použitie CSS premenných v celom štýle.
|
||||
- Definícia tried pre rôzne štýly (Minimal, Modern, Corporate) - napr. zaoblenie rohov, tiene.
|
||||
3. Zabezpečenie kopírovania finalizovaného `site.css` do `exports/<project_id>/assets/site.css`.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Preferuj systémové fonty alebo bezpečné webové fonty pre MVP.
|
||||
- Farby musia mať dostatočný kontrast (WCAG compliance).
|
||||
- Žiadny inline CSS v HTML tagoch (okrem `:root` premenných).
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
Žiadne.
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `src/Services/Renderer.php`
|
||||
- `src/Templates/css/site.css`
|
||||
|
||||
## API a dátové štruktúry
|
||||
Vstupné dáta: `wizard_data.visuals`.
|
||||
|
||||
## Frontend požiadavky
|
||||
- Web musí vizuálne zodpovedať voľbe vo wizadre.
|
||||
- Podpora tmavého/svetlého módu (ak je v rozsahu).
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP logika pre výpočet kontrastnej farby textu (voliteľne).
|
||||
|
||||
## Testovací scenár
|
||||
1. Zmeň primárnu farbu vo wizadre na červenú.
|
||||
2. Vygeneruj web a over, či sú kľúčové prvky (tlačidlá, nadpisy) červené.
|
||||
3. Skontroluj `index.html` alebo `site.css`, či obsahuje správne CSS premenné.
|
||||
4. Zmeň štýl na "Minimal" a over, či sa zmenili napr. zaoblenia rohov (border-radius).
|
||||
|
||||
## Definition of Done
|
||||
- Vizuálne nastavenia sú úspešne aplikované cez CSS premenné.
|
||||
- Exportovaný web rešpektuje voľbu farieb, fontov a layoutu.
|
||||
- CSS je čisté a udržiavateľné.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepoužívaj CSS preprocesory (Sass/Less) pri renderovaní na serveri.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
78
docs/prompts/step18.md
Normal file
78
docs/prompts/step18.md
Normal file
@ -0,0 +1,78 @@
|
||||
# Krok 18 - Kontakt a Formuláre (SMTP & Lokálny mód)
|
||||
|
||||
## Kontext projektu
|
||||
Exportovaný web musí obsahovať funkčný kontaktný formulár. Podľa konfigurácie buď odosiela maily cez SMTP, alebo ukladá správy lokálne.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/mvp.md` - Sekcia 9 (Kontaktny formular).
|
||||
- `docs/architecture.md` - Sekcia 11 (Kontaktny formular).
|
||||
|
||||
## Cieľ
|
||||
Implementovať backendové skripty pre formuláre, ktoré budú súčasťou exportu.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Vytvorenie šablóny `src/Templates/emailer.php`:
|
||||
- PHP skript, ktorý prijme POST dáta z formulára.
|
||||
- Odoslanie emailu cez SMTP (použitie PHP `mail()` alebo jednoduchá SMTP implementácia bez externých knižníc).
|
||||
- Ochrana proti spamu (honeypot, rate limit).
|
||||
2. Vytvorenie šablóny `src/Templates/form-viewer.php`:
|
||||
- PHP skript pre lokálny mód.
|
||||
- Prihlasovacia obrazovka (overenie voči hashu z `config.json`).
|
||||
- Výpis prijatých správ zo zložky `messages/`.
|
||||
- Detail správy.
|
||||
3. Úprava `Renderer.php`:
|
||||
- Ak je formulár zapnutý, skopíruj príslušný PHP skript do exportu.
|
||||
- Vygeneruj `config.json` v exporte s nastaveniami (SMTP údaje alebo hash hesla).
|
||||
- Zabezpeč vytvorenie prázdneho priečinka `messages/` a `.htaccess` na jeho ochranu.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- `emailer.php` nesmie obsahovať SMTP heslo priamo v kóde (načíta ho z `config.json`).
|
||||
- `form-viewer.php` musí používať session pre prihlásenie.
|
||||
- Zabezpeč ochranu proti XSS pri výpise správ v lokálnom móde.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `src/Templates/emailer.php`
|
||||
- `src/Templates/form-viewer.php`
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `src/Services/Renderer.php`
|
||||
|
||||
## API a dátové štruktúry
|
||||
Štruktúra správy v lokálnom móde:
|
||||
```json
|
||||
{
|
||||
"id": "...",
|
||||
"timestamp": "...",
|
||||
"sender_name": "...",
|
||||
"sender_email": "...",
|
||||
"subject": "...",
|
||||
"message": "..."
|
||||
}
|
||||
```
|
||||
|
||||
## Frontend požiadavky
|
||||
- AJAX odosielanie formulára na webe s feedbackom (Úspech/Chyba).
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP 8.2 na cieľovom hostingu.
|
||||
|
||||
## Testovací scenár
|
||||
1. Vygeneruj web s lokálnym módom formulára.
|
||||
2. Odošli správu cez formulár na webe.
|
||||
3. Over, či vznikol súbor v `exports/<id>/messages/`.
|
||||
4. Prihlás sa do `form-viewer.php` so zadaným heslom a over, či vidíš správu.
|
||||
5. Zopakuj pre SMTP mód (over odoslanie mailu).
|
||||
|
||||
## Definition of Done
|
||||
- Kontaktný formulár je plne funkčný v oboch módoch.
|
||||
- Bezpečnosť dát a ochrana proti spamu je implementovaná.
|
||||
- Prehliadač správ funguje správne.
|
||||
|
||||
## Obmedzenia
|
||||
- Žiadne externé knižnice ako PHPMailer (ak je to možné, použiť natívne PHP riešenie pre MVP).
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
66
docs/prompts/step19.md
Normal file
66
docs/prompts/step19.md
Normal file
@ -0,0 +1,66 @@
|
||||
# Krok 19 - Preview a Export (Posledné fázy Wizarda)
|
||||
|
||||
## Kontext projektu
|
||||
Po úspešnom vygenerovaní a vyrenderovaní webu si ho používateľ môže prezrieť a následne stiahnuť ako ZIP archív.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/wizard.md` - Sekcia 8 (Krok 7 - Preview) a 9 (Krok 8 - Export).
|
||||
|
||||
## Cieľ
|
||||
Implementovať UI pre náhľad vygenerovaného webu a funkčnosť pre stiahnutie projektu v ZIP formáte.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Na frontende (`index.html` + `wizard.js`):
|
||||
- Krok 7: Zobrazenie náhľadu (napr. cez `<iframe>` smerujúci na `exports/<project_id>/index.html`).
|
||||
- Možnosť prepínať medzi Desktop/Mobile náhľadom.
|
||||
- Tlačidlo "Upraviť zadanie" (návrat do wizardu).
|
||||
- Tlačidlo "Stiahnuť web" (volanie exportu).
|
||||
2. Na backende (`ajax.php`):
|
||||
- Implementácia akcie `exportWebsite`.
|
||||
- Vytvorenie ZIP archívu z obsahu priečinka `exports/<project_id>/`.
|
||||
- ZIP nesmie obsahovať konfiguračné súbory wizardu alebo AI pracovné súbory (iba výsledný web).
|
||||
- Vrátenie linku na stiahnutie alebo priamy download.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Preview musí byť izolované (iframe), aby CSS exportu neovplyvňovalo wizard.
|
||||
- ZIP archív by mal mať názov podľa firmy (napr. `web-pizza-marco.zip`).
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
Žiadne.
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- `public/index.html` (DOM pre náhľad a export)
|
||||
- `public/js/wizard.js` (logika pre iframe a download)
|
||||
- `public/ajax.php` (akcia `exportWebsite` - ZIP generovanie)
|
||||
|
||||
## API a dátové štruktúry
|
||||
Akcia `exportWebsite`:
|
||||
- Request: `{ "project_id": "..." }`.
|
||||
- Response: `{ "success": true, "data": { "download_url": "..." } }`.
|
||||
|
||||
## Frontend požiadavky
|
||||
- Pútavé zobrazenie náhľadu.
|
||||
- Jasné inštrukcie, čo robiť po stiahnutí (napr. "Nahrajte obsah na váš FTP").
|
||||
|
||||
## Backend požiadavky
|
||||
- PHP rozšírenie `ZipArchive`.
|
||||
|
||||
## Testovací scenár
|
||||
1. Dokonči generovanie webu.
|
||||
2. Over, či sa v Kroku 7 správne zobrazí náhľad v iframe.
|
||||
3. Klikni na stiahnutie.
|
||||
4. Rozbaľ ZIP a over, či obsahuje všetky potrebné súbory (index, assets, php skripty) a či web funguje po otvorení z disku.
|
||||
|
||||
## Definition of Done
|
||||
- Používateľ si môže prezrieť web pred stiahnutím.
|
||||
- Export do ZIP funguje a obsahuje kompletný, funkčný statický web.
|
||||
- Proces je plynulý od konca generovania až po download.
|
||||
|
||||
## Obmedzenia
|
||||
- ZIP nesmie byť príliš veľký (obmedzenie na assety).
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
66
docs/prompts/step20.md
Normal file
66
docs/prompts/step20.md
Normal file
@ -0,0 +1,66 @@
|
||||
# Krok 20 - Kvalitatívne Validácie a Error Handling Fixes
|
||||
|
||||
## Kontext projektu
|
||||
Pred dokončením MVP je potrebné vykonať finálnu revíziu kódu, opraviť drobné chyby a zabezpečiť súlad so všetkými technickými požiadavkami.
|
||||
|
||||
## Pred implementáciou si preštuduj
|
||||
- `docs/architecture.md` - Celý dokument, najmä sekcie 12 a 13.
|
||||
- `docs/mvp.md` - "Website Quality Requirements".
|
||||
|
||||
## Cieľ
|
||||
Vykonať plošnú kontrolu kvality, optimalizovať výkon (v rámci možností) a zabezpečiť robustné ošetrenie chýb.
|
||||
|
||||
## Požadované zmeny
|
||||
1. Revízia backendu:
|
||||
- Kontrola všetkých `try-catch` blokov.
|
||||
- Odstránenie `var_dump` a debug logov.
|
||||
- Overenie bezpečnosti (path traversal, sanitizácia vstupov).
|
||||
2. Revízia frontendu:
|
||||
- Kontrola konzoly prehliadača na JS chyby.
|
||||
- Optimalizácia načítavania assetov.
|
||||
- Finálne doladenie CSS (responzivita, prístupnosť).
|
||||
3. Revízia generovaného webu:
|
||||
- Validácia HTML cez W3C (mock test).
|
||||
- Kontrola relatívnych ciest.
|
||||
- Overenie funkčnosti bez JavaScriptu (kde je to možné).
|
||||
4. Dokumentácia:
|
||||
- Aktualizácia `README.md` s inštrukciami pre inštaláciu a spustenie.
|
||||
|
||||
## Implementačné pravidlá
|
||||
- Kód musí byť čistý, komentovaný a v súlade s PSR štandardmi.
|
||||
- Žiadne "hidden" závislosti.
|
||||
- Systém musí fungovať na štandardnom PHP 8.2 hostingu.
|
||||
|
||||
## Súbory ktoré je potrebné vytvoriť
|
||||
- `README.md` (aktualizácia/vytvorenie)
|
||||
|
||||
## Súbory ktoré je potrebné upraviť
|
||||
- Plošne všetky súbory podľa potreby.
|
||||
|
||||
## API a dátové štruktúry
|
||||
Žiadne zmeny, len stabilizácia.
|
||||
|
||||
## Frontend požiadavky
|
||||
- Plynulý zážitok bez "preblikávania" alebo neošetrených stavov.
|
||||
|
||||
## Backend požiadavky
|
||||
- Stabilný výkon, žiadne memory leaky pri spracovaní úloh.
|
||||
|
||||
## Testovací scenár
|
||||
1. Prejdi celým procesom od prvej návštevy až po export pre 3 rôzne kategórie biznisu.
|
||||
2. V každom kroku skús zadať neplatné dáta a over, či ich systém správne odmietne.
|
||||
3. Skontroluj vygenerované ZIP archívy na rôznych zariadeniach/prehliadačoch.
|
||||
|
||||
## Definition of Done
|
||||
- Systém je stabilný, bezpečný a pripravený na nasadenie.
|
||||
- Kvalita kódu a výstupu spĺňa MVP požiadavky.
|
||||
- Všetky známe chyby sú opravené.
|
||||
|
||||
## Obmedzenia
|
||||
- Nepridávaj nové funkcie, ktoré nie sú v MVP scope.
|
||||
|
||||
## Výstup
|
||||
- zoznam vytvorených súborov
|
||||
- zoznam upravených súborov
|
||||
- stručné zhrnutie vykonaných zmien
|
||||
- prípadné otvorené problémy
|
||||
Reference in New Issue
Block a user