# Отчёт: портал Лидерра «глазами тупого пользователя» — 24.06.2026

> ## ⚠️ СВЕРКА ВЕРСИЙ (добавлено после прогона)
> Локальный dev-бандл, по которому шёл прогон, был собран **16:46 МСК** — на ~14 мин
> **старше прода** (фронт собран **17:00 МСК**, HEAD `8f75ac05` 16:54). Поэтому часть UI я
> видел в старом виде. Сегодня (24.06) был день фиксов «косяк 01–07».
>
> **Уже починено сегодня — НЕ дублировать:**
> - мастер «реквизиты первым шагом» — косяк 04 (вариант C), свежая фича, не баг;
> - «Вся РФ» одной галочкой — косяк 03;
> - имя по умолчанию «Новый» вместо «коллега» — косяк 07 §6 (мой **U2** частично закрыт);
> - стартовый блок дашборда + чистый пустой список — косяк 07;
> - префлайт/блокировка берут тариф по дате — косяк 01 (подтверждён на проде).
>
> **Подтверждено как ОТКРЫТОЕ на проде (проверено в прод-сборке/коде):**
> - **U1** «Домен конкурента / донор» — строка живёт в прод-бандле, не починена;
> - **B1** «хватит на N дней» — `RunwayCalculator` сегодня не трогали; `null` при пустой
>   истории → «0 дней» при полном балансе; значение может превышать шкалу («10 из 7»).
>
> **Снято / требует перепроверки:**
> - **U4** «Стоимость лида: —» — вероятно **артефакт моей ручной вставки лида** (карточка
>   показывает цену, если `costKopecks` есть; `DealDetailBody.vue:169`). Проверять настоящим лидом.
> - **U3/B3** видимость заморозки — перепроверить на пересобранном фронте.


**Среда:** локальный dev `127.0.0.1:8000` (решение владельца). Боевой liderra.ru и реальные
деньги клиента НЕ затрагивались.
**Аккаунт прогона:** `emptyname-0624@example.org` (tenant 13) — пустой аккаунт-новичок.
**Скилы:** brainstorming → writing-plans → Playwright (глаза) → design-critique → billing-audit →
systematic-debugging. Спека: `../../specs/2026-06-24-dumb-user-walkthrough-design.md`,
ранбук: `../../plans/2026-06-24-dumb-user-walkthrough.md`.
**Скриншоты:** в этой папке, 30 шт., пронумерованы.

---

## Резюме (коротко, для владельца)

Портал в целом **дружелюбный и понятный**: онбординг ведёт за руку, создание проекта —
аккуратный мастер из 2 шагов, биллинг прозрачный, **деньги считаются до копейки** (проверено:
пополнение и списания точны, блокировка по балансу честная и снимается пополнением).

Но есть **один реальный баг** (счётчик «хватит на N дней» на дашборде врёт и противоречит
биллингу) и **несколько мест, где новичок спотыкается** — в основном из-за жаргона и того,
что важная инфа (заморозка приёма лидов, цена лида) показывается не там, где человек смотрит.

Главные вещи по приоритету — ниже.

---

## 🎯 ЧАСТЬ 1 (ГЛАВНОЕ). Упрощение работы клиента — «было → стало»

