Sdílení & spolupráce
ourCAD má plnohodnotný RBAC (Role-Based Access Control), sdílení per uživatel / tým / složka, magic-link host invites, audit log, voice/video chat, real-time presence a per-branch zámky.
Úrovně přístupu (permission tiers)
| Tier | Co umožňuje |
|---|---|
| none | Hard deny (explicit blokace) |
| view | Read-only 3D viewer + viewport |
| comment | view + komentáře + @mentions |
| edit | comment + úprava feature tree + commit do gitu |
| admin | edit + sdílení + PDM workflow + lock takeover |
Tier se vypočítá jako maximum z více zdrojů (per-user grant, team membership, folder inheritance, workspace, default policy). Per-doc override flag dovolí naopak strop / explicit deny ignorující inheritance.
Pořadí vyhodnocení:
- Vlastník dokumentu → vždy
admin - Přímý grant s override → platí právě tento tier (nebo
none= deny), dědění se přeskočí - Jinak maximum z: přímý grant, granty na nadřazených složkách, týmové granty (dokument i složky), workspace (týmy připojené k workspace dokumentu)
- Nic z toho → veřejný dokument dává
view, jinak žádný přístup
Přehled: cesty k dokumentu a jejich maximální práva
| Cesta | Pro koho | Maximální právo | Poznámka |
|---|---|---|---|
| Vlastnictví | tvůrce dokumentu | admin | vždy, nejde odebrat |
| Jmenovité sdílení (e-mail) | uživatel s ourPortal účtem | dle volby až admin (i none = deny) | vědomý grant konkrétní osobě; volitelně override (strop/deny přebije dědění) |
| Grant na složku | uživatelé/týmy se sdílenou složkou | dle grantu | dědí se na všechny dokumenty ve složce i podsložkách |
| Tým / workspace | členové týmu (vč. pod-týmů) | dle grantu | členství se zrcadlí z ourPortalu |
Veřejný odkaz (/share/…) | kdokoli s URL, i nepřihlášený | vždy jen view | odkaz práva nikdy nezvyšuje — přihlášený s vlastními právy edituje díky nim, ne díky odkazu |
| Hostovská pozvánka (magic link) | konkrétní e-mail, bez ourPortal účtu | view nebo comment | edit pro hosty server odmítá (bezpečnostní hranice); single-use odkaz |
Veřejný dokument (is_public) | každý přihlášený | view | |
| Sandbox (drag & drop na úvodní stránce) | kdokoli | view vlastního náhledu | dočasné (~24 h), lze převzít na účet |
| Samotná licence ourCAD | — | žádné | licence dává přístup do aplikace, ne k cizím dokumentům |
Odkaz nikdy nedává práva úprav
Právo edit se dá získat jen adresně: vlastnictvím, jmenovitým grantem, složkou, týmem nebo workspace. Jakýkoli odkaz (veřejný i pozvánka) končí na view/comment — i pro držitele licence, který není členem týmu. Vynucuje to server (zápisy jsou blokované i pro živou spolupráci), ne jen tlačítka v UI.
ShareModal — sdílení dokumentu
Otevřeš ho z editoru (Toolbar → 🔒 Sdílet) nebo z detailu dokumentu v Dashboardu.
Dialog má 7 sekcí:
1. Effective permission alert
Vrchní informační box: „Vaše oprávnění: Úpravy (zděděno ze složky Projekt A)". Source: Owner / Document (přímý grant) / Folder (zděděno).
2. Veřejné odkazy (anonymous share)
Vytvoří public read-only URL bez nutnosti přihlášení.
- Platnost — 1/3/7/14/30/90/365 dní
- Poznámka — volitelná
- Vytvořit odkaz → vrátí copy-able URL
- Per-link: počet zobrazení, +30 dní (prodloužit), Zrušit
Každý odkaz má dvě podoby (v dialogu vedle sebe):
- Prohlížeč (
/share/…) — lehký 3D náhled, vhodný i pro vložení do jiných stránek. - Otevřít v editoru (
/share/…/editor) — dokument se otevře v plném editoru jen pro čtení: strom prvků, historie modelování, náčrty, měření. Anonymní návštěvník vidí vše, ale nic nezmění (vynuceno na serveru, včetně živé spolupráce). Kdo odkaz otevře přihlášený a má vlastní právo úprav, rovnou edituje — jeden odkaz tak slouží i jako rychlá pozvánka pro tým.
Zrušení odkazu platí okamžitě pro obě podoby.
Vyzkoušet bez registrace (sandbox)
Na úvodní stránce www.ourcad.cloud může kdokoli přetáhnout soubor .ourcad a rovnou si ho prohlédnout v plném editoru — bez přihlášení. Náhled je dočasný (zmizí přibližně za 24 hodin) a jen pro čtení.
Po přihlášení nabídne editor tlačítko „Uložit na můj účet" — dokument se převezme jako trvalý a přestane být dočasný. Neuložené náhledy se automaticky mažou.
3. Sdílení s konkrétními uživateli
Per-user grant.
- Email — uživatel s ourPortal účtem (nebo magic invite — viz dál)
- Permission dropdown: view / comment / edit / admin / none (deny)
- Vlastní role — dropdown z AdminCustomRoles (předvyplní permission tier)
- Zakázat zděděné — checkbox: per-doc override capuje / blokuje folder/team inheritance
- Tým — toggle na Team picker (viz dál)
Grant list s badges (active / pending / role / override), delete tlačítkem.
4. Pozvánky pro hosty (Magic-link guest invites)
Pro externí lidi bez ourPortal účtu (klient, dodavatel).
- Email — guest
- Permission — view nebo comment
- Platnost — 1/7/30/90/365 dní
- Odeslat email — pošle pozvánku přes SMTP (jinak vrátí URL k ručnímu rozeslání)
Magic URL je single-use: po prvním otevření se redeemne a guest se autentizuje jen tímto odkazem (žádné heslo). Status badges: Pending / Active / Redeemed / Expired / Revoked.
5. Sdílení podle složky
Read-only sekce ukazující inherited grants ze složek. Edituje se v FolderShareModal (Dashboard → pravý klik na složku → Sdílet).
6. Týmy
Zděděné granty z týmů. Týmy se vytvářejí a spravují v ourPortalu (ourPortal → Týmy) — do ourCADu se pouze zrcadlí přes webhooky (team.created/team.updated/team.member.*) a členství se propisuje do oprávnění dokumentů. ourCAD vlastní stránku pro správu týmů nemá; na stránce Default access policy je na tvorbu týmů odkaz do ourPortalu.
7. Audit log (collapsible)
🔐 Audit log sekce ukazuje per-doc history povolení:
| When | Action | Target | Actor |
|---|---|---|---|
| 2026-05-15 14:23 | Přidáno edit | jan@firma.cz | krasa@... |
| 2026-05-16 09:11 | Změněno view→edit | klient@... | krasa@... |
Admin verze (cross-doc) je v /admin/permission-audit.
Komentáře

