Базовий шар IA
User flows
П'ять шляхів, якими людина проходить свою роботу: не лише щасливий сценарій, а рішення, стани і свідомі тупики. Кожен вузол зареєстрований у карті сайту, кожен колір означає результат: зелений - успіх, червоний - тупик, сірий - нейтральний крок. Звідси кроки шляху беруть детальна IA і вайрфрейми.
02
User flows
П'ять flows, відрендерених як живі діаграми. Кожна показує не лише happy path, а й рішення, стани і свідомі тупики. Під кожною - словесний список.
екран
рішення
стан / старт / успіх / тупик
Main job - коуч збирає мультиклієнтське замовлення
Олена, первинна - Main JTBD, Рішення 1
flowchart TD
s0(["Тренер відкриває Stack"])
q1{"Залогінений як верифікований тренер?"}
qacct{"Є акаунт?"}
e1["Вхід / реєстрація"]
slog(["Завантаження - вхід"])
qauth{"Вхід успішний?"}
serr(["Помилка - вхід не вдався"])
qretrylogin{"Повторити вхід?"}
c1["«Для тренерів» + опубліковані ціни"]
c2["Реєстрація тренера + верифікація соц-лінку"]
svrf(["Завантаження - перевірка соц-лінку"])
q2{"Верифікацію пройдено?"}
evf(["Помилка - верифікація не вдалася, надішліть лінк ще раз"])
qresub{"Надіслати лінк ще раз?"}
de1(["Тупик - верифікацію не пройдено, без доступу тренера"])
c3["Кабінет тренера"]
c5p["Профіль клієнта"]
cpl(["Завантаження - історія замовлень клієнта"])
qcp{"Історію клієнта завантажено?"}
cperr(["Помилка - історія клієнта не завантажилась"])
qcphas{"Є замовлення для цього клієнта?"}
cpempty(["Порожньо - для цього клієнта ще нічого не замовляли"])
c4["Мультиклієнтська сесія замовлення"]
q3{"Клієнт уже у списку?"}
c5["Список клієнтів"]
addc(["Додавання клієнта - ім'я і ціль"])
slqa(["Завантаження - швидке додавання й тренерська ціна"])
q4{"Товар у наявності?"}
so1(["Немає в наявності"])
q5{"Є заміна?"}
csub(["Обрати заміну"])
q7{"Тренерську ціну застосовано?"}
ee1(["Помилка - тренерську ціну не застосовано"])
qprice{"Повторити чи зупинити?"}
blockc(["Тренерська ціна не вирішена - сесію збережено, оформлення заблоковано"])
q8{"Ще є клієнти для замовлення?"}
c6["Кошик"]
qce{"Кошик порожній?"}
ec(["Порожньо - кошик порожній"])
c7["Оформлення"]
addr(["Вибір адреси - читання збережених, ввід якщо немає"])
sl1(["Завантаження - обробка платежу"])
q9{"Платіж успішний?"}
ep1(["Помилка - платіж відхилено"])
q10{"Повторити платіж?"}
qaband{"Назад у кошик чи покинути?"}
de3(["Тупик - платіж покинуто, кошик збережено"])
c8["Замовлення оформлено"]
ok1(["Успіх - мультиклієнтське замовлення оформлено й підтверджено"])
s0 --> q1
q1 -->|так| c3
q1 -->|ні| qacct
qacct -->|так| e1
e1 --> slog
slog --> qauth
qauth -->|так| c3
qauth -->|ні| serr
serr --> qretrylogin
qretrylogin -->|так| e1
qretrylogin -->|ні| qacct
qacct -->|ні| c1
c1 --> c2
c2 --> svrf
svrf --> q2
q2 -->|так| c3
q2 -->|ні| evf
evf --> qresub
qresub -->|так| c2
qresub -->|ні| de1
c3 -->|перегляд історії клієнта| c5p
c5p --> cpl
cpl --> qcp
qcp -->|ні| cperr
cperr -->|повтор| cpl
qcp -->|так| qcphas
qcphas -->|є замовлення| c4
qcphas -->|поки немає| cpempty
cpempty --> c4
c3 -->|нове замовлення| c4
c4 --> q3
q3 -->|так| slqa
q3 -->|ні| c5
c5 --> addc
addc -->|клієнта додано й обрано| slqa
slqa --> q4
q4 -->|ні| so1
so1 --> q5
q5 -->|ні, пропустити позицію| q8
q5 -->|так| csub
csub --> q4
q4 -->|так| q7
q7 -->|ні| ee1
ee1 --> qprice
qprice -->|повтор| q7
qprice -->|зупинити| blockc
blockc --> c3
q7 -->|так, автоприв'язка до активного клієнта| q8
q8 -->|так| q3
q8 -->|ні| c6
c6 --> qce
qce -->|так| ec
ec --> c4
qce -->|ні| c7
c7 --> addr
addr --> sl1
sl1 --> q9
q9 -->|так| c8
q9 -->|ні| ep1
ep1 --> q10
q10 -->|так| c7
q10 -->|ні| qaband
qaband -->|назад у кошик| c6
qaband -->|покинути| de3
c8 --> ok1
Job 2 - початківець: ціль до першої покупки
Вікторія, вторинна - гостьове оформлення, потім гість до акаунта
flowchart TD
b1["Головна / вибір цілі"]
b2["Колекція за ціллю"]
gcl(["Завантаження - колекція за ціллю"])
qgcl{"Колекцію завантажено?"}
gcerr(["Помилка - колекція не завантажилась"])
qgc{"Є товари в наявності?"}
gce(["Порожньо - немає товарів у наявності"])
b3["Деталі товару"]
qa{"Товар у наявності?"}
so(["Немає в наявності"])
b4["Кошик"]
qce2{"Кошик порожній?"}
ec2(["Порожньо - кошик порожній"])
b5["Оформлення"]
qg{"Оформити як гість чи зареєструватися?"}
b6["Вхід / реєстрація"]
slog2(["Завантаження - вхід"])
qauth2{"Вхід успішний?"}
serr2(["Помилка - вхід не вдався"])
qrl2{"Повторити вхід чи продовжити як гість?"}
addr2(["Вибір адреси - читання збережених, ввід якщо немає"])
sl(["Завантаження - обробка платежу"])
qp{"Платіж успішний?"}
ep(["Помилка - платіж відхилено"])
qr{"Повторити платіж?"}
qaband2{"Назад у кошик чи покинути?"}
de1b(["Тупик - платіж покинуто, кошик збережено"])
b7["Замовлення оформлено"]
qac{"Створити акаунт зараз?"}
b6b["Вхід / реєстрація"]
b8["Кабінет покупця"]
okg(["Успіх - перша покупка завершена як гість"])
oka(["Успіх - покупка завершена, акаунт зберігає історію й лояльність"])
b1 -->|тайл цілі| b2
b2 --> gcl
gcl --> qgcl
qgcl -->|ні| gcerr
gcerr -->|повтор| gcl
qgcl -->|так| qgc
qgc -->|ні| gce
gce -->|інша ціль| b1
qgc -->|так, відкрити товар| b3
b3 --> qa
qa -->|ні| so
so -->|назад до колекції| b2
qa -->|так, у кошик| b4
b4 --> qce2
qce2 -->|так| ec2
ec2 -->|назад до пошуку товару| b1
qce2 -->|ні| b5
b5 --> qg
qg -->|реєстрація| b6
b6 --> slog2
slog2 --> qauth2
qauth2 -->|так| addr2
qauth2 -->|ні| serr2
serr2 --> qrl2
qrl2 -->|повтор| b6
qrl2 -->|гість| addr2
qg -->|гість| addr2
addr2 --> sl
sl --> qp
qp -->|так| b7
qp -->|ні| ep
ep --> qr
qr -->|так| b5
qr -->|ні| qaband2
qaband2 -->|назад у кошик| b4
qaband2 -->|покинути| de1b
b7 --> qac
qac -->|так| b6b
b6b --> b8
b8 --> oka
qac -->|ні| okg
Job 3 - перевірка безпеки перед покупкою
склад, дозування, походження, сертифікати на Деталях товару
flowchart TD
j1["Колекція за ціллю"]
j2["Каталог і пошук"]
csl(["Завантаження - результати пошуку"])
qcsl{"Результати завантажено?"}
cserr(["Помилка - пошук не вдався"])
qcs{"Є результати?"}
cse(["Порожньо - немає результатів, дивіться поради"])
j3["Деталі товару"]
slt(["Завантаження - деталі довіри"])
qd{"Деталі довіри завантажено?"}
se(["Помилка - деталі не завантажились"])
qr3{"Повторити?"}
q1c{"Склад, дозування, походження, сертифікація - все зрозуміло?"}
rev(["Відгуки й вміст сертифіката на Деталях товару"])
qrev{"Переконано після відгуків і сертифіката?"}
leave(["Тупик - покупець іде, сумнів у безпеці не знято"])
q2c{"Товар у наявності?"}
so3(["Немає в наявності"])
qsub{"Назад до колекції по альтернативу?"}
leave2(["Тупик - немає варіанта в наявності, покупець іде"])
j4["Кошик"]
ok3(["Успіх - товару довіряють, додано в кошик"])
j1 -->|товар| j3
j2 --> csl
csl --> qcsl
qcsl -->|ні| cserr
cserr -->|повтор| csl
qcsl -->|так| qcs
qcs -->|ні| cse
cse -->|уточнити пошук| j2
qcs -->|так, відкрити товар| j3
j3 --> slt
slt --> qd
qd -->|ні| se
se --> qr3
qr3 -->|так| slt
qr3 -->|ні| leave
qd -->|так| q1c
q1c -->|так| q2c
q1c -->|ні| rev
rev --> qrev
qrev -->|так| q2c
qrev -->|ні| leave
q2c -->|ні| so3
so3 --> qsub
qsub -->|так| j1
qsub -->|ні| leave2
q2c -->|так| j4
j4 --> ok3
Job 4 - повторне замовлення в один тап
Андрій, підтримувальна персона - повтор в один тап із рядка Історії замовлень
flowchart TD
r0(["Андрій хоче поповнити запас"])
rq1{"Залогінений?"}
r2["Вхід / реєстрація"]
slog3(["Завантаження - вхід"])
qauth3{"Вхід успішний?"}
serr3(["Помилка - вхід не вдався"])
qrl3{"Повторити вхід?"}
r1["Кабінет покупця"]
r3["Історія замовлень"]
qe{"Є минулі замовлення?"}
se4(["Порожньо - немає минулих замовлень для повтору"])
rexit(["Вихід - за покупками через Головну / вибір цілі"])
qrepeat{"Повтор із рядка історії чи відкрити деталі замовлення?"}
r4["Деталі замовлення + повтор"]
rq2{"Усі попередні позиції в наявності?"}
so4(["Немає в наявності - одна чи більше позицій"])
rq3{"Прибрати недоступне і продовжити?"}
qfind{"Назад до історії чи шукати товар?"}
csf["Каталог і пошук"]
r5["Кошик"]
qce4{"Кошик порожній?"}
ec4(["Порожньо - кошик порожній"])
r6["Оформлення"]
addr4(["Вибір адреси - читання збережених, ввід якщо немає"])
sl4(["Завантаження - обробка платежу"])
rq4{"Платіж успішний?"}
ep4(["Помилка - платіж відхилено"])
rq5{"Повторити платіж?"}
qaband4{"Назад у кошик чи покинути?"}
dep(["Тупик - платіж покинуто, кошик збережено"])
r7["Замовлення оформлено"]
ok4(["Успіх - staples повторно замовлено в один тап"])
r0 --> rq1
rq1 -->|ні| r2
r2 --> slog3
slog3 --> qauth3
qauth3 -->|так| r1
qauth3 -->|ні| serr3
serr3 --> qrl3
qrl3 -->|так| r2
qrl3 -->|ні| rexit
rq1 -->|так| r1
r1 -->|історія замовлень| r3
r3 --> qe
qe -->|ні| se4
se4 --> rexit
qe -->|так| qrepeat
qrepeat -->|повтор із рядка в один тап| rq2
qrepeat -->|відкрити деталі замовлення| r4
r4 -->|повторити замовлення| rq2
rq2 -->|ні| so4
so4 --> rq3
rq3 -->|так| r5
rq3 -->|ні| qfind
qfind -->|історія замовлень| r3
qfind -->|шукати товар| csf
csf -->|знайдено, у кошик| r5
rq2 -->|так| r5
r5 --> qce4
qce4 -->|так| ec4
ec4 -->|назад до пошуку товару| r3
qce4 -->|ні| r6
r6 --> addr4
addr4 --> sl4
sl4 --> rq4
rq4 -->|так| r7
rq4 -->|ні| ep4
ep4 --> rq5
rq5 -->|так| r6
rq5 -->|ні| qaband4
qaband4 -->|назад у кошик| r5
qaband4 -->|покинути| dep
r7 --> ok4
Job 6 - перегляд лояльності
Олена первинна, Андрій вторинна - Статус лояльності, тільки перегляд
flowchart TD
ch["Кабінет тренера"]
bh["Кабінет покупця"]
ls["Статус лояльності"]
lsl(["Завантаження - статус лояльності"])
qll{"Лояльність завантажено?"}
lserr(["Помилка - лояльність не завантажилась"])
qlhas{"Є вже накопичена вигода?"}
lsempty(["Порожньо - поки нічого не накопичено"])
lback(["Повернення до кабінету"])
ch -->|перегляд лояльності| ls
bh -->|перегляд лояльності| ls
ls --> lsl
lsl --> qll
qll -->|ні| lserr
lserr -->|повтор| lsl
qll -->|так| qlhas
qlhas -->|поки немає| lsempty
qlhas -->|вигоду показано| lback
lsempty --> lback