merged data info and created one mvp.md
This commit is contained in:
438
docs/wizard.md
438
docs/wizard.md
@ -1,173 +1,351 @@
|
||||
# WebWizard - Detailný Návrh Sprievodcu (Wizard)
|
||||
# WebWizard - Wizard MVP
|
||||
|
||||
Tento dokument popisuje používateľskú cestu, logiku otázok a štruktúru zberu dát pre AI generátor webstránok.
|
||||
Tento dokument definuje pouzivatelsku cestu a kanonicky zber dat pre MVP. Wizard musi zbierat data tak, aby AI vytvorila strukturovany JSON obsah a renderer z neho vedel opakovane vytvorit HTML.
|
||||
|
||||
---
|
||||
|
||||
## 1. Prehľad celého wizardu
|
||||
|
||||
Proces je navrhnutý tak, aby minimalizoval kognitívnu záťaž ("mentálnu náročnosť") a pôsobil ako inteligentný dialóg.
|
||||
## 1. Prehlad wizardu
|
||||
|
||||
```ascii
|
||||
[ START ]
|
||||
|
|
||||
(Krok 1) Segmentácia Biznisu <------------------+
|
||||
| | (Ak "Iné", AI vygeneruje
|
||||
(Krok 2) Základná Identita | dynamické otázky)
|
||||
| |
|
||||
(Krok 3) Smart Otázky (Dynamicky podľa segmentu)-+
|
||||
(1) Segmentacia biznisu
|
||||
|
|
||||
(Krok 4) Vizuálny Štýl & Branding
|
||||
(2) Identita, kontakt a GDPR suhlas
|
||||
|
|
||||
(Krok 5) Štruktúra & Moduly
|
||||
(3) Sluzby a smart otazky
|
||||
|
|
||||
(Krok 6) Magické Generovanie (Progress)
|
||||
(4) Vizualny styl a assety
|
||||
|
|
||||
(Krok 7) Interaktívny Náhľad (Preview)
|
||||
(5) Moduly webu a kontaktny formular
|
||||
|
|
||||
(Krok 8) Publikovanie & Hosting
|
||||
(6) Generovanie JSON obsahu
|
||||
|
|
||||
(7) Preview vyrenderovaneho webu
|
||||
|
|
||||
(8) Export webu
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Detailný rozpis krokov
|
||||
|
||||
### Krok 1: Segmentácia Biznisu
|
||||
* **Účel:** Okamžité nastavenie kontextu pre AI. Od tohto kroku závisí tón komunikácie a ďalšie otázky.
|
||||
* **Otázky:**
|
||||
1. **V akej oblasti podnikáte?**
|
||||
* **Typ:** Radio cards (Ikona + Text)
|
||||
* **Možnosti:** Gastro, Krása & Zdravie, Remeslá, Právne služby, IT & Kreatíva, Reality, Auto-Moto, Ubytovanie, Iné.
|
||||
* **Povinné:** Áno.
|
||||
2. **Vyberte podkategóriu:**
|
||||
* **Typ:** Select / Chips (Dynamicky podľa voľby vyššie).
|
||||
* **Povinné:** Áno.
|
||||
* **Využitie:** AI vyberie správnu "personu" a špecifický slovník (napr. pre advokáta formálny, pre kaviareň priateľský).
|
||||
|
||||
### Krok 2: Základná Identita
|
||||
* **Účel:** Zber faktických údajov, ktoré nesmú byť vymyslené AI.
|
||||
* **Otázky:**
|
||||
1. **Názov vašej firmy / projektu:** (Text, Povinné)
|
||||
2. **Váš slogan (ak máte):** (Text, Voliteľné - ak chýba, AI navrhne 3 varianty v náhľade)
|
||||
3. **Kde vás zákazníci nájdu?** (Text, Voliteľné - pre online biznis netreba)
|
||||
4. **Kontaktné údaje (Tel/Email):** (Text, Povinné)
|
||||
* **Využitie:** Naplnenie hlavičky (Header), päty (Footer) a kontaktnej sekcie.
|
||||
|
||||
### Krok 3: Smart Otázky (Dynamicky podľa segmentu)
|
||||
* **Účel:** Získať "expertízu", vďaka ktorej web nebude pôsobiť genericky.
|
||||
* **Príklady otázok (viď sekciu 5 pre detaily):**
|
||||
* *Reštaurácia:* "Máte denné menu?", "Prijímate rezervácie?"
|
||||
* *Remeselník:* "Ponúkate havarijnú službu 24/7?", "Máte certifikáty?"
|
||||
* **Využitie:** AI vytvorí špeciálne bloky obsahu (napr. rezervačný formulár, tabuľka s otváracími hodinami).
|
||||
|
||||
### Krok 4: Vizuálny Štýl & Branding
|
||||
* **Účel:** Určenie estetického smerovania bez nutnosti byť grafikom.
|
||||
* **Otázky:**
|
||||
1. **Aký štýl sa vám páči?**
|
||||
* **Typ:** Vizuálne karty (Náhľad dizajnu)
|
||||
* **Možnosti:** Minimalistický, Luxusný, Firemný, Kreatívny, Technický.
|
||||
2. **Vyberte si farebnú paletu:**
|
||||
* **Typ:** Farebné presety (3 ladiace farby) alebo Color Picker.
|
||||
3. **Máte logo?**
|
||||
* **Typ:** Upload / "Nemám, vygenerujte mi textové".
|
||||
* **Využitie:** Generovanie CSS premenných a výber Google Fonts.
|
||||
|
||||
### Krok 5: Štruktúra & Moduly
|
||||
* **Účel:** Definícia rozsahu webu.
|
||||
* **Otázka:** Čo má váš web obsahovať?
|
||||
* **Typ:** Checkbox list.
|
||||
* **Možnosti:** O nás, Služby, Cenník, Galéria fotiek, FAQ, Referencie zákazníkov, Kontaktný formulár.
|
||||
* **Využitie:** AI vygeneruje sekcie na domovskej stránke (Single Page design).
|
||||
Wizard nesluzi ako vizualny editor. Sluzi na zber rozhodnuti a faktov.
|
||||
|
||||
---
|
||||
|
||||
## 3. Typy podnikania (Kategorizácia)
|
||||
## 2. Krok 1 - Segmentacia biznisu
|
||||
|
||||
| Skupina | Podkategórie |
|
||||
Ucel: nastavit kontext, ton komunikacie, smart otazky a predvolene moduly.
|
||||
|
||||
Polia:
|
||||
|
||||
* `business_category.group` - hlavna skupina,
|
||||
* `business_category.subcategory` - podkategoria,
|
||||
* `business_category.custom_description` - vlastny typ, ak pouzivatel zvoli "Ine".
|
||||
|
||||
Typ UI:
|
||||
|
||||
* radio cards pre hlavne skupiny,
|
||||
* chips alebo select pre podkategorie,
|
||||
* textove pole pre "Ine".
|
||||
|
||||
Priklady skupin:
|
||||
|
||||
| Skupina | Podkategorie |
|
||||
| :--- | :--- |
|
||||
| **Gastro** | Reštaurácia, Kaviareň, Bistro, Donáška, Vináreň, Cukráreň |
|
||||
| **Krása & Zdravie** | Kaderníctvo, Kozmetika, Barber, Zubná ambulancia, Masáže, Fitness |
|
||||
| **Remeslá** | Inštalatér, Elektrikár, Stolár, Maliar, Hodinový manžel, Kominár |
|
||||
| **Právne & Fin. služby** | Advokát, Účtovník, Notár, Finančný poradca, Exekútor |
|
||||
| **Auto-Moto** | Autoservis, Pneuservis, Autopožičovňa, Detailing, Autoškola |
|
||||
| **IT & Kreatíva** | Programátor, Grafik, Fotograf, Marketingová agentúra, Copywriter |
|
||||
| **Reality & Staveb.** | Realitná kancelária, Architekt, Správa budov, Stavebná firma |
|
||||
| **Vzdelávanie** | Doučovanie, Jazyková škola, Škôlka, Umelecká škola |
|
||||
| Gastro | Restauracia, Kaviaren, Bistro, Donaska, Vinaren, Cukraren |
|
||||
| Krasa & Zdravie | Kadernictvo, Kozmetika, Barber, Zubna ambulancia, Masaze, Fitness |
|
||||
| Remesla | Instalater, Elektrikar, Stolar, Maliar, Hodinovy manzel, Kominar |
|
||||
| Pravo & Financie | Advokat, Uctovnik, Notar, Financny poradca |
|
||||
| Auto-Moto | Autoservis, Pneuservis, Autopozicovna, Detailing, Autoskola |
|
||||
| IT & Kreativa | Programator, Grafik, Fotograf, Marketingova agentura, Copywriter |
|
||||
| Reality & Stavby | Realitna kancelaria, Architekt, Sprava budov, Stavebna firma |
|
||||
| Vzdelavanie | Doucovanie, Jazykova skola, Skolka, Umelecka skola |
|
||||
|
||||
Ak pouzivatel zvoli "Ine", backend moze cez DAIAPI navrhnut 3 smart otazky. Navrhy sa ulozia do `data/admin/pending_categories.json`.
|
||||
|
||||
---
|
||||
|
||||
## 4. Dynamické otázky (Príklady)
|
||||
## 3. Krok 2 - Identita, kontakt a GDPR suhlas
|
||||
|
||||
* **Gastro:**
|
||||
* Ponúkate rozvoz jedla? (Áno/Nie)
|
||||
* Máte špeciálne denné menu? (Áno/Nie)
|
||||
* Prijímate online rezervácie stolov? (Áno/Nie)
|
||||
* **Ubytovanie:**
|
||||
* Počet izieb/kapacita? (Číslo)
|
||||
* Čas Check-in a Check-out? (Text)
|
||||
* Ponúkate parkovanie a WiFi v cene? (Checkboxy)
|
||||
* **Právne služby:**
|
||||
* V ktorých oblastiach práva pôsobíte? (Chips: Trestné, Rodinné, Obchodné...)
|
||||
* Ponúkate prvú konzultáciu zdarma? (Áno/Nie)
|
||||
* **Auto-Moto:**
|
||||
* Ktoré značky servisujete? (Text/Všetky)
|
||||
* Máte odťahovú službu? (Áno/Nie)
|
||||
Ucel: ziskat fakty, ktore AI nesmie vymyslat.
|
||||
|
||||
Polia:
|
||||
|
||||
* `identity.business_name` - povinne,
|
||||
* `identity.tagline` - volitelne,
|
||||
* `identity.description` - volitelne,
|
||||
* `contact.email` - povinne, ak chyba telefon,
|
||||
* `contact.phone` - povinne, ak chyba email,
|
||||
* `contact.address` - volitelne,
|
||||
* `contact.city` - volitelne,
|
||||
* `contact.region` - volitelne,
|
||||
* `contact.socials` - volitelne.
|
||||
|
||||
GDPR checkbox je povinny:
|
||||
|
||||
> Suhlasim so spracovanim zadanych udajov za ucelom vytvorenia webovej stranky.
|
||||
|
||||
Bez zaskrtnutia nie je mozne pokracovat. Backend uklada:
|
||||
|
||||
* `accepted: true`,
|
||||
* `accepted_at` v UTC,
|
||||
* `consent_text_version`,
|
||||
* presny text suhlasu,
|
||||
* `project_id`,
|
||||
* `user_id`.
|
||||
|
||||
---
|
||||
|
||||
## 5. Riešenie pre neznámy typ ("Iné")
|
||||
## 4. Krok 3 - Sluzby a smart otazky
|
||||
|
||||
Ak používateľ nenájde svoju kategóriu, aktivuje sa **AI Concierge Workflow**:
|
||||
Ucel: ziskat obsahove vstupy, vdaka ktorym web nebude genericky.
|
||||
|
||||
1. **Vstup:** Používateľ zvolí "Iné" a napíše: "Chovateľ včiel a predaj medu".
|
||||
2. **AI Analýza:** Backend okamžite pošle tento text DAIAPI.
|
||||
3. **Real-time generovanie:** AI vráti 3 relevantné otázky:
|
||||
* "Máte vlastný e-shop alebo len osobný odber?"
|
||||
* "Ponúkate exkurzie na včelnicu?"
|
||||
* "Máte certifikát BIO kvality?"
|
||||
4. **Kontinuita:** Používateľ tieto otázky dostane v Kroku 3, akoby boli v systéme odjakživa.
|
||||
5. **Uloženie:** Systém zapíše túto novú kategóriu do `data/admin/pending_categories.json`.
|
||||
Polia:
|
||||
|
||||
* `services.items[]` - nazov, popis, volitelne cena od,
|
||||
* `services.pricing_note` - poznamka k cenniku,
|
||||
* `smart_answers` - odpovede na dynamicke otazky.
|
||||
|
||||
Priklady smart otazok:
|
||||
|
||||
* Gastro: donaska, denne menu, rezervacie, otvaracie hodiny.
|
||||
* Ubytovanie: kapacita, check-in/check-out, parkovanie, WiFi.
|
||||
* Pravo: oblasti prava, prva konzultacia, jazyk konzultacie.
|
||||
* Auto-Moto: servisovane znacky, odtah, diagnostika, pneuservis.
|
||||
|
||||
UI:
|
||||
|
||||
* checkboxy,
|
||||
* chips,
|
||||
* kratke textove polia,
|
||||
* tlacidlo "Preskocit a nechat na AI" pre volitelne otazky.
|
||||
|
||||
---
|
||||
|
||||
## 6. Administrácia (JSON Štruktúra)
|
||||
## 5. Krok 4 - Vizualny styl a assety
|
||||
|
||||
Ucel: urcit dizajnovy smer bez potreby grafika.
|
||||
|
||||
Polia:
|
||||
|
||||
* `visuals.style` - napriklad `minimal`, `modern`, `premium`, `corporate`, `creative`, `technical`,
|
||||
* `visuals.color_scheme.primary`,
|
||||
* `visuals.color_scheme.secondary`,
|
||||
* `visuals.color_scheme.accent`,
|
||||
* `visuals.color_scheme.background`,
|
||||
* `visuals.color_scheme.text`,
|
||||
* `visuals.font_style` - `sans`, `serif`, `mixed`,
|
||||
* `visuals.layout_density` - `compact`, `comfortable`, `spacious`,
|
||||
* `assets.logo`,
|
||||
* `assets.images[]`,
|
||||
* `assets.image_source` - `uploaded`, `none`, `placeholder`.
|
||||
|
||||
Uploady:
|
||||
|
||||
* povolene obrazkove formaty: jpg, jpeg, png, webp, svg iba po sanitizacii,
|
||||
* limit velkosti suboru definuje backend,
|
||||
* kazdy obrazok ma mat alt text alebo AI navrh alt textu.
|
||||
|
||||
---
|
||||
|
||||
## 6. Krok 5 - Moduly webu a kontaktny formular
|
||||
|
||||
Ucel: definovat rozsah vysledneho webu.
|
||||
|
||||
Polia:
|
||||
|
||||
* `modules.pages` - v MVP typicky `["home"]`,
|
||||
* `modules.sections` - zoznam sekcii,
|
||||
* `modules.contact_form.enabled`,
|
||||
* `modules.contact_form.mode`,
|
||||
* `modules.contact_form.smtp`,
|
||||
* `modules.contact_form.local_viewer`.
|
||||
|
||||
Dostupne sekcie:
|
||||
|
||||
* hero,
|
||||
* about,
|
||||
* services,
|
||||
* pricing,
|
||||
* gallery,
|
||||
* testimonials,
|
||||
* faq,
|
||||
* contact.
|
||||
|
||||
### Kontaktny formular
|
||||
|
||||
Ak je formular zapnuty, pouzivatel si vyberie rezim.
|
||||
|
||||
SMTP mod:
|
||||
|
||||
* SMTP host,
|
||||
* port,
|
||||
* username,
|
||||
* password,
|
||||
* encryption,
|
||||
* recipient email.
|
||||
|
||||
Lokalny mod:
|
||||
|
||||
* formular uklada spravy do `messages/`,
|
||||
* export obsahuje `form-viewer.php`,
|
||||
* pouzivatel zada heslo pre prezeranie sprav,
|
||||
* heslo sa uklada iba ako hash.
|
||||
|
||||
---
|
||||
|
||||
## 7. Krok 6 - Generovanie JSON obsahu
|
||||
|
||||
Frontend zavola `generateWebsite`. Backend zaradi AI ulohu do fronty.
|
||||
|
||||
DAIAPI dostane `wizard_data` a vrati content JSON. AI nesmie vratit HTML.
|
||||
|
||||
Priklady vygenerovanych casti:
|
||||
|
||||
* SEO title a description,
|
||||
* hero headline,
|
||||
* text O nas,
|
||||
* popisy sluzieb,
|
||||
* benefity,
|
||||
* FAQ,
|
||||
* referencie, ak pouzivatel dodal vstupy,
|
||||
* kontaktne bloky.
|
||||
|
||||
---
|
||||
|
||||
## 8. Krok 7 - Preview
|
||||
|
||||
Preview zobrazuje vysledok renderingu, nie AI HTML.
|
||||
|
||||
Pouzivatel moze:
|
||||
|
||||
* pregenerovat obsah,
|
||||
* vratit sa do wizardu a zmenit vstupy,
|
||||
* zmenit vizualny styl,
|
||||
* pregenerovat HTML z existujuceho JSON obsahu,
|
||||
* exportovat web.
|
||||
|
||||
Pouzivatel nemoze v MVP rucne presuvat elementy ani upravovat DOM.
|
||||
|
||||
---
|
||||
|
||||
## 9. Krok 8 - Export webu
|
||||
|
||||
MVP vytvara exportovatelny priecinok. Neriesi domenu, DNS, SSL ani automaticke nasadenie.
|
||||
|
||||
Export obsahuje:
|
||||
|
||||
* `index.html`,
|
||||
* `config.json`,
|
||||
* `assets/site.css`,
|
||||
* volitelne `assets/site.js`,
|
||||
* obrazky,
|
||||
* `emailer.php` pri SMTP formulari,
|
||||
* `form-viewer.php` a `messages/` pri lokalnom formulari.
|
||||
|
||||
Vsetky URL musia byt relativne.
|
||||
|
||||
---
|
||||
|
||||
## 10. Wizard Data Schema
|
||||
|
||||
Kanonicky model:
|
||||
|
||||
### `data/categories.json` (Definícia)
|
||||
```json
|
||||
{
|
||||
"gastro": {
|
||||
"label": "Gastro",
|
||||
"subcategories": ["restaurant", "cafe", "bistro"],
|
||||
"smart_questions": [
|
||||
{ "id": "delivery", "label": "Ponúkate rozvoz?", "type": "boolean" },
|
||||
{ "id": "menu", "label": "Máte denné menu?", "type": "boolean" }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### `data/admin/pending_categories.json` (AI návrhy)
|
||||
```json
|
||||
{
|
||||
"bee_farmer": {
|
||||
"original_input": "Chovateľ včiel",
|
||||
"ai_generated_questions": [
|
||||
{ "id": "q1", "label": "Máte BIO certifikát?", "type": "boolean" }
|
||||
"identity": {
|
||||
"business_name": "Pizza Marco",
|
||||
"tagline": "Poctiva pizza v Kosiciach",
|
||||
"description": "Rodinna pizzeria"
|
||||
},
|
||||
"contact": {
|
||||
"email": "info@pizzamarco.sk",
|
||||
"phone": "+421 900 000 000",
|
||||
"address": "Hlavna 1",
|
||||
"city": "Kosice",
|
||||
"region": "Kosicky kraj",
|
||||
"socials": {
|
||||
"facebook": "https://facebook.com/pizzamarco"
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
"items": [
|
||||
{
|
||||
"name": "Donaska pizze",
|
||||
"description": "Rozvoz po meste",
|
||||
"price_from": "7 EUR"
|
||||
}
|
||||
],
|
||||
"usage_count": 1,
|
||||
"status": "pending"
|
||||
"pricing_note": "Ceny su orientacne."
|
||||
},
|
||||
"visuals": {
|
||||
"style": "modern",
|
||||
"color_scheme": {
|
||||
"primary": "#C62828",
|
||||
"secondary": "#F8F1E7",
|
||||
"accent": "#2E7D32",
|
||||
"background": "#FFFFFF",
|
||||
"text": "#1A1A1A"
|
||||
},
|
||||
"font_style": "sans",
|
||||
"layout_density": "comfortable"
|
||||
},
|
||||
"modules": {
|
||||
"pages": ["home"],
|
||||
"sections": ["hero", "about", "services", "faq", "contact"],
|
||||
"contact_form": {
|
||||
"enabled": true,
|
||||
"mode": "local",
|
||||
"smtp": null,
|
||||
"local_viewer": {
|
||||
"password_hash": "$2y$..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"assets": {
|
||||
"logo": {
|
||||
"uploaded": true,
|
||||
"path": "assets/images/logo.png",
|
||||
"alt": "Logo Pizza Marco"
|
||||
},
|
||||
"images": [
|
||||
{
|
||||
"path": "assets/images/pizza.jpg",
|
||||
"alt": "Cerstva pizza"
|
||||
}
|
||||
],
|
||||
"image_source": "uploaded"
|
||||
},
|
||||
"language": {
|
||||
"primary": "sk",
|
||||
"additional": [],
|
||||
"tone": "friendly"
|
||||
},
|
||||
"business_category": {
|
||||
"group": "gastro",
|
||||
"subcategory": "restaurant",
|
||||
"custom_description": null
|
||||
},
|
||||
"smart_answers": {
|
||||
"delivery": true,
|
||||
"daily_menu": true,
|
||||
"reservations": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Minimalizácia počtu otázok (Optimization)
|
||||
## 11. Website Quality Requirements
|
||||
|
||||
| Stratégia | Implementácia |
|
||||
| :--- | :--- |
|
||||
| **Povinné minimum** | Iba Názov, Email a Typ biznisu. Ostatné je dobrovoľné. |
|
||||
| **AI Inference** | Ak používateľ napíše názov "Pizzeria u Petra", AI v Kroku 1 automaticky predvolí "Gastro -> Reštaurácia". |
|
||||
| **Defaulting** | Vizuálny štýl je prednastavený na "Minimalistický" - používateľ môže len kliknúť "Ďalej". |
|
||||
| **Skip Option** | Každý krok (okrem 1 a 2) má tlačidlo "Preskočiť a nechať na AI". |
|
||||
| **Smart Defaults** | Otázky v Kroku 5 (Obsah) sú vopred zaškrtnuté podľa typu biznisu (napr. pre reštauráciu je "Cenník/Menu" automaticky ON). |
|
||||
Wizard musi zbierat dostatok informacii na to, aby renderer vedel splnit:
|
||||
|
||||
* mobile responsive design,
|
||||
* zakladne SEO meta tagy,
|
||||
* OpenGraph meta tagy,
|
||||
* alt texty pre obrazky,
|
||||
* minimalne accessibility poziadavky,
|
||||
* validny HTML,
|
||||
* validny CSS,
|
||||
* ziadne JavaScript chyby,
|
||||
* ziadne nepovolene externe zavislosti,
|
||||
* relativne URL,
|
||||
* fungovanie bez build procesu.
|
||||
|
||||
Reference in New Issue
Block a user