Obsah · kapitola 7

7 Administrace a konfigurace

Vše se ukládá do config přes webové rozhraní administrace. Po uložení proběhne přesměrování (bez opakovaného odeslání formuláře). Všechny tři varianty exponátu (základní SVG, Rive, D-ID) čtou stejnou konfiguraci. Po nasazení do veřejného provozu doporučujeme zabezpečení provozu včetně vlastního názvu configu.

Sekce v adminu Co nastavíte
Využití API & kredity Statistiky dnes/měsíc, stav klíčů Gemini/OpenAI/D-ID, poslední požadavky, odhad USD. Plánovací odhad nákladů →
Provozní profil Doporučená nastavení pro mládež, muzeum, firmu, veletrh nebo domácí demo – system prompt, bublina, styl omluv, testovací režim. návod k profilům, nevhodný obsah a filtry AI
AI & API Poskytovatel (Gemini / ChatGPT), API klíče, modely, tarif free/placený, OpenAI varianta (Instant / Thinking) – viz návod k nastavení Gemini
Databáze MySQL Připojení k MySQL, test spojení, mysql_enabled (katalog jen v MySQL)
Ikony s dotazy (icons.php) Sady ikon podle oboru (muzeum, divadlo, gastro, firma, technické výstaviště), kontrola a vytvoření MySQL tabulek, aktivní sada (icon_set_slug) – podrobný návod, kontrola tabulek v admin.php, název vs. dotaz pro AI, admin-icons.php
Znalostní báze exponátů Katalog hlavních expozic a exponátů v MySQL, zapnutí vyhledávání v chatu, vytvoření tabulky, náhled a dvě varianty hromadného uložení AI textů, tisk textů pro hlas a bublinu, označení uložených řádků (zelená ikona) – podrobný návod, náhled před uložením, tisk katalogu, označení uložených řádků
Log konverzací Anonymní ukládání dotazů a odpovědí do MySQL pro analýzu (jen admin); vytvoření tabulky, zapnutí modulu, prohlížení záznamů – podrobný návod včetně GDPR, povinnosti provozovatele, informace pro návštěvníky
Exponát Nadpisy, uvítání, system prompt, sada omluv při chybě, testovací režim. Texty zadávejte v češtině – překlad pro návštěvníka řeší přepínač jazyků na kiosku.
Hlas TTS engine, hlas, voice_lang (výchozí/API TTS), barge-in, nepřetržité poslouchání, rychlost odpovědi. Jazyk STT na kiosku řídí spíše vlajky CS/EN/DE/PL/SK.
Bublina & hledání Komiksová bublina nad avatarem, volitelné vyhledávání Gemini, odkazy v bublině – návod k použití, náklady
Nečinnost Timeout bez interakce, volitelná idle prezentace webových stránek; při vypnuté prezentaci návrat na „Klepněte pro start“
Avatary Rive (.riv, animace) a D-ID (klíč, fotka, hlas Microsoft TTS)
Barvy & motiv Jednotný vzhled všech variant exponátu – přehled motivů
Bezpečnost Heslo administrace; volitelně vlastní název konfiguračního souboru (ukládání do skryté provozní složky, ukazatel aktivního souboru) – návod níže, zabezpečení provozu

Výběr AI poskytovatele

  • Gemini – pole api_key, modely model_free / model_paid
  • ChatGPT (OpenAI) – pole openai_api_key, varianty modelu v administraci
  • Oba klíče můžete mít uložené; aktivní je jen ten podle ai_provider
  • Chat i TTS směruje podle zvoleného poskytovatele (u D-ID včetně video vrstvy)

Bezpečnost – heslo a vlastní název configu

Sekce Bezpečnost v admin (poslední blok před tlačítkem Uložit) řeší přístup do administrace a umístění konfiguračního souboru na disku. Kompletní kontext: Zabezpečení provozu.

Admin heslo

Změňte výchozí heslo hned po prvním přihlášení. Slabé heslo umožní komukoli s URL admin měnit API klíče, prompt a nastavení kiosku. V diagnostice check sledujte exhibit_ready – varování při výchozím hesle.

Vlastní název konfiguračního souboru