| # | Экран | Что мешает новичку (было) | Предложение (стало) | Скрин |
|---|---|---|---|---|
| U1 | Создание проекта, шаг 2 | Поле **«Домен конкурента»** и подпись «источник-донор». Новичок не понимает: чей домен вписывать, при чём тут «конкурент» и «донор». | Переименовать в **«Сайт, с которого собирать заявки»** + подсказка-пример «адрес сайта в вашей нише, напр. okna-moskva.ru». Слова «донор/конкурент» убрать из UI. | 10 |
| U2 | Дашборд / приветствие | Приветствие **«Добрый день, коллега»** — обезличено, потому что при регистрации имя не спрашивают (только email+пароль), а имя в профиле пустое. | Либо спросить имя на 1-м входе/в онбординге, либо приветствовать по компании; и в онбординг добавить шаг «как вас зовут». | 05 |
| U3 | Заморозка приёма лидов | Когда баланс кончился и приём **заморожен**, баннер «Приём лидов приостановлен» виден **только на биллинге**. На дашборде и в проектах — ни слова, «Активные проекты: 1», будто всё ок. | Показать тот же баннер на **дашборде** (первый экран) и метку «на паузе — пополните баланс» на карточке проекта. | 27, 28, 29 |
| U4 | Карточка сделки | **«Стоимость лида: —»** — клиент не видит, сколько именно списали за этот лид (хотя в биллинге списание 70 ₽ есть). | Показывать реальную цену лида в карточке («Стоимость лида: 70 ₽»). | 25 |
| U5 | Проекты / новый проект | Сразу после создания вылезает большой баннер про «изменения до 18:00 МСК синхронизация» — для новичка это пугающий жаргон, он ещё не понял, что такое синхронизация. | Для первого проекта дать мягкую формулировку («Проект включён в сбор. Лиды пойдут со следующего дня») и спрятать тех-детали про 18:00 под «подробнее». | 12 |
| U6 | Биллинг / автопополнение | Кнопка **«Автопополнение» неактивна** без объяснения — новичок не понимает, почему нельзя и что это. | Либо подсказка «доступно после регистрации юр.лица», либо убрать до готовности. | 13 |
| U7 | Навигация | Разделов «Напоминания»/«Импорт» нет (404). В целом меню короткое и понятное — это плюс. Но «Канбан» и «Сделки» рядом могут путать новичка (это один и тот же список в разных видах). | Подсказать связь: на «Сделки» добавить переключатель вид «Список / Канбан» вместо двух пунктов меню. | 19, 20, 23 |

**Что уже сделано хорошо (не трогать):** онбординг-карточка «Добро пожаловать» с 3 шагами и
двумя кнопками; пустые состояния с понятным CTA; мастер проекта 2 шага; тарифная лесенка с
меткой «вы здесь»; быстрые суммы пополнения; аккуратная 404 со ссылкой на support; подсказка
«Email менять через support»; «телефон примем в любом формате».

---

## 🐞 ЧАСТЬ 2. Дефекты (баги / блокировки / визуал)

### B1 — БАГ (подтверждён + root-cause). Дашборд «хватит на N дней» врёт и противоречит биллингу
- **Симптом:** при балансе **15 000 ₽** дашборд показал «≈ 223 лида · хватит на **0 дней**»
  (плашка «0 дней из 7»); при балансе **100 ₽** — «≈ 1 лид · хватит на **10 дней**» (плашка
  «**10 дней из 7**» — вылезает за максимум шкалы). Биллинг при тех же деньгах: 4 дн. и 0 дн.
- **Корень:** дашбордовский счётчик считается от **фактического расхода за 30 дней**
  (`runway = доступные_лиды ÷ (лиды_за_30дн / 30)`), а биллинговский «Запас» — от **дневного
  лимита проекта (50/день)**. Для нового аккаунта без истории расход ≈ 0 → выходит «0 дней» при
  полном кошельке и «10 дней» при почти пустом. Заявленная унификация (комментарий «F3 17.06 —
  единый RunwayCalculator») по факту неполная.
- **Где смотреть:** `app/app/Http/Controllers/Api/BillingController.php::runwayDays` (лимит-основа)
  vs источник дашборда (расход-основа); фронт `DashboardBalance.vue` просто рисует `runway_days`.
- **Рекомендация:** унифицировать на лимит-основе (отвечает на вопрос «на сколько хватит при моём
  заданном приёме»), и для случая «нет истории / здоровый баланс» не показывать «0 дней».
- **Скрины:** 17 (билл 4 дн), 18 (дашборд 0 дн при 15000), 27 (дашборд 10 дн при 100), 29 (билл 0 дн).

### B2 — БЛОК регистрации на dev. Капча не пускает
- На `/register` Yandex SmartCaptcha выдаёт «ключ не может использоваться на домене 127.0.0.1:8000»
  → кнопка «Создать аккаунт» неактивна. Зарегистрироваться через UI на dev **нельзя**.
- Это **dev-конфиг** (боевой ключ капчи без localhost в allowed hosts), не баг продукта. Но
  стоит для dev иметь обход/тестовый ключ, иначе сквозную регистрацию на dev не проверить.
- **Скрин:** 02.

### B3 — Заморозка не видна на главных экранах (см. также U3)
- При заморозке по балансу баннер «Приём лидов приостановлен» показан **только на биллинге**;
  дашборд и проекты молчат. Оговорка: мой проект ни разу не синхронизировался с поставщиком
  (`preflight_blocked_at` остался NULL, выставлен только `paused_at`) — возможно, метка проекта
  завязана на другой флаг. **Требует подтверждения** на синхронизированном проекте.
