Путь роли по экранам (user-flow). Узлы — экраны S-NN, события и решения; тип кодируется цветом (словарь §5). Внешние системы — пунктиром. Граф 1:1 с Mermaid-каноном finance-catalog-price.md.
user-flows/finance-catalog-price.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"},"flowchart":{"curve":"basis","nodeSpacing":40,"rankSpacing":52,"htmlLabels":true,"useMaxWidth":false,"padding":16}}}%%
flowchart TD
Start(["Нужно завести / изменить товар
или сменить цену"]) --> S13["S-13 · Меню / номенклатура / ТТК"]
S13 --> WHO{"Открывает HQ-финансист
или франчайзи?"}
WHO -->|"HQ-финансист"| EDITHQ["Создать / изменить позицию каталога (сеть) —
артикул + код НКТ / ШК, тип номенклатуры;
доступность решает приказ на точки (D-89, D-96)"]
EDITHQ --> S13
WHO -->|"франчайзи"| SRC{"Master Data (рецепт / цена)
или своя цена / локальный товар?"}
SRC -->|"Master Data"| RO["Только чтение —
прямая правка запрещена"]
RO --> S13
SRC -->|"своя цена / локальный товар"| REQ["Заявка франчайзи
(цена-приказ / локальный товар)
статус: на аппруве (D-13)"]
REQ --> MOD
S13 -->|"«Цена»: открыть прайс"| S14["S-14 · Прайс"]
S14 --> PRICEWHO{"Кто оформляет приказ:
HQ-финансист или франчайзи?"}
PRICEWHO -->|"франчайзи"| REQ
PRICEWHO -->|"HQ-финансист"| MARGIN{"Новая цена ниже
себестоимости?"}
MOD["S-14 · вкладка «Модерация заявок · N»
(очередь аппрува франчайзи — D-22)"] --> MODER{"HQ: одобрить
или отклонить?"}
MODER -->|"отклонить + причина"| REJ["Заявка отклонена
(статус виден франчайзи)"]
REJ --> S13
MODER -->|"одобрить"| APPR{"Тип заявки?"}
APPR -->|"локальный товар"| LOCON(["Локальный товар заведён
(вне Master Data)"])
LOCON --> S13
APPR -->|"цена-приказ"| MARGIN
MARGIN -->|нет| SAVE["Сохранить приказ"]
MARGIN -->|да| ALERT["Margin Alert:
предупреждение о марже"]
ALERT --> CONFIRM["Шаг: «Подтвердить»
(авториз-шлюз)"]
CONFIRM --> SAVE
SAVE --> HIST(["Приказ несёт цену и состав,
адресован точкам, не городу
(история, effective-dated — D-14, D-96)"])
HIST --> MIDNIGHT(["00:00 местного времени:
приказ применяется"])
MIDNIGHT --> D1(["Цена / меню обновлены на отмеченных точках
(Price Lock — открытые чеки не меняются)"])
D1 --> S13
classDef screen fill:#e5ecf6,stroke:#5b7bb0,color:#243a5f;
classDef gate fill:#f8e8cf,stroke:#c9791f,color:#7a4a10;
classDef event fill:#dcefe1,stroke:#3c8a5b,color:#1c4a30;
classDef warn fill:#faedd0,stroke:#d99a2b,color:#7a4d06;
classDef auth fill:#ede7f6,stroke:#7e57c2,color:#4527a0;
classDef stop fill:#f6dcd5,stroke:#bc3f2b,color:#7a241c;
class S13,S14,EDITHQ,REQ,MOD,SAVE screen;
class WHO,SRC,PRICEWHO,MARGIN,MODER,APPR gate;
class Start,LOCON,HIST,MIDNIGHT,D1 event;
class ALERT warn;
class CONFIRM auth;
class RO,REJ stop;