# Керівництво користувача   та огляд інтеграції

# Юзер гайд для нових користувачів

## 1. Що таке SmartReports

SmartReports показує дані із Syrve по кожній торговій точці:  
виторг, кількість замовлень, доставку, кухню та присутність персоналу.  
Бот працює через офіційні API Syrve Cloud / Server і не бачить нічого, що не потрапило на сервер касової системи.

---

## 2. Перший доступ до бота

1. Власник або адміністратор видає інвайт-посилання на чат-бота.
2. Після входу відображається **головне меню** з кнопками:
    
    
    - **Сьогодні / Вчора / 7 днів** – вибір періоду, для якого будуть будуватися звіти.
    - **Основний звіт** – короткий зріз по точці: виторг, кухня, персонал.
    - **Інші звіти** – додаткові аналітичні звіти.
    - **Щоденний звіт** – класичний «Z-звіт» за день у зрозумілому вигляді.
    - **Доставка** – аналітика та затримки по доставках.
    - **Кухня** – поточний стан кухні та запізнення замовлень.
    - **Інструкції** – довідка всередині бота.
    - **Налаштування** – локальні налаштування саме для цього чату.
    - **Адмін-панель** – розширені функції для користувачів із правами адміністратора.
    - **Оновити** – перечитування даних та оновлення меню.

---

## 3. Налаштування чату

Екран **«Налаштування»** відповідає лише за поточний чат (групу / особистий діалог).

### 3.1. Підписка на розсилку

- Пункт **«Підписати чат на розсилку»** вмикає регулярні автоматичні повідомлення:
    
    
    - автозвіт за розкладом;
    - алерти по кухні;
    - алерти по доставці;
    - алерти по перевищенню ліміту виручки (якщо заданий).

Якщо чат не підписаний, бот показує звіти лише «за запитом» (по натисканню кнопок), але сам нічого не шле.

### 3.2. Пороги сповіщень

- Пункт **«Пороги сповіщень»** задає два числа:
    
    
    - **кухня, хв** – після скількох хвилин на кухні замовлення вважається «повільним»;
    - **доставка, хв** – після якого запізнення доставка потрапляє в список «черепах».

Ці пороги використовуються:

- у секції **«Кухня»** – для розрахунку повільних замовлень;
- у секції **«Доставка»** та в алертах по доставці – для позначення запізнень.

### 3.3. Групи ролей (прив’язка)

- Пункт **«Групи ролей (прив’язка)»** пов’язує ролі із Syrve (офіціант, кухар, касир тощо) з внутрішніми групами:
    
    
    - **ММ**, **ПКС**, **ПВР**, **КР** тощо.
- Прив’язка потрібна, щоб у звітах правильно підраховувався персонал за групами:  
    «Персонал: 5 (ПВР: 3; ПКС: 1; КР: 1)».

Якщо поточна абревіатура не підходить, у блоці **«Абревіатури груп»** дозволено змінити або додати власну.

### 3.4. Абревіатури груп

- Пункт **«Абревіатури груп»** зберігає короткі позначення, які використовуються у звітах для груп ролей.
- Зміна абревіатури впливає лише на відображення тексту у звітах, логіка розрахунків не змінюється.

### 3.5. Розклад і частота

У цьому блоці налаштовуються одразу три речі:

1. **Час(и) автозвіту** – список годин на добу у форматі `HH:MM`, коли чат отримує автоматичний **Основний звіт**.
2. **Тихі години** – проміжок часу, коли бот не надсилає:
    
    
    - автозвіти;
    - алерти по кухні;
    - алерти по доставці.
3. **Мінімальний інтервал між алертами**:
    
    
    - окремо для **доставки**;
    - окремо для **кухні**.

Якщо інтервал = 0, алерти приходять щоразу, коли є причина, але все одно з урахуванням тихих годин.

---

## 4. Адмін-панель

Адмін-панель доступна лише користувачам, які внесені в список адміністраторів.

Основні дії:

