Не реализовано vs YumaPOS

Сопоставление фичелиста _reference/yumapos/ с реальным кодом в репозиториях (не со спеками). Проверка сделана по: erp-auth/user/store/catalog/warehouse/order/aggregator/customer-service + erp-admin + erp-pos.

Легенда:

  • ✅ реализовано в коде
  • 🟨 частично (backend или UI, но не оба; или скелет без контракта)
  • ❌ нет в коде
  • ⚪ PayKeeper (не наша зона)
  • ❄️ frozen (erp-pos по ADR-014)

Заказы и операционный поток

ФичаСтатусГде
Active orders CRUDerp-order-service/entity/Order.java, controller/OrderController.java; erp-admin/pages/orders/ActiveOrdersPage.tsx
Order history + статусыpages/orders/OrderHistoryPage.tsx
Order detailpages/orders/OrderDetailPage.tsx
Cancelled orders workflowOrderController.cancelOrder(), поля cancel_reason/cancelled_at
Refunds APIerp-admin/api/refunds.ts
X/Z отчёты смены (event-уровень)erp-order-service/controller/InternalShiftController.java публикует shift.closed в Kafka
Shift Monitor (открытые/закрытые)pages/shifts/ShiftMonitorPage.tsx — автореfresh 30с, статусы «скоро 24h / Z!»
Shift Report (X/Z в UI)pages/shift-report/ShiftReportPage.tsx — финансы смены, топ товаров, CSV-экспорт
Transaction Journal (UI)🟨pages/transactions/TransactionJournalPage.tsx есть, но backend endpoint GET /api/v1/admin/transactions отсутствует (404)
Persistent Shift (entity)🟨публикуются только события — сущности смены в БД нет
Repeat order
Автозакрытие заказов

Доставка

ФичаСтатусГде
Dine-in: столы / места / перенос позицийpages/stores/TablesSection.tsx — canvas с drag&drop, статусы free/occupied/reserved, привязка заказа
Dine-in POS-клиент❄️erp-pos/mobile/src/screens/TablesScreen.tsx (frozen)
Aggregator orders приёмpages/stores/IntegrationsSection.tsx + aggregator-service webhook
Delivery zonesНет сущности DeliveryZone в store-service
ETA (расчёт в order)Нет поля estimated_delivery_time
Delivery chargesНет поля delivery_fee в Order
Calculate delivery time
Online orders flow (сайт/app)
Offline mode❄️erp-pos/mobile/src/transaction/TransactionStore.ts (SQLite + sync queue, frozen)

Кухня / KDS

ФичаСтатусГде
Kitchen Queue UI (Kanban + ETA)pages/kitchen/KitchenQueuePage.tsx — 3 колонки, полинг 10с, цветовая индикация ETA
POS Kitchen Queue❄️erp-pos/mobile/src/screens/KitchenQueueScreen.tsx (frozen)
YumaKitchen Android-приложение (отдельное)
Kitchens (цеха: горячий/холодный/бар)Нет сущности Kitchen в catalog
Kitchen printers + маршрутизация
Labels (печать КБЖУ-этикеток)

CRM / Клиенты / Лояльность / Маркетинг

ФичаСтатусГде
Customers CRUDerp-customer-service/controller/CustomerController.java
Customer groups (static + dynamic с rules_json)CustomerGroup.java + CustomerGroupMember.java + recompute-scheduler
Merge duplicate customersCustomerController.merge()
Customer addresses CRUD/api/v1/customers/{id}/addresses
Internal search by phone/internal/customers/search-by-phone
Quick-create customer/internal/customers/quick-create
Customers UI в админкеПапки pages/customers/ нет
Loyalty programsСервиса erp-loyalty-service нет
Points (баллы)
Discounts (ручные + акционные)
Promotional campaigns
Promotional broadcasts (email/push/SMS)
One-time promo codes
Gift cards
House account (оплата в кредит)

Склад и производство (erp-warehouse-service)