Pravý panel Komentáře (CommentsPanel):
- Threaded — root komentář + nested replies
- Anchor — volitelně přivázání k feature (sketch dim, část tělesa)
- @mention autocomplete — typuj
@<query>→ dropdown s uživateli z roster + dřívějších authorů, max 8 návrhů - Pokud nemáš
commenttier, místo textarea vidíš banner „Nemáte právo komentovat"
Trvalé. Komentáře jsou trvalé — neexpirují, žádný automatický úklid je nemaže. Vlákno lze vyřešit (tlačítko Vyřešit → zelený okraj), ale ne smazat; vyřešení je jen měkký stav. (Při smazání účtu se anonymizuje jen e-mail autora, text zůstává.)
Živý refresh. Otevřený panel se sám doptává na nové komentáře (á 15 s + hned po návratu do okna), takže vidíš i komentář, který mezitím přidal někdo jiný, bez ručního obnovení.
Odznak nepřečtených. Když panel Komentáře NENÍ otevřený a někdo přidá komentář, na záložce Komentáře naskočí červený odznak s počtem nepřečtených. Značka „viděl jsem" je per-uživatel a per-dokument (drží se napříč zařízeními); po otevření panelu se vynuluje. Odznak počítá jen komentáře od ostatních (ne tvoje vlastní).
Mention triggeruje notifikaci zmíněnému uživateli. Nově dostane in-app notifikaci (🔔) i vlastník dokumentu a předchozí účastníci vlákna u každého nového komentáře — i bez @zmínky.
Notifikace
🔔 Bell ikona s badge unread počtu — v toolbaru editoru i v horní liště dashboardu (takže o nových událostech víš i mimo editor). Skryje se, když není nic nepřečteného.
Dropdown:
- Označit vše jako přečtené — bulk action
- Per-row: actor email · stručný text · timestamp
- Klik na řádek → mark read + skok na dokument
- Polling 30 s pro nové
Notifikaci vyvolá:
- @Mention v komentáři — zmíněnému uživateli (+ volitelně email)
- Nový komentář na tvém dokumentu — vlastníkovi + předchozím účastníkům vlákna (in-app, bez emailu — od emailu je digest)
- Lock takeover — předchozímu držiteli zámku
Settings → Upozornění sekce dovolí konfigurovat:
- @Mention v editoru (in-app banner)
- Email při mention
- Lock takeover notifikace
- Email digest: vypnuto / denně / týdně
Voice / video chat
🎤 Voice tlačítko v toolbaru otevře VoiceChatPanel (right panel).
- Připojit se k hovoru — checkbox aktivuje mikrofon
- Sdílet kameru — checkbox (volitelný video stream)
- Účastníci: zelená tečka (v hovoru) / šedá (offline) + email + status (Audio / Audio+Video / Offline)
- Lokální preview videa + remote video/audio elementy
Architektura: WebRTC mesh (peer-to-peer), signaling přes Yjs Y.Map voice_signals (offer/answer/ICE), STUN servery Google public. Žádný centrální audio server.
Presence a real-time spolupráce
PresenceBar v horní liště ukazuje avatar dots všech uživatelů aktuálně v dokumentu.
- Hover → tooltip „user@email — Aktivní feature"
- Klik →
ourcad:follow-peerevent — kamera se sesynchronizuje s peer
Awareness streamy (Yjs):
- Selection — co máš zaklikané (highlight outline u peer)
- Camera — pozice + target (throttled 1 Hz)
- 3D cursor — pohyb myši v 3D (30 Hz)
- Sketch UV cursor — pohyb v sketch módu
Settings → Awareness sekce toggluje zobrazení peer cameras / selections / cursors.
DocumentDialog — PDM lifecycle
Pravý klik na branch pill ve FeatureTree → Spravovat dokument… otevře dialog s 5 záložkami:
| Záložka | Obsah |
|---|---|
| 📊 Verze | GitGraph s commits + branches + zámky + AI revize button |
| 📋 Workflow | State machine (draft / review / approved / released / obsolete) + history |
| 🔒 Zámky | Document checkout + lock events timeline |
| 📝 ECN | Engineering Change Notice — list + create form |
| 🔗 Kde použito | Where-used assembly references |
Workflow state machine
Buttons jsou disabled (opacity 0.45) pokud nemáš dost vysoký tier:
| Přechod | Min. tier |
|---|---|
| draft → review | edit |
| review → approved | admin |
| review → draft | edit |
| approved → released | admin |
| approved → draft | admin |
| released → obsolete | admin |
| released → review/draft | admin |
| obsolete → draft/review | admin |
Tooltip ukazuje „Vyžaduje Správce, máte Editátor".
GitGraph & per-branch zámky
V záložce Verze:
- Commits graph — SVG lane layout s barvami branchů, klik = expand metadata
- Branch pills — green (HEAD), blue (branch), orange (tag), brown (locked)
- 🔒 lock toggle (admin) — zamkne branch pro zápis (prompt na message s důvodem)
- Pravý klik na commit → kontext: Branch from here / Rollback / Create branch / Copy SHA
Per-branch zámek brání concurrent zápisu (užitečné u review/released branchů, kde nechceš accident push).
ECN — Engineering Change Notice
Strukturovaný záznam změny: identifikace, důvod, dotčené dokumenty, schvalovatel. Užitečné pro QC/ISO 9001 trail.
Kde použito (where-used)
Seznam Assembly dokumentů, které tento díl insertují. Klik → otevře assembly v novém tabu.
Admin routes
| Route | Účel |
|---|---|
/admin/users | Správa uživatelů |
/admin/roles | Vlastní role |
/admin/permission-audit | Cross-document audit log |
/admin/shares | Veřejné odkazy (audit) |
/admin/default-policy | Default tier pro nové uživatele org-wide |
/admin/templates-materials | Katalog materiálů + barev |
/admin/templates-defaults | Default sketch/feature templates |
/admin/title-blocks | PDF razítka |
/admin/custom-roles | Definice rolí |
Vlastní role
V /admin/roles definuješ pojmenované role (Vedoucí projektu, Externí konzultant, Výrobní technolog) s base permission tier. V ShareModal pak místo manuálního výběru tier vybereš roli — předvyplní permission + štítkuje grant pro lepší přehled v audit logu.
Workspaces (multi-tenant)
WorkspaceSwitcher v navbaru přepíná mezi „organizacemi" (workspace) — užitečné pro konzultanty pracující pro víc firem, nebo pro oddělená oddělení v jedné firmě. Vlastní stránka /workspaces pro správu, role (owner/admin/member), per-workspace scoped dokumenty + dedikovaný X-Workspace-ID header v API. Nový workspace zakládá platformní admin.
Workspace + týmy = přístup k celé zakázce
Na stránce /workspaces může owner/admin workspace připojit ourPortal tým (sekce Týmy po rozbalení řádku) a zvolit buď vlastní roli (tier se přebírá z role), nebo přímo oprávnění:
- Členové připojeného týmu mají zvolené oprávnění na všechny dokumenty workspace — živě: nový člen týmu získá přístup okamžitě (i ke starším dokumentům), odebraný člen okamžitě o všechno přijde. Žádné kopírování grantů.
- Stejný tým může být v různých workspacích v různých rolích („Projekce" je v Zakázce A Konstruktér (edit), v Zakázce B jen Reviewer (comment)).
- Změna base permission vlastní role se propíše do všech workspaců, kde je role použitá (na rozdíl od jednorázových grantů v ShareModal, které zůstávají snapshot).
- Členové týmu workspace automaticky vidí v dashboardu (odvozené členství) — ruční přidávání členů e-mailem zůstává pro výjimky a externisty; ručnímu členovi lze volitelně přidělit i dokumentový tier.
- Per-dokument override v ShareModal má stále přednost — jde jím konkrétnímu uživateli přístup stropnout či zakázat i uvnitř workspace.
Dokumenty a složky založené s aktivním workspace se do něj automaticky řadí; podsložky dědí workspace z rodiče a dokumenty ze složky. V ShareModal se u dokumentu ve workspace ukazuje read-only sekce Děděno z workspace s přehledem týmů a jejich oprávnění.
Doporučený postup pro tým na společné zakázce: admin založí workspace → připojí tým (edit nebo role) → hotovo. Všechno, co kdokoli v workspace vytvoří, je okamžitě dostupné celému týmu.
Sdílení složky
V Dashboardu pravý klik na složku → Sdílet otevře FolderShareModal (zjednodušená verze ShareModal):
- Grant form: Email + Perm
- Grant list scrollable
Grants se kaskádují na všechny dokumenty ve složce (a podsložkách) přes inheritance.
Práva pro hosty — pozvánka v praxi
- Otevři dokument → ShareModal → sekce Pozvánky pro hosty.
- Email klienta + permission
view+ platnost 30 dní + checkbox Odeslat email ✓. - Pozvat hosta → klient dostane email s magic URL.
- Klient klikne → otevře se viewer v read-only (nemusí mít účet).
- Pokud chceš odebrat přístup před vypršením: ShareModal → Pozvánky pro hosty → Revoke.
Co dál
- Git workflow — branches, commits, merges
- Nastavení — per-user awareness + notifikace
- AI Agent → Revize dokumentu — PR-style audit před schvalovacím workflow