Pole Název konfiguračního souboru slouží k tomu, aby citlivá data neležela pod obecným názvem config v kořeni webu. Po uložení s vlastním názvem (např. moje-dataxx):

  • konfigurace se přesune do skryté provozní složky pod zvoleným názvem (koncovku .json doplní aplikace, pokud ji nezadáte),
  • aktivní soubor určí malý ukazatel ve stejné složce – jeden řádek s názvem, bez API klíčů (zápis jen do provozní složky, ne do kořene webu),
  • původní config v kořeni se odstraní,
  • všechna další ukládání z adminu i běh kiosku používají novou cestu automaticky.

Kdy nastavit: před otevřením exponátu veřejnosti (muzeum, veletrh, recepce). Ve vývoji můžete nechat výchozí config v kořeni; před nasazením doporučujeme vlastní název. Zapnutí MySQL nepřesouvá config do databáze – název souboru řešíte zvlášť.

Ověření: checkconfig_storage_mode: "data", config_active_pointer, config_file_exists: true, config_readable: true; v produkci ideálně config_writable: false u samotného JSON (zápis do provozní složky pro admin zůstává). Skutečný název souboru uvidíte jen v administraci – nesdílejte ho veřejně. HTTP test: URL k vašemu configu ve skryté složce musí vrátit 404 – viz config ne ke stažení.

Režim nečinnosti (idle)

Sekce Nečinnost v administraci řídí, co exponát udělá po určité době bez dotyku a bez nové otázky. Společný parametr je idle_timeout_seconds (v adminu „Nečinnost před startem“, výchozí 120 s). Podle toho, zda je zapnutá idle prezentace, se chování liší – viz tabulka níže. Funguje na všech variantách exponátu (základní SVG, Rive, Live2D, D-ID).

idle_mode_enabled Po timeoutu bez interakce Typický provoz
Vypnuto (checkbox nezaškrtnutý) Návrat na obrazovku „Klepněte pro start“ – mikrofon se vypne, historie chatu se vymaže, avatar čeká v klidu. Další návštěvník klepne a začne nová relace (uvítání, volba jazyka vlajkami). Recepce, veletrh, kiosk s rychlým střídáním lidí – každý začíná od startu
Zapnuto (idle prezentace) Automatické procházení seznamu webových stránek – u každé stránky AI složí krátký monolog a avatar ho přečte. Klepnutí nebo mluvení režim ukončí a vrátí běžný dialog. Muzeum, areál, dlouhodobý provoz – orientace i když nikdo neklade dotaz

Společné nastavení (oba režimy)

  • Timeoutidle_timeout_seconds: počet sekund od poslední interakce (klepnutí, klávesa, odeslaná otázka). Během mluvení AI nebo čekání na odpověď se odpočet pozastaví.
  • Interakce – resetuje odpočet; při zapnuté idle prezentaci také ukončí právě běžící monolog.

Idle prezentace zapnutá (idle_mode_enabled)

Volitelná funkce pro dlouhodobý provoz: exponát sám prochází stránky ze seznamu v administraci. U každé stránky server načte obsah, AI z něj složí krátký projev (2–4 věty) a avatar ho přečte hlasem.

  • Seznam stránek – řádky ve tvaru Název atrakce|https://váš-web.cz/… (idle_pages); stránky se střídají v pořadí
  • Povolené domény – server stahuje jen hostitele odvozené z vašich URL (idle_allowed_hosts)
  • Extrakce z HTML – titulek, meta popis, otevírací doba, stav otevřeno/zavřeno, zajímavosti z textu stránky
  • AI monolog – krátký projev ve zvoleném stylu; při výpadku AI záložní text ze stránky (hlas prohlížeče)
  • Pauza mezi stránkamiidle_page_seconds (výchozí 12 s)
  • Obrazovka – bez overlay; ve stavovém řádku název aktuální atrakce, hlavní kanál je hlas
  • Ukončení idle – klepnutí, klávesa nebo mluvení (alespoň 3 znaky) okamžitě vrátí běžný dialog
  • Styl mluvení – teen slang, klasický tón, nebo stejný jako omluvy při chybě (idle_phrase_set); volitelně vlastní system prompt (idle_narrator_prompt)
  • Varianta D-ID – idle používá běžné TTS, ne generování D-ID videa (úspora kreditů a času)

