28 KiB
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.
- 7 изолированных хранилищ:
- Типизированные сервисные интерфейсы:
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 категории:
Ready / Interactive Scenario— законченный прикладной бизнес-сценарий с сохранением состояния в IndexedDB, сквозным CRUD, валидацией данных и автоматизированным E2E тестом.Target Prototype— высокоточный интерактивный прототип с полноценной клиентской логикой, реактивным интерфейсом и симуляцией бизнес-процесса, готовый для демонстрации и юзабилити-тестирования.Demo Only— визуальная интерактивная симуляция со сценариями по умолчанию и явной маркировкой для пользователя (AI Center, каталог расширений).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 для физической изоляции записей между арендаторами на уровне СУБД.
5. Полноценный инференс нейросетей (Real AI LLM Inference & Vector Search)
- В прототипе: Модуль
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 тестами. Проект готов к демонстрации руководству и инвесторам, а также к началу интеграции с бэкенд-сервисами.