ФичаСтатусГде
Inventory items (остатки)StockBalance.java, StockController.java
Acceptance-acts (приёмки)ReceiptAct.java, статусы draft/posted
Write-off-acts (списания)WriteOffAct.java
Units of measurement (с конвертацией)UnitConversion.java, UnitConversionController.java
Inventory acts (инвентаризация факт vs план)
Stock-transfer-acts (перемещения между складами)
Returns-acts (возвраты поставщикам)
Purchase orders (заказы поставщикам)
Contractors (справочник поставщиков)
Production orders (фабрика-кухня)
Refactor acts (переработка полуфабрикатов)
Wholesale-acts / wholesale price lists
Expenditure / income items
Actualizing inventory (bulk-обновление)🟨FIFO/LIFO при приёмке есть, bulk-операции нет
Beer keg

Каталог (erp-catalog-service)

ФичаСтатусГде
Items / categories / modifiers / recipes / price-lists / stop-listsBR 1.7–1.13
Calorie count (КБЖУ: ккал/белки/жиры/углеводы)поля в Product.java (строки 63-73), миграция 019-extend-products.xml
Product флаги (open_price, by_weight, exclude_from_promo, manual_discount_banned, admin_only)ProductEditPage
Tags (метки для товаров)
Daily menu (временное меню)
АллергеныОтдельного поля нет (есть только КБЖУ)
Menu visibility rules (по времени / каналу)🟨частично через стоп-листы/прейскуранты, не полноценно
Taxes (модуль налогов)PayKeeper (vat_rate в товаре)

Финансы

ФичаСтатусГде
Legal entities (ЮЛ)erp-user-service/entity/LegalEntity.java, LegalEntityController.java, import из CSV
Cash drawerPayKeeper
Cash balance (сводка наличных по ТТ)
Cash flows (доходы/расходы/переводы)Сервиса erp-finance-service нет
Finances dashboard

Отчёты и аналитика

ФичаСтатусГде
Employee Activity dashboardpages/activity/EmployeeActivityPage.tsx — смены/часы/начисления
Terminals Dashboardpages/activity/TerminalsDashboardPage.tsx — кассиры, выручка, live через Kafka shiftMonitor
Shift Report (X/Z-детализация)pages/shift-report/ShiftReportPage.tsx — финансы, топ товаров, CSV
User Service Dashboard endpointDashboardController.java → BFF /api/v1/dashboard/activity (кэш в admin-bff)
Admin Dashboard (главный экран)🟨pages/DashboardPage.tsx есть, но показывает только приветствие и user info — не KPI/метрики
Detailed sales reports (по дням/ТТ/сотрудникам)Нет pages/reports/
Customer revenue report
LTV report
Item ingredients report (расход)
Production report
Cost & margin report
Transaction Journal backend🟨UI есть, endpoint /api/v1/admin/transactions возвращает 404

Интеграции

ФичаСтатусГде
Aggregator skeleton (Menu sync + Stoplist + Webhook + Status push)erp-aggregator-service (M2 skeleton)
Яндекс.Еда connector🟨YandexEdaConnector.java — stub, ждёт контракт
Маркет Деливери (МД) connector🟨аналогично
Aggregator Bindings CRUD/binding/:id — OAuth-credentials per restaurant
PayKeeper adapter (новый сервис)Пока не создан
1С интеграция
Export to Excel / XML / PDFТолько CSV в payroll + shift-report
E-invoicing (ЭДО)
Telfin / VoIP / call-центр

Документооборот

ФичаСтатусГде
Documents (акты warehouse со статусами draft/posted)🟨частично — только Receipt/WriteOff с двумя статусами, без рабочего процесса утверждения
Document types / supported doc types
Recording / unrecording (проводка / откат)
Confirm documents (ролевое утверждение)
Message / document history

Уведомления

ФичаСтатусГде
Notification center / push settings / event messages / manual broadcasts / historyСервиса erp-notification-service нет