### 4.1. Прив’язка точок до чату

У блоці **користувачів** вибирається потрібний Telegram-чат (або користувач) і до нього прив’язуються торгові точки із Syrve.  
Саме ця прив’язка визначає, по яких ресторанах бот буде показувати звіти та надсилати алерти.

### 4.2. Ліміти виручки (інкасація)

У відповідному розділі задається **ліміт виручки** для кожної точки.  
Далі працює фоновий модуль:

- раз на декілька хвилин читається поточна виручка за сьогодні по кожній точці;
- рахується, скільки накопичилось з моменту останньої інкасації;
- якщо сума перевищила ліміт, в підписаний чат надсилається повідомлення з деталями та кнопкою «Інкасація зроблена».

Натискання кнопки оновлює базовий рівень («з цієї суми починається новий відлік»).

---

## 5. Основний звіт

**Основний звіт** – це зведення по кожній прив’язаній точці на поточний момент:

- **Назва точки** та дата-час формування.
- **💰 Виторг** – сума закритих чеків **залу + доставки** за сьогодні.
- **🍳 Кухня** – сума позицій, які ще в роботі на кухні, та кількість таких замовлень.
- **👥 Персонал** – скільки співробітників зараз зі зміною «сьогодні», плюс розбивка по групах (ММ, ПКС, ПВР, КР…).

Звіт використовується як «дашборд на долоні»: чи є виручка, чи є завантаження кухні та скільки людей на зміні.

---

## 6. Щоденний звіт

**Щоденний звіт** показує класичні показники за обраний день:

- дата звіту;
- **виторг**;
- **кількість замовлень**;
- **кількість доставок**;
- **середній чек**.

Важливий момент:

- **Кількість замовлень** = **замовлення з залу + доставки разом**.
- **Кількість доставок** – тільки доставки.

Якщо, наприклад, показано:

> Кількість замовлень: 11  
> Кількість доставок: 0

це означає 11 замовлень із залу та 0 доставок.  
Якщо доставок 5, а замовлень загалом 20 – то замовлень із залу було 15 (20–5).

---

## 7. Кухня: як рахується запізнення

Екран **«Кухня»** та алерти по кухні працюють так:

1. Бот бере всі **відкриті** замовлення за сьогодні (зал + доставка), де є хоч одна позиція, яка ще не видана й не видалена.
2. Для кожного замовлення рахується **час «на кухні»**:
    
    
    - використовується момент, коли замовлення/позиція пішла в роботу (друк чека на кухню, старт готування, іноді час створення);
    - для попередньо замовлених (pre-order) враховується фактичний старт, а не момент створення.
3. Час у хвилинах порівнюється з **кухонним порогом** з налаштувань.
4. Якщо замовлення вже повинно бути готовим і перевищує поріг, воно вважається **«повільним»** та потрапляє до списку «черепах».

У секції «Кухня» по кожній точці видно:

- скільки замовлень зараз у роботі на кухні;
- на скільки хвилин перевищено поріг;
- номери конкретних повільних замовлень у вигляді кнопок `#0001`, `#0002` тощо.

---

## 8. Доставка: як рахується запізнення

За доставку відповідає окремий сервіс, який дивиться тільки **доставочні замовлення**.

Логіка:

1. Для кур’єрських доставок фактичний час в дорозі рахується від моменту,  
    коли замовлення передано кур’єру, до поточного часу.
2. Для самовивозу використовується час, на який гість повинен забрати замовлення.  
    Якщо поточний час ще не дійшов до дедлайну, запізнення не вважається.
3. Після перевищення **порогу для доставок** замовлення вважається «черепахою» і:
    
    
    - потрапляє у звіт «Доставка»;
    - може потрапити в алерт «повільні доставки» з переліком замовлень.

У звіті «Доставка» для вибраного періоду зазвичай показуються:

- середній час кур’єрських доставок;
- кількість доставок;
- запізнілі доставки та їх перевищення порогу;
- по кнопках **«Сьогодні / Вчора / 7 днів / Зводка / По кожній»** – загальна зведена таблиця або розріз по кожній точці.

