Табель Волны 3, отдельный от кассовой смены. Единственный пул-дорожка Сотрудник, гейт-решение «Уже на личной смене?» и две зеркальные ветки — Punch In / Punch Out, сходящиеся в событие «Табель обновлён». Граф 1:1 с Mermaid-каноном hr/time-tracking.md.
%%{init:{
"theme":"base",
"themeVariables":{
"fontFamily":"Hanken Grotesk, ui-sans-serif, sans-serif",
"fontSize":"14px",
"lineColor":"#5a4d3d",
"primaryColor":"#f6e6cd",
"primaryBorderColor":"#d5842a",
"primaryTextColor":"#241b12",
"clusterBkg":"#fbf7ef",
"clusterBorder":"#d0c1a6",
"edgeLabelBackground":"#fbf7ef",
"tertiaryColor":"#f6efe2"
},
"flowchart":{"curve":"basis","nodeSpacing":42,"rankSpacing":52,"htmlLabels":true}
}}%%
flowchart TD
subgraph Emp["Сотрудник"]
S1(["Сканировать MSR-карту"]) --> G1{"Уже на личной смене?"}
G1 -->|нет| PIN["Открыть личную смену (Punch In)"]
G1 -->|да| POUT["Закрыть личную смену (Punch Out)"]
PIN --> D1(["Табель обновлён"])
POUT --> D1
end
classDef actor fill:#fbf7ef,stroke:#94866f,color:#241b12,stroke-dasharray:5 3;
classDef ext fill:#e5ecf6,stroke:#5b7bb0,color:#243a5f;
classDef gate fill:#f8e8cf,stroke:#c9791f,color:#7a4a10;
classDef event fill:#dcefe1,stroke:#3c8a5b,color:#1c4a30;
classDef task fill:#f6e6cd,stroke:#d5842a,color:#241b12;
classDef danger fill:#f6dcd5,stroke:#bc3f2b,color:#7a231a;
class PIN,POUT task;
class G1 gate;
class S1,D1 event;
style Emp fill:#fbf7ef,stroke:#e2d6c1;
Audit Trail или HACCP-порчи. Гейт G1 лишь разводит один жест на PIN / POUT; обе ветки сходятся в D1 «Табель обновлён».