Customer-facing

ФичаСтатусГде
Мобильное приложение клиентаРепо erp-customer не существует
Customer BFF (:3021)
Website settings (брендирование, контент)
SEO (мета-теги, robots)
QR-codes (стол / персональный клиента)

Настройки и администрирование

ФичаСтатусГде
Register stores (расширенные)BR 1.5 + 1.6, pages/stores/* (CRUD + import)
POS-терминалы на ТТpages/stores/TerminalsSection.tsx — привязка по ФН/РН ККТ
Aggregator integrations на ТТpages/stores/IntegrationsSection.tsx
System settings (налоги, лимиты, регистрация)🟨частично в franchise + CLAUDE.md
Advanced parameters (зоны / залы / регионы)

Регулятивные

ФичаСтатусГде
Marked items в каталоге (is_marked)Product
ЕГАИС (алкоголь)PayKeeper
Честный Знак / Honor / ТС ПИоТPayKeeper

Сотрудники и роли

ФичаСтатусГде
Франшизы с типом corporate/individualFranchise.java, поле type
Legal entities CRUD + soft delete + suspend + main LE + importerp-user-service/entity/LegalEntity.java + UI
Employees CRUD + scope (ТТ/роли) + статусыpages/employees/*
Roles permission-based (POS + бэк-офис + формулы зарплаты)pages/roles/*
Schedule (графики смен)ScheduleController.java, ShiftSchedule.java, ShiftTemplate.java; UI pages/schedule/SchedulePage.tsx + ShiftTemplatesPage.tsx
Payroll + Salary FormulasPayrollController.java, SalaryFormula.java; UI pages/payroll/PayrollPage.tsx + SalaryFormulasPage.tsx; CSV-экспорт
Time tracking (clock in/out, breaks, auto-close)ShiftRecord.java, ShiftRecordController.java, ShiftAutoCloseJob
Anti-theft controls

Аутентификация

ФичаСтатусГде
Login + logoutpages/LoginPage.tsx, LoginController
Forgot passwordpages/auth/ForgotPasswordPage.tsx
Reset passwordpages/auth/ResetPasswordPage.tsx
No Access pagepages/NoAccessPage.tsx

Оборудование

ФичаСтатусГде
Hardware / devices / payment-terminals / card-readers / fiscal-printers / check-printersPayKeeper

Ключевые расхождения документации и кода

  1. X/Z отчёты смены — числились 🟨 draft. По факту реализованы: backend публикует shift.closed в Kafka, UI имеет Shift Monitor + детальный Shift Report с финансами и топом товаров.
  2. Cancelled orders workflow — числился . По факту есть OrderController.cancelOrder() + поля в БД + UI.
  3. Dine-in столы — числился . По факту есть полноценная визуализация в TablesSection (admin) + экран в POS (frozen).
  4. Kitchen Queue / KDS — числился . По факту есть Kanban-UI в админке с ETA-расчётом.
  5. Customers list + groups + merge — числились 🟨 draft. По факту CRUD реализован в erp-customer-service, UI в админке отсутствует.
  6. Calorie count (КБЖУ) — числился . По факту есть поля ккал/белки/жиры/углеводы в Product.
  7. Units of measurement — числился 🟨 частично. По факту полноценная сущность UnitConversion в warehouse-service.
  8. Schedule / Payroll / Time tracking — числились 🟨 in_progress. По факту всё реализовано с UI, формулами, CSV-экспортом.
  9. Transaction Journal — UI есть (TransactionJournalPage.tsx), но backend endpoint /api/v1/admin/transactions возвращает 404.
  10. Activity dashboards (Employees + Terminals) — не были в списке, по факту есть.
  11. Aggregator Service — числился 🟨. По факту M2-skeleton с menu/stoplist/webhook есть, ждёт контракта Я.Еда.
  12. Offline mode в POS — в erp-pos/mobile есть полная реализация через SQLite (TransactionStore), заморожено по ADR-014.