Точний склад полів може трохи відрізнятися між версіями; принцип один:  
швидко показати, як працює служба доставки та де є проблеми.

---

## 9. Інші звіти

### 9.1. «Топ-страви за період»

Виводить список найпопулярніших позицій меню за обраний період:

- по кожній точці – перелік страв із кількістю чеків, де ця позиція зустрічалась;
- сортування – від найчастіше замовлюваних до менш популярних.

Це допомагає бачити хіти продажів та «баласт» у меню.

### 9.2. «Виторг / чеки / …»

Цей звіт агрегує базові фінансові показники за період:

- загальний виторг;
- кількість чеків;
- середній чек та/або інші похідні показники.

Формули можуть трохи відрізнятися в залежності від профілю бота; у цьому гайді описано лише загальний зміст, без конкретних формул  
(точна логіка береться безпосередньо з коду інтеграції з Syrve, який тут не наводиться).

### 9.3. «Tax Guard»

Tax Guard – окремий аналітичний звіт для контролю номенклатури:

- працює по окремій вибірці позицій (типи DISH / GOODS / SERVICE / MODIFIER тощо);
- допомагає виявляти позиції, які потребують уваги з точки зору податкового або внутрішнього обліку (номери, специфічні товари, послуги).

Конкретні критерії відбору залежать від налаштувань профілю; у цьому описі наведено тільки загальний принцип без технічних деталей  
(частину логіки реалізовано у внутрішніх модулях, які не показуються в цьому файлі).

---

## 10. Якщо в ресторані є замовлення, а в боті – нулі

SmartReports отримує дані **не з каси напряму**, а із сервера / хмари Syrve через **Transport / API-плагін**:

1. На касі працює плагін **API Transport**.
2. Він відправляє інформацію про чеки та замовлення на сервер / у хмару.
3. Бот забирає дані вже із сервера через API.

Якщо на касі замовлення є, а в боті:

- нульовий виторг;
- немає відкритих замовлень;
- не оновлюються показники доставки / кухні —

найімовірніша причина:

- на касі не працює або неправильно налаштований плагін **API Transport**;
- каса тимчасово не має зв’язку із сервером.

У такому випадку ситуацію вирішує технічний спеціаліст / інтегратор всередині Syrve, а не бот.  
Після відновлення роботи плагіна дані починають надходити, і звіти в SmartReports оновлюються автоматично.

## 11. Додаткові пояснення на основі перших запитань

### 11.1. Чим відрізняються «Сьогодні», «Основний звіт» і «Щоденний звіт»

У головному меню є три перші кнопки:

- **Сьогодні**
- **Вчора**
- **7 днів**

Це **швидкі кнопки Основного звіту**. Кожна з них одразу формує Основний звіт за відповідний період без додаткових питань.

Нижче є окремі розділи:

- **📊 Основний звіт** – той самий тип зрізу (виторг, кухня, персонал), але з можливістю ще раз вибрати період всередині самого звіту (залежно від поточної реалізації інтерфейсу).
- **📅 Щоденний звіт** – добовий звіт формату «Z-звіт для людей»: виторг за день, кількість замовлень, кількість доставок, середній чек.  
    Цей звіт працює починаючи з дати, коли у закладу запустився API-транспорт. Якщо API почало віддавати дані тільки сьогодні, за «вчора» та «7 днів» у Щоденному звіті може бути порожньо, тоді історію зручно дивитися через **«Інші звіти»** (OLAP).

Коротко:

- **Сьогодні / Вчора / 7 днів** у головному меню – це гарячі клавіші Основного звіту.
- **Основний звіт** – той самий тип показників, але з власним невеликим меню.
- **Щоденний звіт** – окремий добовий звіт із фокусом на класичні показники за один день.

---

### 11.2. Як зараз рахується «Середній чек»

У блоці **«💰 Виторг — сьогодні»** середній чек наразі рахується так:

