Sdílené soubory

Sdílené soubory jsou centrální úložiště souborů, které se používají napříč celým TASem – loga, manuály, obecné dokumenty, obrázky do tiskových sestav nebo podklady pro AI asistenta. Sekce Administrace → Sdílené soubory je dostupná od verze 5.17 a nahrazuje dřívější ukládání assetů na frontend server.

Sdílené soubory jsou od verze 5.17 uloženy na backendu, ne na FE serveru. Původní přímé odkazy typu /assets/logos/logo.png po upgradu přestanou fungovat – viz sekce Přechod na verzi 5.17.

K čemu sdílené soubory slouží

Do sdílených souborů patří obsah, který je společný pro celé prostředí a není vázaný na konkrétní případ – tedy soubory, které chcete spravovat na jednom místě a používat opakovaně ve více šablonách.

Soubory jsou rozdělené do záložek podle účelu. Každá záložka odpovídá jedné složce na backendu:

Záložka

Složka (root)

Typický obsah

AI obsah

ai-content

Podklady pro AI asistenta – textové soubory .txt a .md (směrnice, limity, schvalovací postupy).

Documents

documents

Obecné dokumenty – obchodní podmínky, GDPR přílohy, šablony .docx pro generování dokumentů.

Logos

logos

Loga používaná v systému, včetně log organizačních jednotek (podsložka org).

Manuals

manuals

Dokumenty zobrazované uživatelům v sekci manuálů.

Images

images

Obrázky pro tiskové sestavy, Case Overview a další výstupy aplikace.

Fyzicky se soubory ukládají do /app/tas/storage/assets/<root>/ uvnitř backendového kontejneru. Loga schémat se při migraci ukládají do rootu visual-identity.

Nahrání a správa souborů

  1. Otevřete Administrace → Sdílené soubory.
  2. Vyberte záložku podle typu obsahu (například Documents pro obchodní podmínky).
  3. Nahrajte soubor, případně ho vložte do podsložky, pokud chcete obsah dále členit.
  4. Zkopírujte si přesný název souboru – používá se jako identifikátor ve výpočtech i v tiscích.
Správu sdílených souborů mohou provádět pouze administrátoři. Přejmenování nebo smazání souboru okamžitě rozbije všechny odkazy ve výpočtech, tiscích a Case Overview – před zásahem vždy ověřte, kde se soubor používá.
Soubory pojmenovávejte bez diakritiky a bez mezer (například obchodni-podminky.pdf). Název vstupuje do cest a URL, diakritika a mezery komplikují sestavení odkazu.

Práce se sdílenými soubory ve výpočtech (backend)

Ve výpočtu se sdílený soubor načte z absolutní cesty pomocí lib.getFileContents() a uloží se do DMS případu pomocí lib.storeAttachment().

Následující ukázka přiloží obchodní podmínky ze záložky Documents jako přílohu k aktuálnímu případu:

// Sdílený soubor: Administrace → Sdílené soubory → Documents
const SHARED_ROOT = '/app/tas/storage/assets/documents';
const SOURCE_FILE = `${SHARED_ROOT}/obchodni-podminky.pdf`;
const TARGET_NAME = 'Obchodní podmínky.pdf';

try {
const content = lib.getFileContents(SOURCE_FILE, 'base64');
const dmsId = lib.storeAttachment(TARGET_NAME, content, false);
proc.info('Shared file attached to case', { caseId: lib.iprocId(), dmsId });
} catch (err) {
proc.error('Failed to attach shared file', { file: SOURCE_FILE, err: err.message });
debug.error('Nepodařilo se přiložit dokument k případu.');
}

Co je v ukázce podstatné:

  • lib.getFileContents(pathToFile, encoding) – vrací obsah souboru z absolutní cesty. Výchozí kódování je base64.
  • lib.storeAttachment(fileName, content, convertToBase64) – uloží soubor do DMS případu a vrací jeho DMS ID. Třetí parametr je false, protože obsah je už v base64 – při true by došlo k dvojímu zakódování a soubor by nešel otevřít.
  • Název přílohy (TARGET_NAME) je nezávislý na názvu zdrojového souboru – uživatel v případu uvidí čitelný název včetně diakritiky.
  • Cesta k rootu je v konstantě, ne roztroušená v kódu – při změně umístění se upravuje na jednom místě.
  • proc.info a proc.error slouží pro logování, debug.error zobrazí chybu uživateli a zablokuje dokončení úkolu. Pokud má proces pokračovat i bez přílohy, debug.error vynechte.