Příklady nastavení pro běžné scénáře

Níže jsou vzory, které můžete zkopírovat do administrace → sekce Nečinnost. Časy upravte podle toho, jak rychle se u vás střídají návštěvníci a jak dlouhé monology chcete.

Scénář Idle prezentace Timeout Pauza mezi stránkami Proč tak
Recepce / veletrh Vypnuto 60–120 s Každý návštěvník začíná u „Klepněte pro start“. Fronta u stánku, žádné samovolné mluvení do prázdna.
Muzeum, galerie Zapnuto 180 s (3 min) 15–20 s Když nikdo neptá, průvodce sám představí expozice z vašeho webu. Návštěvník může jen poslouchat nebo kdykoli promluvit.
Průmyslový areál, závod Zapnuto 120 s 12 s Rotace hal, výrob a bezpečnosti – stránky z intranetu nebo veřejného webu firmy.
Info panel venku (náměstí, park) Zapnuto 90 s 10 s Kratší timeout – kolemjdoucí často jen přejde kolem; idle drží panel „živý“ i bez dotazu.
Škola, dílna (demo) Vypnuto 300 s Skupina pracuje s projektorem – po pauze raději klidná obrazovka než monolog přes hodinu.

Ukázka seznamu stránek (pole „Stránky k prezentaci“ – jeden řádek = jedna atrakce):

TXT idle_pages – muzeum

# řádky s # se ignorují
Úvod a mapa areálu|https://www.muzeum-vzor.cz/navstevnici
Stálá expozice – pravěk|https://www.muzeum-vzor.cz/expozice/pravek
Planetárium|https://www.muzeum-vzor.cz/planetarium
https://www.muzeum-vzor.cz/oteviraci-doba

Stačí i samotná URL bez názvu – titulek se doplní z webu. Všechny adresy musí být z domén, které server smí stahovat (po uložení se odvodí automaticky).

TXT idle_pages – průmyslový areál

Vítejte v areálu|https://firma.cz/o-nas
Hala B – montáž|https://firma.cz/prohlidky/hala-b
Bezpečnost práce|https://firma.cz/bozp-navstevnici
Kontakt a objednávky|https://firma.cz/kontakt

Co návštěvník zažije (příběh)

  • Idle vypnuto: Po rozhovoru odejde. Za 2 minuty se na monitoru znovu objeví „Klepněte pro start“. Další člověk klepne, uslyší uvítání a může hned mluvit – předchozí konverzace se neukáže.
  • Idle zapnuto: Po 2 minutách ticha avatar sám řekne např. „Teď vám představím planetárium…“ (text složí AI z vaší stránky). Po krátké pauze pokračuje další atrakcí. Návštěvník přijde, klepne nebo řekne „Kde je šatna?“ – idle skončí a začne normální dialog.
  • Přerušení během monologu: Stačí klepnout nebo krátce promluvit (alespoň pár slov) – exponát přestane přednášet a čeká na otázku jako obvykle.

Idle prezentace vypnutá

Checkbox „Zapnout režim nečinnosti (idle prezentace)“ nechte prázdný. Po uplynutí idle_timeout_seconds bez interakce se exponát chová jako na začátku dne:

  • Znovu se zobrazí overlay „Klepněte pro start“ (v jazyce zvolené vlajky – viz Jazyk exponátu)
  • Mikrofon a aktivní dialog se ukončí, historie chatu se smaže
  • Avatar přejde do klidového stavu (Rive/Live2D: animace idle)
  • Nepotřebujete vyplňovat idle_pages – seznam stránek se v tomto režimu nepoužívá

Doporučení: pro profily Mládež nebo domácí demo často necháváme idle vypnutý; pro Muzeum nebo veletrh s vlastním webem idle zapnutý.

Náklady na TTS při dlouhém idle provozu (jen při zapnuté prezentaci) viz Náklady provozu.

API: Veřejná konfigurace exponátu se načítá bez citlivých klíčů; chat, TTS a idle režim obsluhuje serverová vrstva podle zvoleného providera.