> **Середній чек = Виторг / Кількість замовлень (чеків)**

Тобто це **середній чек на замовлення**, а не на гостя.

Приклад:

- Виторг: `18 037.50 ₴`
- Замовлень: `20`
- Середній чек = `18 037.50 / 20 = 901.875 ≈ 901.88 ₴`

Саме тому значення **901.88 ₴** відрізняється від розрахунку «виторг / кількість гостей».  
Якщо рахувати **на гостя**, буде:

- `18 037.50 / 33 ≈ 546.59 ₴`

Це вже інша метрика – **«середній чек на гостя»**.

У різних ресторанах використовуються обидва підходи:

- комусь важливіше «середній чек на замовлення»;
- комусь – «на гостя».

У планах розвитку – додати можливість:

- або перемикати спосіб розрахунку (за чеками / за гостями),
- або показувати в звіті обидві цифри окремими рядками.

---

### 11.3. Побажання до нових звітів від перших користувачів

Під час перших впроваджень уже з’явилися типові запити, які варто врахувати в дорожній карті:

1. **Звіт по категоріях за день**
    
    
    - розбиття денного виторгу за категоріями (наприклад: «продуктова корзина», «барна корзина», інші групи);
    - з можливістю одразу бачити **ТО за день** у розрізі цих категорій;
    - бажано також показувати **собівартість (с/с) дня** в розрізі основних кошиків.
2. **Середній чек із урахуванням гостей**
    
    
    - варіант середнього чеку «на гостя» (виторг / кількість гостей);
    - опціонально – вибір формули або одночасний показ:
        
        
        - «середній чек на замовлення»;
        - «середній чек на гостя».
3. **Прогноз виконання плану по ТО**
    
    
    - відображення, на скільки відсотків уже виконано план по товарообігу за день;
    - приблизний прогноз, яким буде **очікуваний ТО до кінця дня**, виходячи з поточного темпу продажів (виторг + час, що минув).

Для реалізації таких звітів потрібен або:

- готовий OLAP-звіт, який уже використовує заклад у бек-офісі;
- або погоджений шаблон (разом із бухгалтерією), за яким можна побудувати новий звіт у розділі **«Інші звіти»**.