- **Скрины:** 27, 28, 29.

### V1 — Визуал/время. «28 мин назад» у только что созданного лида
- В карточке сделки, созданной секунды назад, показано «28 мин назад» — похоже на сдвиг
  таймзоны (UTC vs МСК) в относительном времени. Низкий приоритет.
- **Скрин:** 25.

### C1 — Копирайт. Формат и тон в баннере заморозки
- «Нужно ещё **3400.00₽**» — без разделителя тысяч и с прилипшим ₽; лучше «3 400 ₽». Тон на
  «ты» («сократи лимиты») при общем «вы» на портале — выровнять.
- **Скрин:** 29.

---

## 💰 ЧАСТЬ 3. Вердикт по деньгам (billing-audit) — ✅ ЧИСТО

Проверено вживую на реальном пути списания (`LedgerService`) и пополнения:

- Пополнение **+10 000 ₽**: 5 000 → 15 000 ₽ ровно; запись `#TX-7`. ✓ (скрин 17)
- 3 лида списаны по **70 ₽** (tier 1): 15 000 → 14 790 ₽ ровно (−210); записи `#TX-8/9/10`. ✓ (скрин 26)
- Оценка лидов многоступенчатая корректна: 15 000 ₽ → **223 лида** (100×70 + 123×65). ✓
- Блокировка по балансу честная: при 100 ₽ преflight заморозил, баннер показал точный дефицит
  «нужно ещё 3 400 ₽ (или −49 лидов лимита)». ✓ (скрин 29)
- Разблокировка пополнением «всё-или-ничего»: топап снял заморозку И паузу проекта; баланс
  100 → 10 100 ₽ ровно. ✓ (БД: `frozen_by_balance_at=NULL`, `paused_at=NULL`) (скрин 30)
- Колонка «Операция»/ID/дата в истории заполнены (старая находка про пустую «Операцию» — закрыта).

**Копейки не теряются, списания и блокировки соответствуют деньгам.**

---

## ♿ ЧАСТЬ 4. Доступность — лёгкий проход (нужен отдельный прогон)

Из наблюдений: у элементов есть осмысленные `aria-label` (кнопки, чекбоксы, прогресс-бары),
структура заголовков читаемая. **Но** aria плашки runway наследует баг B1 («Хватит на 10 дней
из 7»). Полноценную проверку контраста/фокуса/скринридера **в этом прогоне не делал** —
рекомендую **второй прогон скилом `design:accessibility-review`** по ключевым экранам
(регистрация, создание проекта, биллинг, баннер блокировки).

---

## Что НЕ покрыто и предложение по второму прогону скилов

- **Полноценный supplier-webhook** (реальный приход лида извне с привязкой проекта к поставщику)
  на dev не поднимался — лиды инжектились через штатный `LedgerService` (деньги/сделки реальны,
  но без supplier-sync). Метку блокировки на синхронизированном проекте (B3) надо подтвердить.
- **A11y** — только лёгкий взгляд (см. выше).
- **Экспорт сделок** (Excel/CSV) и канбан-перетаскивание — не прогонял по действиям.

**Предлагаю второй прогон (на твоё согласование):**
1. `design:accessibility-review` — полноценная доступность ключевых экранов.
2. `frontend-design:frontend-design` + `design:ux-copy` — превратить U1–U7 в конкретные макеты
   «было → стало» (тексты, поля, порядок шагов) под палитру Forest.
3. Подтверждение B3 на синхронизированном с поставщиком проекте.

---

## Приложение: соответствие скриншотов шагам

01 login · 02 register-captcha-blocked · 05 dashboard-empty · 07 projects-empty ·
08 project-step1-requisites · 09 step1-filled · 10 step2-form · 11 step2-filled ·
12 project-created · 13 billing-overview · 15 price-ladder · 16 topup-dialog ·
17 topup-success-15000 · 18 dashboard-0days-vs-billing-4days-BUG · 19 deals-empty ·
20 kanban · 21 settings · 22 help · 23 404-reminders · 24 deals-with-3-leads ·
25 deal-card · 26 billing-history-3-charges · 27 dashboard-frozen · 28 projects-frozen ·
29 billing-frozen-banner · 30 billing-unblocked-after-topup.
