MyÚčto MyÚčto.cz Manuál
Stáhnout PDF Zpět na hlavní stránku

5. Po instalaci a CLI nástroje

Ať jsi instaloval přes Docker nebo nativně, poslední krok je stejný: otevři aplikaci v prohlížeči a projdi úvodním průvodcem. Tato kapitola navíc shrnuje CLI nástroje a plánované úlohy (cron) pro běžnou údržbu.

Pokud převádíš existující instalaci MyInvoice, neprocházej nejdřív setup wizardem. Použij postup Převod dat z MyInvoice do MyÚčto, který zachová správné pořadí importu a MyÚčto migrací.

5.1 První spuštění

Otevři aplikaci v prohlížeči (u Dockeru http://localhost:8080, u nativní instalace URL podle web serveru) — naskočí setup wizard. Provede tě založením prvního dodavatele, administrátorského účtu a základní konfigurace. Detailní popis: První spuštění (setup wizard).

5.2 Co nastavit hned po prvním přihlášení

5.3 Produkční doporučení

5.4 CLI nástroje

php api/bin/migrate.php              # spustí pending migrace
php api/bin/migrate.php --status     # vypíše stav migrací
php api/bin/setup.php                # interaktivní úvodní zřízení
php api/bin/sample.php               # vygeneruje testovací data (po setupu)
php api/bin/sample.php --list        # vypíše firmy a jestli už data mají
php api/bin/sample.php --supplier=7  # testovací data do konkrétní prázdné firmy
php api/bin/reset.php                # smaže všechna user-data (vyžaduje "ANO")
php api/bin/recompute-stats.php      # přepočítá agregované statistiky
Poznámka

reset.php maže uživatelská data, ne instalaci. Globální číselníky (země, sazby DPH, sazby členských států pro OSS, výkazy, příjemci podání) i provozní údaje instance (licence, režim plánovaných úloh, smlouva o zálohování) zůstávají — po jejich smazání by je totiž nikdo nevrátil, protože je seedují migrace a ty jsou evidované jako proběhlé. Kdyby přesto číselník sazeb členských států kdykoli zmizel, vrátí ho php api/bin/migrate.php — má na to sebeopravný krok. Poznáte to podle toho, že import i vystavení odmítnou každý doklad se sazbou vyšší než 0 %.

5.5 Cron skripty

V cmd/ jsou připravené .cmd (Windows Task Scheduler) i .sh (Linux cron) wrappery. Zvol právě jeden způsob plánování:

Oba režimy nekombinuj, jinak by se některé úlohy spouštěly dvakrát.

SkriptDoporučená frekvence
cron-cleanup1× denně 03:00
cron-backup1× denně 02:00
cron-backup-pdf1× denně 02:30
cron-backup-documents1× denně 02:35
cron-bank-scankaždých 30 min
cron-bank-email-noticeskaždých 30 min
cron-scan-purchase-inboxkaždých 10 min
cron-send-reminders1× denně 09:00, Po–Pá
cron-send-approval-reminders1× denně 09:15, Po–Pá
cron-document-request-reminders1× denně 09:30, Po–Pá
cron-epo-statuskaždou minutu; jednotlivé pokusy mají vlastní odstup
cron-generate-recurring-invoices1× denně 06:30
cron-automation-digestkaždou hodinu v ranním okně 06:00–08:00
cron-ai-workerkaždých 10 min; zpracuje frontu po zapnutí AI asistence
cron-ai-rule-miner1× denně 04:00; vytváří návrhová pravidla z korekcí
cron-shoptet-orderskaždých 15 min; jen firmy se zapnutým automatickým stahováním objednávek ze Shoptetu, interval určuje firma (§ 37.5)
cron-payroll-post1× měsíčně 1. dne 04:00; zaúčtuje mzdy za předchozí měsíc
cron-payroll-registration-changes1× denně 05:00; jen firmy se zapnutými mzdami. Hledá změny hlásitelné do registru pojištěnců (ČSSZ) a zakládá návrh povinnosti s termínem — nic neodesílá. Denní běh stačí: lhůta je osm dnů (§ 71.3). Bez ní se změna zjistí jen tehdy, když někdo otevře kartu zaměstnance, a lhůta uteče
cron-vat-clearing1× měsíčně 1. dne 04:30; interní doklad zúčtování DPH za skončené období (§ 84.3.3)
cron-vat-status-apply1× denně 00:30; aplikuje plánované změny plátcovství DPH v den účinnosti
cron-journal-integrity-check1× denně 02:30; čtecí kontrola integrity deníku
cron-cnb-rates1× denně 15:00; stahuje kurzovní lístek ČNB do kurzové historie a dohání mezery za posledních 30 dnů. Bez ní se kurzy plní jen náhodně při prvním dotazu a cizoměnová úhrada ke dni bez kurzu se nemá čím ocenit
cron-license-renewkaždou hodinu v 15. minutě; server se běžně kontroluje 1× denně, kolem platby a při prodlení 1× za hodinu
cron-version-check1× denně 06:00; kontrola dostupné aktualizace
cron-dispatchkaždou minutu, pouze v režimu jednoho dispatcheru

Detaily v cmd/README.md.

Šifrování záloh: volitelné heslo cron.backup.password v cfg.php zašifruje všechny typy ZIP záloh (DB dump, PDF dokladů, sekce Dokumenty, mzdové podklady) algoritmem AES-256. Pro rozbalení použijte 7-Zip, WinRAR nebo unzip -P — vestavěný Průzkumník Windows šifrované AES-256 archivy neumí otevřít. Šifruje se obsah souborů, názvy souborů uvnitř archivu zůstávají čitelné. Pokud je heslo nastavené a PHP šifrování nepodporuje (libzip < 1.2), záloha se záměrně nevytvoří a úloha skončí chybou — nešifrovaná záloha by vznikla jen omylem.

5.5.1 Stažení záloh z aplikace

Hotové zálohy si správce instalace stáhne v nabídce Systém → Stažení záloh, aniž by potřeboval přístup k serveru přes SSH nebo FTP. Stránka ukazuje obsah adresáře se zálohami rozdělený do sekcí podle toho, která úloha soubor vyrobila:

Sekce se pozná podle tvaru názvu souboru, ne podle jména databáze, takže zálohy zůstanou ve správné sekci i po přejmenování databáze. V každé sekci je k dispozici pět nejnovějších záloh; v záhlaví sekce je vidět, kolik jich na disku leží celkem a kolik zabírají místa. Starší zálohy zůstávají na serveru, dokud je nesmaže retence.

U každého souboru je čas pořízení a velikost. Pod seznamem je cesta k adresáři na serveru, počet záloh a nastavená retence — tedy kolik souborů (nebo dnů) zpět se drží, než je úloha smaže.

Jsou-li zálohy šifrované, stránka nabídne Zobrazit heslo. Heslo se nezobrazuje samo od sebe ani přihlášenému správci: nejdřív se musíte znovu ověřit passkeyem, nebo přihlašovacím heslem a kódem z autentikátoru, máte-li ho zapnutý. Každé odhalení se zapisuje do protokolu činnosti — kdo a kdy, samotné heslo nikdy. Pokud zálohy šifrované nejsou, stránka to řekne nahlas: soubor bez hesla otevře celé účetnictví komukoli, kdo se k němu dostane.

Stránka je doplněk Kompletního exportu dat (§ 88.6.2), ne jeho náhrada. Export je jednorázový balíček aktuálního stavu jedné firmy na vyžádání, tady leží historie automatických záloh celé instalace.

💡 Relativní cesty v cfg.php. Cestové klíče (cron.backup.output_dir, storage.*, logging.path, archivy přijatých/importovaných dokladů, DKIM) zadané relativně (např. storage/backup) se ukotvují k rootu aplikace, ne k pracovnímu adresáři procesu. Záloha tak skončí na očekávaném místě i když cron běží pod Task Schedulerem nebo systémovým cronem s jiným aktuálním adresářem. Absolutní cesty (vč. C:\… a UNC \\server) i MYINVOICE_DATA_DIR zůstávají beze změny.

Kontrola, že úlohy běží: otevři v aplikaci Systém → Plánované úlohy. Každý cron skript si zapisuje vlastní heartbeat do tabulky cron_runs (start, konec, exit code, JSON report). Stránka ukazuje pro každou doporučenou úlohu kdy naposled úspěšně proběhla, a pokud poslední běh chybí nebo je starší než max_age_hours (typicky 36 h), je tu varování Stáří / Selhává / Neběželo. Tím se odhalí "cron vůbec není nastavený" i "cron běží, ale failuje" — bez ohledu na OS (crontab vs. Task Scheduler vs. Docker host).

Stav „Nemá práci" (jen režim jednoho dispatcheru). Dispatcher úlohy, které mají levnou kontrolu práce (cron-epo-status, cron-ai-worker), vůbec nespouští, dokud pro ně není co dělat — jejich poslední běh proto legitimně stárne. Že plánování funguje, dokládá heartbeat samotného cron-dispatch, a takové úloze se místo varování ukáže neutrální Nemá práci. Jakmile dispatcher sám zestárne nebo začne selhávat, vrátí se u nich normální varování.