# Як влаштований бот: від звітів до налаштувань

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Як бот отримує дані</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Бот не зберігає власну копію даних і не рахує нічого самостійно. Щоразу, коли ви відкриваєте будь-який розділ, бот звертається до Syrve напряму і отримує актуальні цифри в реальному часі. Це означає, що якщо касир щойно закрив замовлення або кладовщик провів списання — ці дані вже будуть у звіті при наступному відкритті.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Більшість звітів використовують аналітичну систему Syrve, яка зберігає деталізовані дані по кожній позиції кожного замовлення. Складські звіти та оперативні модулі (Кухня, Доставка) працюють інакше — вони звертаються безпосередньо до відповідних баз і документів Syrve.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Головне меню і навігація</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Головне меню — це стартова точка роботи з ботом. У шапці видно ім'я користувача, кількість доступних точок та статус підписки чату на автозвіти.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Кнопки периодів:** «Сьогодні», «Вчора», «7 днів» і «Кастомний период» відкривають однаковий набір звітів, але одразу з потрібним проміжком часу. Не потрібно окремо вибирати дату в кожному звіті — достатньо натиснути потрібний период один раз.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Прямі кнопки** нижче ведуть у розділи: Основний звіт, Щоденний звіт, Доставка, Кухня, Персонал, Інші звіти, Інструкції, Налаштування та, за наявності відповідних прав, в Адмін-панель.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Основні звіти</span>

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Основний звіт</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** виручку по кожній точці за обраний операційний день або діапазон дат. Це головний оперативний екран — відкривати тоді, коли треба швидко зрозуміти, як іде день по всіх точках або знайти просадку по конкретній.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується виручка:** бот бере з аналітики Syrve суму по всіх позиціях замовлень із вже застосованою знижкою. Тобто якщо страва коштує 200 грн, а гість отримав знижку 10% — у виручку піде 180 грн. Повністю видалені та скасовані замовлення виключаються автоматично.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Блок персоналу:** показує, хто зараз зафіксований на зміні у Syrve, згрупований за налаштованими абревіатурами ролей. Якщо персонал не відображається — перевірте налаштування абревіатур, прив'язку ролей і факт фіксації співробітника на зміні у Syrve.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Щоденний звіт</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** підсумок по кожній точці — виручка, кількість гостей, кількість замовлень, середній чек, кількість доставок і залових замовлень. Підходить для фінального підсумку зміни або порівняння кількох днів між собою.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується виручка:** так само як в Основному звіті — сума позицій зі знижкою з аналітики Syrve.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Звідки доставки та залові замовлення:** ці дані надходять через окремий інтерфейс Syrve Cloud — не з аналітики, а напряму з системи замовлень.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується середній чек:** виручка ÷ кількість замовлень.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Оперативний контроль</span>

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Кухня</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** замовлення, які прямо зараз у роботі на кухні. По кожній точці — скільки замовлень на кухні, по яких є перевищення порогу, які номери потрібно перевірити першими.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Позначення статусів:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">🍽 — замовлення в межах норми</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">🐢 — час перевищено (показується, на скільки хвилин)</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується запізнення:** бот дивиться, скільки хвилин замовлення реально знаходиться в кухонній роботі, і порівнює з порогом. Якщо поріг 15 хв, а замовлення вже в роботі 22 хв — бот покаже запізнення 7 хв. Для темпових або відкладених замовлень бот орієнтується на фактичний старт кухні.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Налаштування порогу:** «Налаштування → Пороги сповіщень → Кухня» (5–240 хв). Частота сповіщень: «Налаштування → Частота кухні». Це розділ не для підсумків дня, а для оперативного втручання прямо зараз.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Доставка</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** активні замовлення на доставку в режимі реального часу. По кожній точці — скільки замовлень у дорозі, які самовивози готові й чекають гостя, які вже вийшли за ліміт.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахуються запізнення:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Кур'єрська доставка — бот рахує час від моменту, коли кур'єр реально виїхав</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Самовивіз — бот починає рахувати запізнення після обіцяного часу готовності</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Далі фактичний час порівнюється з порогом. Наприклад, якщо ліміт 60 хв, а кур'єр уже їде 74 хв — бот покаже перевищення на 14 хв.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Деталізація:** можна відкрити конкретне замовлення і перевірити адресу, дедлайн, статус та фактичний час. **Налаштування:** «Налаштування → Пороги сповіщень → Доставка» (10–240 хв).</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Персонал</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Розділ «Персонал» дозволяє працювати з кадровими даними Syrve прямо з Telegram — без окремого входу в бекофіс.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Доступні дії:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Список — всі співробітники з пагінацією</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Пошук — за іменем або табельним номером</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Створити — покроковий майстер: прізвище, ім'я, по батькові, роль, підрозділ, телефон, e-mail</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Редагувати — змінити будь-яке поле окремо</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Видалити — прибрати співробітника з Syrve</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Дані синхронізуються з Syrve напряму — зміни одразу відображаються в системі.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Управління доступами та користувачами</span>

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Користувачі, інвайти і доступи</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Керування користувачами знаходиться в «Адмін-панель → Користувачі».</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Типовий сценарій запрошення:** адміністратор створює інвайт (діє 30 хв), надсилає посилання новому співробітнику. Після входу відкриває картку і призначає права та точки доступу. Саме від цих налаштувань залежить, які розділи людина побачить і по яких точках бот будуватиме звіти.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Рівні прав:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Адміністратор — доступ до Налаштувань і Адмін-панелі, може керувати іншими користувачами, точками, лімітами</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Звичайний користувач — бачить тільки призначені звіти і точки</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Якщо користувач звільнився — його можна прибрати зі списку, не змінюючи налаштування інших.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Точки доступу</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Кожен користувач бачить звіти тільки по тих точках (ресторанах/філіях), які прив'язані до його акаунту. У шапці меню показується кількість точок доступу. Якщо значення 0 або у звітах постійно нулі — найчастіше точки ще не прив'язані.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Ліміти виторгу</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що це:** контрольний механізм для касової дисципліни. Адміністратор задає суму-поріг по конкретній точці, після чого бот відстежує накопичення виручки за день і надсилає сповіщення, коли поріг перевищено.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Після інкасації або контрольної дії ліміт можна відмітити як оброблений, щоб не дублювати сигнал. Налаштування: «Адмін-панель → Ліміти виручки».</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Налаштування</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Розділ «Налаштування» відкривається кнопкою ⚙️ у головному меню.</span>

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Загальні налаштування</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Доступно всім користувачам:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">🔔 Підписка — підписати або відписати цей чат від автоматичних сповіщень</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Навчання — запустити або продовжити покроковий курс</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Доступно адміністраторам:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Пороги сповіщень — час очікування для кухні (5–240 хв) і доставки (10–240 хв)</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Нормативи кухні — режим відстеження та норми по стравах</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Ролі та абревіатури — прив'язка ролей Syrve до груп бота</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Розклад і частота — автозвіти, тихі години, інтервали сповіщень</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Часовий пояс — вибір часового поясу для відображення дат. За замовчуванням — Kyiv</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Ролі та абревіатури груп</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">«Групи ролей» — це зв'язок між ролями співробітників у Syrve та звітами в боті. У Syrve є ролі (офіціант, бармен, сушист, кур'єр), а в боті вони об'єднуються в зручні скорочення (КПЕ, ПКС, ПВР, КР тощо). У звітах по персоналу замість хаотичного переліку ролей відображаються акуратні групи.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Покрокове налаштування:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Відкрити «Налаштування → Абревіатури груп»</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Додати потрібні скорочення і відредагувати порядок їх відображення</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Перейти до «Налаштування → Групи ролей (прив'язка)»</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Для кожної ролі із Syrve вказати, до якої групи вона належить</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Після налаштування у звітах по персоналу та відпрацюваннях видно, до якої групи належить кожен співробітник.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Автозвіти, email і тихі години</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Бот може автоматично надсилати звіти у Telegram-чат за розкладом — без ручного відкриття меню.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що можна задати** («Налаштування → Розклад і частота → Автозвіти»):</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Час відправки — один або кілька слотів на день (09:00, 13:00, 22:00 або свій час)</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Увімкнути / вимкнути — автозвіт по кожному каналу окремо</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Доставка на e-mail — вказати адресу і ввімкнути відправку</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Тихі години — проміжок, коли бот не надсилає сповіщення (наприклад, з 23:00 до 08:00)</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що входить в автозвіт:** щоденний підсумок по всіх точках: виручка, гості, замовлення, середній чек, доставки. За наявності відповідних прав — також списання, негативні залишки, залежалі запаси.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Нормативи кухні</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Модуль «Нормативи кухні» дозволяє задати, скільки часу має займати приготування, і отримувати сповіщення при перевищенні.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Два режими роботи:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Режим замовлення** (за замовчуванням) — бот стежить за часом по всьому замовленню цілком. Один глобальний ліміт (5–240 хв). Коли перевищено — замовлення позначається 🐢.</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Режим страв** — кожна страва або категорія має власний норматив у хвилинах. Бот стежить за кожною позицією окремо і показує, яка страва запізнилась і на скільки.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Налаштування режиму страв:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">По категоріях — задайте час для кожної страви або одразу для всіх у категорії</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Пресети — збережені швидкі значення (15, 30, 45, 60 хв), щоб не вводити вручну</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Ігноровані страви — позначте 🚫 позиції, які не потрібно відстежувати (напої, хліб тощо)</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Скидання — очистити норму по окремій страві або по всій категорії</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Частота сповіщень:** мінімальна пауза між повідомленнями про перевищення — щоб бот не спамив одним сигналом щосекунди. «Налаштування → Частота кухні».</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Режим навчання</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Режим навчання — це покроковий курс усередині бота, який допомагає освоїти всі функції без ризику щось зламати.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Трек визначається автоматично за роллю:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Адміністратор — курс по налаштуванню: точки доступу, ліміти, персонал, розклад, права користувачів</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Клієнт — курс по роботі зі звітами та основними функціями</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Статуси навчання:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Не розпочато — курс ще не запускався</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Активне — проходження в процесі, поточний крок збережено</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">На паузі — зупинено, можна продовжити будь-коли</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Завершено — курс пройдено повністю</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як запустити:** «Налаштування → Навчання → Почати».</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Дії під час навчання:** «Далі» / «Назад» — крок вперед або назад; «Пропустити» — пропустити поточний крок; «Пауза» — зберегти прогрес і вийти; «Перезапустити» — почати з початку; «Завершити» — закінчити достроково.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Під час навчання бот показує демо-дані — реалістичні цифри для практики без ризику змінити реальні налаштування.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Аналітичні звіти (розділ «Інші звіти»)</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Блок «Інші звіти» містить детальні аналітичні звіти для продажів, сервісу, складу та контролю операцій. Це звіти не для миттєвої тривоги, а для аналізу причин і закономірностей.</span>

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Виручка по точках</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** детальний фінансовий зріз — виручку, кількість замовлень, кількість гостей і середній показник у двох варіантах по кожній точці.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Виручка — сума позицій замовлень зі знижкою з аналітики Syrve</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Середній чек на замовлення = виручка ÷ кількість замовлень</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Середній на гостя = виручка ÷ кількість гостей</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Рядки відсортовані від найвищої виручки до найнижчої.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Продажі по категоріях страв</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** по кожній точці — яка категорія меню скільки заробила, скільки разів замовлялася і яку частку займає в загальній виручці.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується частка:** виручка категорії ÷ загальна виручка точки × 100. Наприклад, якщо суші дали 18 000 грн із загальних 60 000 грн — їхня частка 30%.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Знижки</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** де, кому і в якому обсязі надавались знижки — з розбивкою по типу знижки, офіціанту, номеру замовлення і картці знижок.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується:** бот бере поле суми знижки з кожного рядка замовлення і групує за точкою, типом знижки та офіціантом. Зручно відстежувати, де знижки застосовуються надто часто або в нетипових обсягах.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Видалення страв</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** скільки позицій було видалено з замовлень, ким, на яку суму і з яким коментарем. Розбивка по офіціанту, типу видалення (зі списанням або без) і причині.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що рахується по кожній позиції:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">кількість видалених порцій</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">вартість за ціною продажу</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">собівартість (вартість для кухні)</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Важливий нюанс:** цей звіт навмисно включає навіть повністю скасовані замовлення, хоча більшість інших звітів їх виключають. Зроблено це спеціально — щоб жодне видалення не залишилося прихованим.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Офіціанти та гості</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** внесок кожного офіціанта — виручка, кількість обслужених гостей, кількість замовлень і два варіанти середнього.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахуються середні:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Середній чек = виручка ÷ кількість замовлень</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Середній на гостя = виручка ÷ кількість гостей</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Можна натиснути на точку та побачити розбивку по кожному офіціанту окремо.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Топ страв</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** рейтинг страв за обраний период — топ-10 або топ-20 за двома критеріями: кількістю проданих порцій і виручкою.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як рахується:** бот бере з аналітики Syrve кількість порцій і суму виручки по кожній страві в кожній точці, сортує за спаданням. Зручно для аналізу хітів меню і прийняття рішень по асортименту.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Час приготування на кухні</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** три середніх показники по кожній точці, що характеризують швидкість роботи кухні.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Три показники:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Час приготування** — скільки в середньому хвилин від старту готування до видачі страви</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Затримка старту** — наскільки пізно кухня взялась за готування після отримання замовлення</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Запізнення подачі** — наскільки пізно страва потрапила до гостя</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Якщо затримка старту або запізнення подачі зростають — це сигнал про проблему в конкретній ланці, а не в усій кухні.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Складські звіти</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Складські звіти влаштовані інакше, ніж звіти продажів — вони не беруть дані з аналітики Syrve, а звертаються безпосередньо до складської бази та документів.</span>

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Списання</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** акти списання товарів зі складу за обраний период.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**По кожному документу:** дата, номер, статус (новий / проведений / видалений), склад, рахунок витрат, перелік товарів із кількістю та собівартістю.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Фільтри:** склад, статус, пошук по назві товару або номеру документа.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Від'ємні залишки</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** товари, яких на складі менше нуля — тобто по яких облік пішов у мінус.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Як працює:** бот запитує поточні складські залишки у Syrve на конкретний момент. Можна обрати: прямо зараз, кінець поточного операційного дня, кінець вчорашнього дня або конкретна дата і час.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**«Порушення»:** якщо від'ємний залишок перевищує встановлений поріг (за замовчуванням 0,01 одиниці) — позиція позначається як порушення. Поріг можна налаштувати. **Фільтри:** склад, конкретні товари, поріг.</span>

