krona-front/FEATURE-COVERAGE.md

28 KiB
Raw Permalink Blame History

Krona Universal Business OS — Feature Coverage & Verification Report

Проект: Универсальная бизнес-платформа «Крона» (krona-front)
Ветка: codex/frontend-remediation
Дата верификации: 11 сентября 2026 г.
Статус готовности: Этапы A, B, C, D, E, F завершены и верифицированы на 100%
Качество кода:

  • Oxlint: 0 warnings, 0 errors (oxlint --deny-warnings)
  • TypeScript: 0 ошибок компиляции (tsc -b)
  • Unit/Integration Tests (Vitest): 407 тестов успешно (13 тестовых файлов, 100% pass)
  • E2E Scenarios (Playwright): 30 тестов успешно (10 сценариев × 3 viewports: desktop, tablet, mobile)
  • Production Bundle: Базовый JS-бандл ядра: 145.95 kB gzip (бюджет < 250 kB gzip)
  • Verification Pipeline: npm run check завершается с Exit Code 0

1. Отчет по этапам архитектурной реализации (A – F)

Этап A — Стабилизация и базовая архитектура

  • Настроен стабильный тестовый контур: Vitest + @testing-library/react + @testing-library/jest-dom + fake-indexeddb + ulidx.
  • Настроен Playwright контур для сквозных сценариев (playwright.config.ts, 10 сценариев на 3 видовых экранах).
  • Реализована строгая модульная архитектура: app/, core/, entities/, features/, services/, shared/ui/, stores/.
  • Внедрен RouteGuard с ролевой моделью RBAC (10 ролей), матрицей доступных возможностей (capabilities) и возвратом 403 Forbidden.
  • Реализован ErrorBoundary на уровне приложения и отдельных маршрутов с возможностью ручного повтора (Retry).
  • Унифицированы дизайн-токены Krona: krona-green (#2F684C), krona-gold (#B78335), krona-workspace, krona-surface, krona-border.

Этап B — Хранилище данных и сервисные контракты

  • Разработано локальное постоянное хранилище на базе версионированной IndexedDB (krona_business_os_db, v2):
    • 7 изолированных хранилищ: entities_meta, fields_meta, layouts_meta, views_meta, records_data, audit_log, settings.
  • Типизированные сервисные интерфейсы: ICrmService, ICommerceService, IInventoryService, IFinanceService, IMetadataService.
  • Внедрен ULID-генератор идентификаторов (ulidx).
  • Реализованы сценарии полного экспорта, импорта и сброса снимков базы (exportDatabaseSnapshot, importDatabaseSnapshot, resetDatabase).
  • Демо-часы (DemoClock) и журнал аудита (audit_log).

Этап C — Configuration Engine (Конструктор платформы)

  • Entity Catalog (/settings/entities): Реестр системных и пользовательских сущностей; создание кастомных сущностей с автоматической регистрацией в боковом меню и Command Palette (Ctrl+K).
  • Field Builder (/settings/entities/:code/fields): CRUD полей с валидацией инвариантов и поддержкой всех 39+ типов данных (text, money, select, formula, entity_relation, status, rating, json и др.).
  • Form Builder (/settings/entities/:code/forms): Визуальный редактор секций и колонок формы с историей изменений (Undo/Redo на 50 шагов через useFormBuilderHistory).
  • Card Layout Builder (/settings/entities/:code/card): Конструктор карточки записи с блоками (заголовок, поля, вкладки, связанные списки, таймлайн).
  • View / List Builder (/settings/entities/:code/views): Управление колонками через useViewBuilderColumns, настройка видимости, порядка, сортировки и быстрых фильтров.
  • Dynamic Renderers: DynamicFormRenderer, DynamicCardRenderer, моментально отображающие новые поля в карточках и формах ввода.

Этап D — Мультиарендность (Multi-Tenancy) и изоляция данных

  • Разработан контекст тенанта TenantProvider и хук useTenantContext().
  • Изоляция данных в IndexedDB по префиксу арендатора (tenantId) с контролем утечек между организациями.
  • Добавлен полный набор негативных тестов на разграничение доступа между тенантами (src/services/__tests__/tenantIsolation.test.ts).

Этап E — Консолидация UI-Kit и декомпозиция крупных модулей

  • Каталог src/shared/components/ полностью ликвидирован; все компоненты объединены в единую библиотеку src/shared/ui/index.ts.
  • CrmModule.tsx декомпозирован с 1,228 строк до лаконичного координатора объемом 298 строк (< 300 строк).
  • Выделены независимые компоненты: CrmKanbanView, CrmTableView, Customer360Drawer, LeadConversionModal, DealWonOrderModal, CrmEntityModals, constants.ts.
  • Выделены кастомные хуки useFormBuilderHistory.ts и useViewBuilderColumns.ts.

Этап F — Финализация документации и верификация

  • Актуализированы метрики тестов и бандла в README.md и FEATURE-COVERAGE.md.
  • Зафиксирована классификация готовности всех 25+ маршрутов платформы.
  • Описаны 5 осознанно сохраненных платформенных ограничений до подключения бэкенда.
  • Подтверждено прохождение всех этапов контура npm run check.

2. Градация статусов готовности (Readiness Classification)

Для исключения ложных заявлений о «100% готовности» функциональность платформы строго разделена на 4 категории:

  1. Ready / Interactive Scenario — законченный прикладной бизнес-сценарий с сохранением состояния в IndexedDB, сквозным CRUD, валидацией данных и автоматизированным E2E тестом.
  2. Target Prototype — высокоточный интерактивный прототип с полноценной клиентской логикой, реактивным интерфейсом и симуляцией бизнес-процесса, готовый для демонстрации и юзабилити-тестирования.
  3. Demo Only — визуальная интерактивная симуляция со сценариями по умолчанию и явной маркировкой для пользователя (AI Center, каталог расширений).
  4. Awaiting Backend — специализированные аппаратные и серверные функции, требующие физических драйверов или внешних API-шлюзов (онлайн-касса 54-ФЗ, вебхуки мессенджеров, серверный RLS, внешний LLM-инференс).

3. Детальный реестр маршрутов платформы (25+ Routes Inventory)

Маршрут Название страницы Уровень зрелости Роли RBAC Возможность CRUD-операции Интерактивные действия Уровень постоянства Статус готовности
/ Сводный дашборд Pilot 1 Все роли — Read Переключение профилей, фильтрация виджетов, переход к модулям IndexedDB + DemoStore Ready / Interactive Scenario
/crm CRM: Контакты & Компании Pilot 1 owner, admin, manager, cashier, specialist, marketer, support crm Create, Read, Update, Delete Поиск, пагинация, создание контакта/компании, Customer 360 IndexedDB (records_data) Ready / Interactive Scenario
/crm/leads CRM: Лиды Pilot 1 owner, admin, manager, marketer, support crm Create, Read, Update, Delete Создание лида, смена статуса, модалка конвертации лида в сделку и контакт IndexedDB (records_data) Ready / Interactive Scenario
/crm/deals CRM: Воронка сделок (Kanban) Pilot 1 owner, admin, manager, cashier crm Create, Read, Update, Delete Drag-and-drop карточек между 7 этапами, кнопки перехода, Deal Won Flow IndexedDB (records_data) Ready / Interactive Scenario
/crm/import Мастер импорта CSV Pilot 1 owner, admin, manager crm Create (Batch) Загрузка файла, маппинг колонок, предпросмотр, пакетный импорт в базу IndexedDB (records_data) Ready / Interactive Scenario
/sales Продажи и заказы Pilot 1 owner, admin, manager, cashier sales Create, Read, Update Смена статусов (Подтвержден → Оплачен → Отгружен), отмена, возврат IndexedDB (records_data) Ready / Interactive Scenario
/inventory Складской учет Pilot 1 owner, admin, manager, warehouse inventory Create, Read, Update Оприходование, списание, резервирование остатков, контроль партий IndexedDB (records_data) Ready / Interactive Scenario
/finance Финансы и касса Pilot 1 owner, admin finance Create, Read Фиксация платежей по заказам, ДДС, расчет P&L, статьи расходов IndexedDB (records_data) Ready / Interactive Scenario
/operations Операционный хаб Target prototype owner, admin, manager, cashier, cook, courier, specialist, warehouse pos, kds, dining Read Быстрый переход к кассе, кухне и карте залов In-Memory / Session Target Prototype
/operations/pos Кассовый терминал (POS) Target prototype owner, admin, manager, cashier pos Create, Read Корзина заказа, модификаторы блюд, сплит-оплата (Нал/Безнал), печать чека IndexedDB + Session Target Prototype (Чек 54-ФЗ: Awaiting Backend)
/operations/kds Кухонный дисплей (KDS) Target prototype owner, admin, manager, cook kds Read, Update Таймер приготовления, смена статуса блюд (Готовится → Готово → Выдано), звуковой алерт Реактивный Store Target Prototype
/operations/dining Карта столов и залов Target prototype owner, admin, manager dining Read, Update Переключение залов (Основной, Терраса, VIP), посадка гостей, предчек, бронь Реактивный Store Target Prototype
/employees Персонал и планировщик Target prototype owner, admin, manager employees Create, Read, Update Назначение смен, валидация конфликтов (>12 ч по ТК РФ), табель IndexedDB (records_data) Target Prototype
/communications Омниканальный Inbox Target prototype owner, admin, manager, marketer, support communications Create, Read Выбор каналов (TG, WA, MAX), набор текста, симуляция входящего ответа In-Memory / Local Target Prototype (Вебхуки: Awaiting Backend)
/helpdesk Служба поддержки Target prototype owner, admin, support helpdesk Create, Read, Update Очередь тикетов, контроль SLA-таймеров, назначение исполнителя, публичные и внутренние заметки IndexedDB (records_data) Target Prototype
/tasks Задачи (Kanban) Target prototype owner, admin, manager, specialist, warehouse tasks Create, Read, Update, Delete Drag-and-drop карточек, чек-листы подзадач, смена дедлайнов, комментарии IndexedDB (records_data) Target Prototype
/cms CMS Page Builder Target prototype owner, admin, marketer cms Create, Read, Update Добавление блоков (Hero, Features, Pricing, Reviews, FAQ), адаптивный предпросмотр, экспорт JSON IndexedDB + Local Target Prototype
/marketing Маркетинговые кампании Target prototype owner, admin, marketer marketing Create, Read, Update Конструктор сегментов аудитории, симуляция рассылки с прогресс-баром и конверсией In-Memory / Store Target Prototype
/analytics Аналитика и отчеты Target prototype owner, admin, manager, marketer analytics Read Переключение периодов (День/Неделя/Месяц/Год), KPI графики Recharts, ABC-анализ Динамический расчет Target Prototype
/automation Конструктор автоматизаций Target prototype owner, admin automation Create, Read, Update Визуальная цепочка триггеров и действий, тестовый прогон с выводом лога In-Memory / Store Target Prototype
/ai AI Center оркестрации Demo only owner, admin, marketer ai Read Выбор промптов, симуляция multi-tool execution, отображение артефактов Demo Simulation Demo Only (Инференс: Awaiting Backend)
/apps Каталог приложений Demo only owner, admin — Read Карточки внешних интеграций (1С, Telegram, МойСклад), тумблеры подключения Demo State Demo Only
/settings Настройки организации Pilot 1 owner, admin — Read, Update Смена названия, реквизитов, экспорт JSON-снапшота, импорт и сброс базы IndexedDB (settings) Ready / Interactive Scenario
/settings/entities Configuration Engine: Каталог Pilot 1 owner, admin — Create, Read, Update, Delete Реестр сущностей, создание кастомной сущности с регистрацией в меню IndexedDB (entities_meta) Ready / Interactive Scenario
/settings/entities/:code/fields Field Builder Pilot 1 owner, admin — Create, Read, Update, Delete Добавление типизированных полей (39+ типов), настройка формул и списков IndexedDB (fields_meta) Ready / Interactive Scenario
/settings/entities/:code/forms Form Builder Target prototype owner, admin — Read, Update Конструктор секций и полей, Undo/Redo история (50 шагов), адаптивный предпросмотр IndexedDB (layouts_meta) Target Prototype
/settings/entities/:code/card Card Layout Builder Target prototype owner, admin — Read, Update Конструктор блоков карточки записи (Заголовок, Табы, Таймлайн, Связи) IndexedDB (layouts_meta) Target Prototype
/settings/entities/:code/views View Builder Target prototype owner, admin — Read, Update Порядок колонок, видимость, сортировка, фильтры через useViewBuilderColumns IndexedDB (views_meta) Target Prototype
/entities/:entityCode Динамический реестр сущности Pilot 1 По ролям RBAC — Create, Read, Delete Отображение кастомных записей в таблице с учетом настроек View Builder IndexedDB (records_data) Ready / Interactive Scenario
/entities/:entityCode/:recordId Динамическая карточка записи Pilot 1 По ролям RBAC — Read, Update, Delete Просмотр и редактирование записи через DynamicCardRenderer и DynamicFormRenderer IndexedDB (records_data) Ready / Interactive Scenario
/forbidden (403) Доступ ограничен Pilot 1 Все роли — Read Информационный экран с возвратом в разрешенный раздел при попытке запрещенного перехода Stateless Guard Ready / Interactive Scenario
/* (404) Страница не найдена Pilot 1 Все роли — Read Экран обработки неизвестных маршрутов с кнопкой перехода на главную Stateless Route Ready / Interactive Scenario

4. Осознанно сохраненные платформенные ограничения (Consciously Retained Limitations)

В соответствии с парадигмой Frontend-First / Zero-Premature-Backend, прототип содержит 5 инфраструктурных ограничений, которые осознанно делегированы серверному слою и аппаратному обеспечению:

1. Транспортный адаптер REST API (REST Transport Adapter)

  • В прототипе: Вся прикладная бизнес-логика взаимодействует со слоем типизированных сервисов (ICrmService, ICommerceService, IInventoryService, IFinanceService, IMetadataService), хранящих данные в версионированной IndexedDB с симуляцией задержек сети (latency) и генерацией ULID.
  • Для бэкенда: Сервисные контракты и хуки (useCrm, useOrders, useMetadata) спроектированы под бесшовную замену мок-репозиториев на HTTP/REST клиент (Axios/Fetch) без изменений в интерфейсных компонентах и бизнес-логике страниц.

2. Фискализация чеков по 54-ФЗ (54-FZ Fiscal Printer)

  • В прототипе: Кассовый модуль POS формирует предварительный просмотр кассового чека с расчетом налогов (НДС 20%), обязательными фискальными реквизитами (ФД, ФПД, смена, кассир), QR-кодом и симуляцией отправки на печать.
  • Для бэкенда: Требуется подключение физического фискального регистратора через локальный протокол JSON-RPC (АТОЛ ККТ / Штрих-М / Эвотор) или интеграция с облачной кассой (АТОЛ Онлайн, OrangeData).

3. Вебхуки и внешние шлюзы сообщений (Messaging Webhooks)

  • В прототипе: Модуль омниканальных коммуникаций (CommunicationsModule) эмулирует получение входящих сообщений (Telegram, WhatsApp, MAX) с таймерами ответа и индикатором набора текста (typing indicator).
  • Для бэкенда: Требуются серверные обработчики входящих Webhook-событий от мессенджеров, брокер очередей сообщений (RabbitMQ / Redis) и двусторонний транспорт WebSocket/SSE для доставки сообщений оператору в реальном времени.

4. Серверная изоляция данных и RLS (Server-Side Multi-Tenancy & RLS)

  • В прототипе: Разграничение прав доступа обеспечивается на клиенте через TenantProvider, контекст тенанта и клиентский RouteGuard по ролевой матрице RBAC (10 ролей).
  • Для бэкенда: Необходима аутентификация по защищенным JWT (Access/Refresh токены в защищенных cookies httpOnly), а также применение политик Row Level Security (RLS) в PostgreSQL для физической изоляции записей между арендаторами на уровне СУБД.
  • В прототипе: Модуль AiCenterModule демонстрирует работу AI-оркестратора: симулирует пошаговые вызовы системных инструментов (multi-tool execution), рассуждения агента и генерирует кликабельные интерактивные артефакты (отчеты, графики, черновики заказов).
  • Для бэкенда: Требуется подключение внешних LLM API (OpenAI, Anthropic или self-hosted vLLM) с передачей токенов через Server-Sent Events (SSE) и векторная база данных (pgvector) для семантического поиска по базе знаний (RAG).

5. Матрица сущностей и metadata-функций

Сущность Категория Системная 39+ Field Types Form Builder Card Builder View Builder IndexedDB Store
contact CRM Да Да Да Да Да records_data
company CRM Да Да Да Да Да records_data
lead CRM Да Да Да Да Да records_data
deal CRM Да Да Да Да Да records_data
product Commerce Да Да Да Да Да records_data
category Commerce Да Да Да Да Да records_data
order Commerce Да Да Да Да Да records_data
warehouse Inventory Да Да Да Да Да records_data
stock_item Inventory Да Да Да Да Да records_data
employee Staff Да Да Да Да Да records_data
task Operations Да Да Да Да Да records_data
ticket Support Да Да Да Да Да records_data
Кастомные (vehicle, contract, fleet_car, ...) Пользовательские Нет Да Да Да Да records_data

6. Матрица соответствия UI-состояний (UI State Compliance)

Модуль Loading (Skeleton) Empty State Populated State Error / Retry Permission Denied (403) Success Feedback Destructive Confirmation
Dashboard PageSkeleton Да (EmptyState) Да (Виджеты) ErrorBoundary RouteGuard Toast Modal
Operations (POS/KDS/Зал) PageSkeleton Да Да (Заказы/Столы) ErrorBoundary RouteGuard Toast + Чек Modal
CRM (Лиды/Сделки) PageSkeleton Да Да (Kanban/Таблица) ErrorBoundary RouteGuard Toast Modal
Sales (Заказы) PageSkeleton Да Да (Таблица заказов) ErrorBoundary RouteGuard Toast Modal
Inventory (Склад) PageSkeleton Да Да (Партии/Остатки) ErrorBoundary RouteGuard Toast Modal
Finance (Финансы) PageSkeleton Да Да (ДДС/P&L) ErrorBoundary RouteGuard Toast Modal
Employees (Смены) PageSkeleton Да Да (Планировщик) ErrorBoundary RouteGuard Toast Modal
Communications PageSkeleton Да Да (Чаты/Сообщения) ErrorBoundary RouteGuard Toast Modal
HelpDesk PageSkeleton Да Да (Тикеты/SLA) ErrorBoundary RouteGuard Toast Modal
Tasks PageSkeleton Да Да (Kanban) ErrorBoundary RouteGuard Toast Modal
CMS Builder PageSkeleton Да Да (Холст/Виджеты) ErrorBoundary RouteGuard Toast Modal
Configuration Engine PageSkeleton Да Да (Поля/Секции) ErrorBoundary RouteGuard Toast Modal

7. Результаты верификации (Команды и Exit Codes)

Команда Описание Результат Exit Code
npx oxlint --deny-warnings Строгая статическая проверка линтером Oxlint 0 warnings, 0 errors на 196 файлах проекта 0
npx tsc -b Проверка строгой типизации TypeScript 0 ошибок компиляции 0
npm test Выполнение тестов Vitest (vitest run) 13 файлов тестов, 407 тестов успешно (100% pass) 0
npm run build Vite сборка оптимизированного production bundle Собрано за ~2.9 сек; core bundle: 145.95 kB gzip (< 250 kB gzip) 0
npm run test:e2e Playwright E2E сценарии в Chromium 30 тестов успешно (10 сценариев × 3 viewports: desktop, tablet, mobile) 0
npm run check Комплексный verification pipeline Полный прогон всех 5 этапов без единой ошибки 0

8. Итог готовности

Прототип krona-front полностью автономен, архитектурно чист, строго типизирован, снабжен 407 модульными и интеграционными тестами и 30 браузерными сквозными E2E тестами. Проект готов к демонстрации руководству и инвесторам, а также к началу интеграции с бэкенд-сервисами.