16. Франшиза: что в legacy мешает франшизе¶
Дата актуализации: 11 сентября 2026 года.
Legacy-система рассчитана на одно юридическое лицо. Ниже — найденные ограничения и то, как они снимаются в новой платформе. Бизнес-модель франшизы — в документе Франшиза, модель данных, требования к секретам и денежный контур — в модели франчайзинга, изоляция доступа — в модели административного доступа.
Пути указаны от корня соответствующего legacy-репозитория: backend (Laravel), payment, user,
menu (Go), notification (TypeScript).
| # | В legacy | В новой платформе | Состояние |
|---|---|---|---|
| 1 | iiko — один глобальный комплект учётных данных: IIKO_API_KEY, IIKO_APP_ID, IIKO_SECRET (backend/config/iiko.php). Организации и пиццерии различаются только ID. Жёстко заданы call_center_id — организация call-центра ГК, на которую записываются все заказы (backend/config/iiko.php), — и GUID типов оплаты (backend/app/Services/Integrations/Sberbank/PaymentEnum.php). В аккаунте iiko другого юрлица этих ID нет |
iiko.connection с неизменяемым legal_entity_id и собственным apiLogin; организации импортируются по каждому подключению. Заказ уходит в организацию своего ресторана, call-центр ГК в маршруте не участвует. ID, специфичные для аккаунта iiko, в код не зашиваются |
подключения и импорт организаций реализованы; шифрование apiLogin — до боевых аккаунтов; соответствие типов оплаты не решено |
| 2 | ЮKassa: шов заложен, но не реализован. backend вызывает payment по PAYMENT_URL и передаёт store_id = pizzeria.iiko_transport_id. Интерфейс UkassaCredsResolver.FindUkassaCreds(ctx, storeId) есть, но EnvCredsResolver игнорирует storeId и берёт реквизиты из env (payment/internal/domain/services/ukassa/creds_resolver.go); UkassaCredsRepository.FindByStoreId не реализован |
реквизиты ЮKassa хранятся на уровне юрлица в зашифрованном виде и выбираются по ресторану заказа до создания платежа | запланировано |
| 3 | СБИС привязан к одному юрлицу: SbisClient строит URL из единственного config('org.inn'), учётные данные единственные (backend/config/org.php, backend/config/sbis.php) |
платформа чеки не пробивает, а только показывает покупателю чек из ОФД ФЧ | запланировано |
| 4 | SMS через единый аккаунт smsc.ru, настройки продублированы в backend/app/Services/Integrations/Sms/SmsService.php и user/config.yml |
один аккаунт ГК, одна интеграция в модуле уведомлений (10-notifications.md) | запланировано |
| 5 | user-сервис централизует клиентские коммуникации: связь клиента с Telegram, MAX и SMS, выбор канала, боты, JWT, капча (backend/app/Services/Integrations/UserService/NotificationClient.php, user/config.example.yml) |
модель сохраняется: единая учётная запись покупателя сети (customer), каналы уведомлений у ГК; ФЧ видит только данные своих заказов |
запланировано |
| 6 | Служебные чаты глобальные: TELEGRAM_ORDERS_CHAT_ID, TELEGRAM_EXPECTATIONS_CHAT_ID, TELEGRAM_STOP_LISTS_CHAT_ID в backend/docker-compose.prod.yml и CHAT_ID_* в notification (MAX) — один чат на тип на всю сеть |
канал операционных уведомлений задаёт ФЧ на уровне ФЧ или ресторана; адресация по ролям — 10-notifications.md, ОВ-29 | запланировано |
| 7 | Прецедент реквизитов на точке: payment_login / payment_password в карточке пиццерии (backend/app/Orchid/Layouts/Pizzeria/Sberbank.php, backend/app/Models/PizzeriaInfo.php) — legacy-эквайринг Сбербанка, в текущем потоке не используется |
не переносится: платёжные реквизиты живут на юрлице, а не на ресторане | — |
| 8 | Владелец в YML-фиде зашит: ООО "Чибо Буоно", город и пиццерия по умолчанию (backend/config/yml.php) |
продавец определяется юрлицом ресторана; правило для сетевого фида не решено | не решено |
| 9 | Нет сущности «франчайзи» или «юридическое лицо», оси разделения — только pizzeria и city |
модули franchise и restaurant |
franchise реализован; restaurant — каркас |
| 10 | Production-конфигурация — один набор реквизитов (backend/docker-compose.prod.yml) |
реквизиты юрлиц — в БД зашифрованно, в env только глобальные сервисы и мастер-ключ | шифрование запланировано |
| 11 | Общие интеграции: DaData, Elasticsearch, GeoIP, SmartCaptcha, SMTP, Sentry, Redis, хранилище, notification, menu, телефония, админка |
остаются глобальными сервисами ГК; телефония отложена и остаётся вне платформы | — |
| 12 | Параллельно существовала заготовка v2 — было не решено, где делать франшизу | франшиза реализуется в v2: monolith, admin, franchise-lk |
— |