# Hub Production Audit

Последнее обновление: `2026-03-26`

## Как читать

- `Stable-ish` — модуль живой, но без права говорить “закрыт”, пока не будет ручного QA.
- `Needs QA` — модуль функционально собран, но уже находились реальные баги, значит нужен отдельный проход.
- `Missing` — есть незакрытый кусок, который ещё надо сделать, а не тестировать.

## Жёсткий вывод

Сейчас **нельзя честно говорить, что хаб полностью готов**.

Причина:
- много модулей уже на live backend;
- но по нескольким разделам были найдены базовые UX/logic баги уже при первом ручном тесте;
- значит нужен **stabilization pass модуль за модулем**, а не “новые фичи”.

## По разделам

### Auth

- Статус: `Stable-ish`
- Есть:
  - real login
  - `auth/me`
  - logout
  - passkey / Face ID слой
  - password fallback
  - route guard
- Осталось:
  - ручной QA реального passkey-flow на целевых браузерах/устройствах
  - UI управления passkeys/account settings при необходимости

### Dashboard

- Статус: `Needs QA`
- Есть:
  - реальные KPI
  - period selector
  - global search
  - quick actions
  - timeline/alerts/fleet summary
  - notifications panel
- Осталось:
  - ручной проход всех quick actions
  - ручной проход всех карточек/переходов
  - ручной проход dashboard date/filter поведения

### Bookings

- Статус: `Needs QA`
- Есть:
  - list/timeline
  - filters/search/sort/pagination
  - create/edit/details
  - payment link
  - documents
  - bulk status
- Осталось:
  - жёсткий ручной QA всех модалок и close/back поведения
  - регрессия по bulk actions
  - регрессия по mail/payment/document secondary actions

### Timeline

- Статус: `Needs QA`
- Есть:
  - real bookings
  - vehicle lanes
  - drag/drop
  - resize
  - vehicle/booking modal
  - filters
- Осталось:
  - отдельный ручной QA `drag / resize / status change / filters / close modal`
  - убедиться, что ни одно действие не дёргает весь экран без причины

### Leads

- Статус: `Needs QA`
- Есть:
  - list/search/filters
  - status changes
  - convert to booking
  - public request offers/updates в lead details
- Осталось:
  - ручной QA row actions
  - ручной QA локальных modal flow
  - ручной QA public-request lead workflow

### Clients

- Статус: `Needs QA`
- Есть:
  - list/details/create/edit
  - duplicate resolution
  - block/unblock
  - safe delete
  - new booking from client
  - messaging modal
- Осталось:
  - ручной QA duplicate merge сценариев
  - ручной QA `new booking` из клиента
  - `manual client tags` как отдельная модель/правила

### Tasks

- Статус: `Stable-ish`
- Есть:
  - new task module
  - columns
  - reorder
  - comments
  - attachments
  - reminders
  - external reminders
  - import legacy kanban -> tasks
- Осталось:
  - ручной QA imported legacy tasks
  - ручной QA comments history/edit flow
  - глубже проверить reminders/providers на реальных настройках

### Fleet

- Статус: `Needs QA`
- Есть:
  - list/grid
  - real vehicle media
  - vehicle details
  - maintenance
  - damages
  - docs
  - block/status/location/group updates
  - features metadata
- Missing:
  - **полноценный `Edit Vehicle` modal на базе `Create Vehicle`**
- Осталось:
  - ручной QA vehicle actions/menu
  - ручной QA upload документов/фото/maintenance/damage flows

### Locations

- Статус: `Stable-ish`
- Есть:
  - list/search/filter
  - create/edit/delete
  - working fields для public export
- Осталось:
  - ручной QA row menu и form flow

### Pricing Engine

- Статус: `Needs QA`
- Есть:
  - duration pricing
  - seasonal rules
  - extras
  - promos
  - settings
  - backfilled rates
- Осталось:
  - ручной QA всех modal form flow
  - ручной QA matrix save/edit/delete
  - следить за live pricing data quality

### Documents

- Статус: `Stable-ish`
- Есть:
  - templates
  - editor
  - signed documents
  - preview client view
- Осталось:
  - ручной QA template save/edit/delete
  - ручной QA signed-documents lifecycle через public portal

### Content & CMS

- Статус: `Needs QA`
- Есть:
  - pages/articles/faq/media/translations
  - offers/services/reviews/home blocks
  - public export layer
- Осталось:
  - ручной QA editor/back behavior
  - ручной QA media operations
  - часть public-site contract ещё остаётся вне CRM UI

### Communications

- Статус: `Stable-ish`
- Есть:
  - templates
  - providers
  - send test
  - auto dispatch jobs
  - delivery log
- Осталось:
  - реальная проверка на живых provider credentials
  - ручной QA всех channel/provider states

### Payments

- Статус: `Needs QA`
- Есть:
  - list
  - create payment link
  - quick expense
  - derived payment state
- Осталось:
  - ручной QA `Create Payment Link`
  - ручной QA `Quick Expense`
  - проверить UX derived ledger против реальных кейсов

### Reports

- Статус: `High Risk / Needs QA`
- Есть:
  - KPI
  - trend
  - team performance
  - exports
  - scheduled reports
- Осталось:
  - полный ручной QA всего раздела
  - проверить все range presets
  - проверить custom range
  - проверить scheduled reports create/edit/delete
- Причина высокого риска:
  - именно здесь уже всплывали грубые UX и logic ошибки

### Settings & Roles

- Статус: `Stable-ish`
- Есть:
  - roles
  - extras
  - settings
  - audit log
  - permission-aware UI
- Осталось:
  - ручной QA role/settings flows
  - deeper QA permission UX

### Public Booking

- Статус: `Stable-ish`
- Есть:
  - token portal
  - sign
  - checkout
  - lookup
- Осталось:
  - ручной QA portal flow end-to-end

## Public Site Block

Это **не CRM UI**, но крупный незакрытый блок:

- public fleet export contract
- vehicle marketing fields
- search merchandising fields
- extras marketing metadata
- location marketing content
- FAQ public metadata
- route-level SEO export
- dedicated corporate lead type
- static token deep-link contract

Источник: [open-items.md](/Volumes/Dev/apps/hub.bent.ge/docs/open-items.md)

## Что уже поймано как риск по коду

Это не “точно сломано”, но это места, которые нельзя считать закрытыми без ручного прохода:

- в нескольких разделах всё ещё есть compatibility hooks на `route.query` для deep-link/open state:
  - `Bookings`
  - `Clients`
  - `Fleet`
  - `Tasks`
  - `Payments`
  - `Timeline`
  - `Content`
  - `Leads`
- есть mailto-based actions:
  - `Bookings`
  - `Inbox & Leads`
  - `Booking Details`
  - `Create Booking`
- в `Fleet` нет полноценного `Edit Vehicle` flow

## Правильный следующий режим работы

Никаких новых широких фич, пока не будет стабилизации.

Порядок:
1. `Reports`
2. `Timeline`
3. `Bookings`
4. `Clients`
5. `Fleet`
6. Потом остальное по остаткам

Для каждого модуля:
- ручной QA сценариев
- фиксы до чистого прохода
- только потом переход дальше
