Перейти к содержанию

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 —