---

### <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Рух товару (залежалі запаси)</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Що показує:** товари, які мають залишок на складі, але за обраний период по них не було жодного руху — ні продажів, ні витрат, ні переміщень, ні списань.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Логіка:** бот дивиться на залишок на початок периоду і перевіряє, чи були операції за цей час. Якщо залишок є, а рухів немає — товар потрапляє у звіт як «залежалий».</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Фільтри:** склад, мінімальний залишок, типи операцій. Корисно для виявлення заморожених товарних позицій, що займають місце і кошти.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Як читати запізнення у кухні та доставці</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">У боті запізнення показується не як окреме число, а як перевищення над вашим порогом.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Логіка для кухні:** бот дивиться, скільки хвилин замовлення реально перебуває в кухонній роботі, і порівнює з лімітом. *Приклад:* ліміт 15 хв, замовлення вже 22 хв → бот покаже перевищення 7 хв.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">**Логіка для доставки:**</span>

- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Кур'єрська доставка — рахує час від фактичного виїзду кур'єра</span>
- <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Самовивіз — рахує час після обіцяного моменту готовності</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">*Приклад:* ліміт 60 хв, кур'єр вже в дорозі 74 хв → бот покаже перевищення 14 хв. Тобто бот не просто каже «є проблема», а показує, на скільки саме хвилин замовлення вийшло за норму.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Демо-режим</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Демо-режим — це окремий глобальний режим роботи бота для показу функціоналу. Його перемикає тільки супер-адмін у адмін-меню.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">У цьому режимі бот не використовує реальні підключення до Syrve: звіти, списки, алерти і картки будуються на згенерованих демонстраційних даних. На екранах з'являється банер, що підказує — це демо.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Демо-стенд спільний для всіх запрошених. Звичайні користувачі бачать одне одного як «Анонім N», супер-адмін бачить реальні імена учасників.</span>

---

## <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Інструкції, FAQ і зворотний зв'язок</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Розділ «Інструкції» — це вбудована база знань усередині бота. Тут зібрані статті з поясненням модулів, короткий FAQ для найчастіших питань і форма зворотного зв'язку.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Коли не зрозуміло, що означає певний екран або який звіт відкривати в конкретній ситуації — починайте саме з цього розділу.</span>

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Окремо в меню може бути блок спільноти з форумом, Telegram-групою, сайтом та додатковими посиланнями — якщо адміністратор їх заповнив.</span>

---

<span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">*Якщо у якомусь звіті цифри здаються неочікуваними — перевірте обраний период, налаштовані точки доступу і фільтри всередині самого звіту. Найчастіше причина саме в цьому.*</span>