lib.getFileContents() čte soubor pouze ze složek povolených v konfiguraci backendu. Pokud výpočet skončí chybou přístupu k souboru, ověřte s DevOps, že je daná složka v konfiguraci povolena.
Ve výpočtech TAS nepoužívejte async, await ani Promise/.then(). TAS kód transpiluje sám a asynchronní zápis vede k tichému selhání výpočtu. Všechna volání se píší synchronně, jako v ukázce výše.

Práce se sdílenými soubory na frontendu

React tisky a Case Overview – funkce getAsset()

V React tiscích a v Case Overview se odkaz na sdílený soubor sestavuje funkcí getAsset(). Přímý odkaz na cestu /assets/... od verze 5.17 nefunguje.

getAsset(root: 'manuals' | 'logos' | 'org' | 'schema', path: string)

Příklad použití:

// Before – v5.7
<PrintFooter logoURL="/assets/logos/logo_element_horizontal.png" />
// After – v5.17
<PrintFooter logoURL={getAsset('logos', 'logo_element_horizontal.png')} />

// Before – v5.7
<img alt="someImg" src="/assets/logos/logo_element_horizontal.png" />
// After – v5.17
<img alt="someImg" src={getAsset('logos', 'logo_element_horizontal.png')} />

Pokud je název souboru uložený v proměnné (typicky logo dohledané z dynamické tabulky), vloží se do getAsset() jako druhý parametr:

// Before – v5.7
<img id="top-logo" src={getVar('_logo')} alt="Logo" />
// After – v5.17
<img id="top-logo" src={getAsset('logos', getVar('_logo'))} alt="Logo" />
Pokud máte v dynamické tabulce uloženou celou URL souboru (například https://yourplatform.com/assets/logos/image.png), je nutné buď aktualizovat všechny hodnoty proměnných, nebo zajistit, aby do getAsset() vstupoval pouze název souboru a případně podsložka.

Staré HTML tisky – přímá URL služby

Ve starých HTML tiscích není funkce getAsset() dostupná. Odkaz se zadává přímo na službu pro stažení assetu:

// Soubor uložený přímo v rootu logos
<img alt="someImg" src="https://<backendUrl>/api/assets/download?root=logos&path=workflow.png" />

// Soubor zanořený v podsložce
<img alt="someImg" src="https://<backendUrl>/api/assets/download?root=logos&path=folder/workflow.png" />

Typické use case

Use case

Kde soubor uložit

Jak se k němu dostat

Obchodní podmínky přikládané k případu nebo k odchozímu e-mailu

Documents

lib.getFileContents() + lib.storeAttachment() ve výpočtu (ukázka výše)

Šablona .docx pro generování dokumentu z dat případu

Documents

lib.getFileContents() se zvoleným kódováním, vygenerovaný dokument zpět přes lib.storeAttachment()

Logo organizace v hlavičce nebo patičce tiskové sestavy

Logos

getAsset('logos', 'nazev.png') v React tisku

Logo dohledané podle organizační jednotky nebo firmy z dynamické tabulky

Logos (podsložka org)

getAsset('org', getVar('_logo')) – do funkce vstupuje pouze název souboru

Obrázky, ikony a razítka v tiscích a na detailu případu

Images

getAsset() v React komponentě, ve starých HTML tiscích přímá URL /api/assets/download

Uživatelské manuály a návody dostupné z aplikace

Manuals

Zobrazí se uživatelům v sekci manuálů, případně getAsset('manuals', 'manual.pdf')

Podklady pro AI asistenta – interní směrnice, limity, schvalovací postupy

AI obsah

Soubory .txt nebo .md, ze kterých asistent čerpá informace

Na co si dát pozor

  • Sdílené soubory nejsou dokumenty případu. Data vázaná na konkrétní případ patří do DMS případu, ne do sdílených souborů.
  • Změna se projeví okamžitě všude. Nahrazením souboru stejného názvu se změna promítne do všech tisků a šablon, které ho používají – u log a hlaviček to je žádoucí, u dokumentů s právní platností nahrávejte novou verzi pod novým názvem.
  • Citlivé hodnoty do sdílených souborů nepatří. API klíče, hesla, tokeny a certifikáty patří do Administrace → Trezor a načítají se přes vault.get().
  • Kontrolujte velikost a formát. Loga a obrázky v tiscích udržujte v rozumném rozlišení – velké soubory zpomalují generování PDF.

Frantisek Brych Updated by Frantisek Brych

Schéma

Dynamické tabulky

Contact

Team assistant (opens in a new tab)

Powered by HelpDocs (opens in a new tab)