[EPIC-IAD-002] Multi-Tenancy & Group Domain Bounding

Разделение арендаторов, логика наследования прав и управление контурами HOME/OFFICE

Author

IAD Domain Lead / FoodLifeCycle Team

Published

July 13, 2026

NoteКраткая карточка эпика
  • Эпик: (EPIC-IAD-002)
  • Компоненты: auth-identity-service, Kafka (KRaft), Mobile App, Auth_db
  • Статус: Готово к реализации
  • Направление связи: IAD \(\rightarrow\) Kafka (bpds.iad.out.group.change) \(\rightarrow\) Смежные сервисы

Бизнес-контекст и цель (Business Context)

Система BPDS обязана строго разделять данные семей и корпоративных клиентов. Этот эпик изолирует логику создания орг-структур (групп). Тип контура (HOME или OFFICE) и системный home_group_id пакуются в JWT-токен на этапе авторизации. При изменении состава группы (добавление/удаление участника) IAD отправляет асинхронное out-событие в Kafka для синхронизации кэша прав в смежных БД.

Список атомарных задач:

  • [Migrations] Схема орг-структур [Метод 1]: Создание DDL-миграции связей групп, ролей участников и флагов тарификации (002_init_group_tenants.sql).
  • [Backend] Метод создания группы [Метод 2]: Реализация эндпоинта инициации новой группы с выбором режима HOME/OFFICE (create_group.py).
  • [Backend] Метод приглашения пользователей [Метод 3]: Реализация эндпоинта генерации инвайт-ссылок и проверки прав доступа (invite_user.py).
  • [Backend] Эмиттер событий изменения групп [Метод 4]: Интеграция Кафка-продюсера для отправки фактов изменений в топик bpds.iad.out.group.change (group_event_producer.py).
  • [Backend] Консьюмер ИИ-банов [Метод 5]: Реализация слушателя топика bpds.aid.out.profanity.violate. При получении сигнала от ИИ-цензора мгновенно блокирует user_id и сбрасывает его сессию в Redis (profanity_ban_handler.py).
  • [Frontend] Экран управления Семьей/Офисом [Экран 1]: Разработка интерфейса добавления сотрудников/родственников и отображения текущего типа контура (group_management_screen.dart).