Flowchart TD · Mermaid · Синтаксис GitHub-сумісний
Екрани у [квадратних дужках] — назви зі sitemap.md.
{ромб} — точка рішення. (округлий) — стан: loading / empty / error / дія. ((коло)) — кінець: успіх або тупик.
Хто: атлет (Оля) · Частота: 3–5 разів на тиждень
flowchart TD
A(Запуск застосунку) --> B{"Автентифікований?"}
B -->|ні| C["Вхід"]
C --> B
B -->|так| D{"Підключений до тренера?"}
D -->|ні| E["Сьогодні — план на день"]
E --> F("Стан: немає тренера — введи інвайт-код")
F --> Z1(("Тупик: очікуємо інвайт від тренера"))
D -->|так| G("Завантажуємо план...")
G --> H{"Завантажено?"}
H -->|ні| I("Помилка мережі")
I --> J{"Повторити?"}
J -->|так| G
J -->|ні| Z2(("Тупик: немає з'єднання"))
H -->|так| K{"План на сьогодні є?"}
K -->|ні| L["Сьогодні — план на день"]
L --> M("Стан: план не призначено — чекаємо від тренера")
M --> Z3(("Тупик: чекаємо план"))
K -->|так| N["Сьогодні — план на день"]
N --> O("Тап — Почати тренування")
O --> P["Активне тренування / Логер"]
P --> Q{"Заповнив вагу і повтори?"}
Q -->|ні| R("Стан: поля порожні — кнопка Зберегти неактивна")
R --> P
Q -->|так| S("Тап — Зберегти підхід")
S --> T{"Збережено?"}
T -->|ні| U("Помилка збереження підходу")
U --> V{"Повторити?"}
V -->|так| S
V -->|ні| Z4(("Тупик: дані підходу втрачено"))
T -->|так| W{"Останній підхід вправи?"}
W -->|ні| X("Таймер відпочинку")
X --> P
W -->|так| Y{"Остання вправа у тренуванні?"}
Y -->|ні| AA("Перехід до наступної вправи")
AA --> P
Y -->|так| AB("Тап — Завершити тренування")
AB --> AC["Завершення тренування"]
AC --> SUCCESS1(("Успіх: тренування залоговано"))
Рішення у flow:
Стани:
Хто: тренер (Максим) · Коли: початок нового тижня або новий клієнт
flowchart TD
A(Вхід у застосунок) --> B["Мої атлети — огляд"]
B --> C("Тап — вкладка Програми")
C --> D["Програми — список"]
D --> E{"Є програми?"}
E -->|ні| F("Стан: список порожній")
F --> G("Тап — Створити програму")
E -->|так| G
G --> H["Конструктор програми"]
H --> I("Ввести назву і опис програми")
I --> J("Тап — Додати день / сесію")
J --> K["Редактор дня / сесії"]
K --> L("Ввести вправу: назва, сети, повтори, вага, відпочинок")
L --> M{"Ще вправи у цьому дні?"}
M -->|так| L
M -->|ні| N{"Ще дні у програмі?"}
N -->|так| J
N -->|ні| O("Тап — Зберегти програму")
O --> P{"Збережено?"}
P -->|ні| Q("Помилка збереження програми")
Q --> R{"Повторити?"}
R -->|так| O
R -->|ні| Z1(("Тупик: програму не збережено"))
P -->|так| S["Програми — список"]
S --> T("Тап — Призначити атлету")
T --> U["Призначити програму атлету"]
U --> V{"Є підключені атлети?"}
V -->|ні| W("Стан: немає жодного атлета")
W --> X["Запросити атлета (інвайт)"]
X --> Y{"Атлет прийняв інвайт?"}
Y -->|ні| Z2(("Тупик: чекаємо підключення атлета"))
Y -->|так| U
V -->|так| AA("Вибрати атлета зі списку")
AA --> AB("Вибрати дату початку")
AB --> AC("Тап — Підтвердити призначення")
AC --> AD{"Призначено?"}
AD -->|ні| AE("Помилка призначення")
AE --> AF{"Повторити?"}
AF -->|так| AC
AF -->|ні| Z3(("Тупик: план не призначено"))
AD -->|так| SUCCESS1(("Успіх: план призначено — атлет побачить його на екрані Сьогодні"))
Рішення у flow:
Стани:
Хто: атлет · Коли: під час або після їжі · Частота: 3–4 рази на день
flowchart TD
A(Відкрив застосунок) --> B("Тап — вкладка Харчування")
B --> C("Завантажуємо записи за сьогодні...")
C --> D{"Завантажено?"}
D -->|ні| E("Помилка мережі")
E --> F{"Повторити?"}
F -->|так| C
F -->|ні| Z1(("Тупик: харчування недоступне"))
D -->|так| G["Харчування — сьогодні"]
G --> H{"Є записи за сьогодні?"}
H -->|ні| I("Стан: нічого не залоговано — денні показники нульові")
H -->|так| J("Підсумок: ккал / білки / жири / вуглеводи за день")
I --> K("Тап — Додати їжу")
J --> K
K --> L["Додати їжу"]
L --> M("Ввести назву страви")
M --> N("Ввести калорії")
N --> O{"Додати макроси?"}
O -->|ні| P("Тап — Зберегти")
O -->|так| Q("Ввести білки / жири / вуглеводи")
Q --> P
P --> R{"Збережено?"}
R -->|ні| S("Помилка збереження запису")
S --> T{"Повторити?"}
T -->|так| P
T -->|ні| Z2(("Тупик: запис страви втрачено"))
R -->|так| U["Харчування — сьогодні"]
U --> V("Оновлений підсумок: ккал і макроси додано")
V --> W{"Додати ще одну страву?"}
W -->|так| K
W -->|ні| SUCCESS1(("Успіх: харчування залоговано"))
Рішення у flow:
Стани:
Хто: тренер (Максим) · Коли: після тренування клієнта · Частота: кілька разів на тиждень
flowchart TD
A(Вхід у застосунок) --> B["Мої атлети — огляд"]
B --> C{"Є підключені атлети?"}
C -->|ні| D("Стан: список порожній — запроси першого атлета")
D --> E["Запросити атлета (інвайт)"]
E --> Z1(("Тупик: чекаємо підключення"))
C -->|так| F("Підсумок активності: хто тренувався, хто ні")
F --> G("Вибрати клієнта зі списку")
G --> H["Атлет — активність і фідбек"]
H --> I{"Є тренування без фідбеку?"}
I -->|ні| J("Стан: всі тренування вже прокоментовано")
J --> Z2(("Тупик: нема що переглядати"))
I -->|так| K("Завантажуємо деталі тренувань...")
K --> L{"Завантажено?"}
L -->|ні| M("Помилка мережі")
M --> N{"Повторити?"}
N -->|так| K
N -->|ні| Z3(("Тупик: дані клієнта недоступні"))
L -->|так| O("Вибрати конкретне тренування")
O --> P["Деталі тренування (тренер-вид)"]
P --> Q{"Дані виглядають коректно?"}
Q -->|ні| R("Стан: аномальні дані — наприклад, вага різко впала")
R --> S["Залишити фідбек"]
Q -->|так| S
S --> T("Написати текстовий коментар")
T --> U{"Коментар не порожній?"}
U -->|ні| V("Стан: поле порожнє — кнопка неактивна")
V --> T
U -->|так| W("Тап — Надіслати фідбек")
W --> X{"Фідбек збережено?"}
X -->|ні| Y("Помилка відправки")
Y --> Z{"Повторити?"}
Z -->|так| W
Z -->|ні| Z4(("Тупик: фідбек не надіслано"))
X -->|так| SUCCESS1(("Успіх: фідбек надіслано — атлет побачить у розділі Прогрес"))
Рішення у flow:
Стани:
Новий екран додано у sitemap.md:
Деталі тренування (тренер-вид) [T] (J2) — деталізований вигляд конкретного тренування атлета для тренера; точка входу до Залишити фідбек.