Family Backend — мінімальний план

#TODO — сторінка сира. Структура є, але опис кожної секції треба пройти і звірити з реальним кодом / партнерськими контрактами. Помітки shared? — поки кандидати на обговорення, не рішення.

Карта того що має бути в новому Family-беку коли стартує новий партнерський проєкт (як зараз golden / prime / udate / chathouse). Один екран — мінімум сервісів, очікуваний партнерський API, і помітки що варто винести в спільний мікросервіс.

Family-моноліт — повноцінний бек на один бренд: своя БД, свій набір ui-triggered сервісів, свої workers, інтеграція з партнерським API. Контракт — у Swagger. Зразок — stack-golden.

Стандартний набір ui-triggered сервісів

Дзеркало UI з stack-client (ui-family/*) + специфічні для Family контракти. Один controller, обернутий у @JsonController('/path').

СервісПризначенняМітка
adminАдмін панель
authFamily-специфічна авторизація поверх stack-auth
agencyСписок RU які робили витрати
ladyУправління TU
manУправління RU
global-manВсі RUshared?
operatorУправління операторами
supervisorУправління тімлідами
top-managerTop-manager функції
taskТаски
workspaceРобочий простір
dashboardDashboard метрики
favoritesФаворити
requestТочка для запитів
statisticsСтатистика
metricМетрики поверх ClickHouseshared?
online-analysis / online-timeАналіз і облік онлайнуshared?
analystАналітика для аналітика-ролі
ai-notesAI-нотатки оператора
error-reportЗбір помилок з UI
debugDebug-ендпоінти (dev only)

Мітка shared? — логіка схожа в усіх Family. Кандидат на винесення в окремий мікросервіс щоб не дублювати (див. секцію нижче).

Стандартний набір workers

Фонові задачі по таймеру/події. Bull-черги поверх Redis.

WorkerПризначенняМітка
download-main-statisticsРегулярне завантаження статистики з партнерського API
download-temp-statisticsЗавантаження тимчасової (поточний день) статистики
check-family-ladiesПеріодична перевірка стану TU
update-data-family-ladiesОновлення даних TU з партнерського API
update-temp-onlineОновлення тимчасового онлайн-стануshared?
getting-onlineЗбір онлайн-статусівshared?
generate-dashboardАґрегація для dashboard
job-close-operator-taskBull-job для закриття задач оператора

Інтеграції

ІнтеграціяОпис
official-apiHTTP-клієнт до партнерського API (див нижче)
clickhouseOLAP-сховище аналітики (read+write)
rmqRabbitMQ events із stack + electron + інші Family

Очікуваний партнерський API

Мінімум що партнер має надати щоб ми взагалі змогли побудувати Family-бек. Якщо чогось нема — або просимо в партнерів додати, або робимо костиль і ставимо #fix.

Еталон контракту — Prime / Chathouse (стабільні, єдина точка документації). Goldenbride — повний обсяг, але контракт нестабільний (#fix у golden/integrations/official-api). UDate — поки не задокументовано.

Auth

  • POST /auth/login{id_api, password} → JSESSIONID + cookie
  • GET /auth/check — перевірка сесії
  • Stack кешує session per TU (ladyId_api).

TU (профіль і медіа)

  • GET /ladies/list — список TU агенції
  • GET /ladies/{ladyId} — деталі TU
  • POST /ladies/update — оновити профіль/фото
  • POST /ladies/photos/upload — завантажити фото

Чати

  • GET /chats/dialog/{ladyId}/{manId} — повний діалог
  • POST /chats/send — відправити повідомлення
  • GET /chats/invites/{ladyId} — список запрошень

Mail

  • GET /mail/folders/{ladyId} — папки (inbox / sent / draft / trash)
  • GET /mail/letters/{ladyId}/{folder} — список листів
  • POST /mail/send — відправити лист
  • POST /mail/attachments/upload — вкладення

Online + статистика

  • GET /online/{ladyId} — поточний онлайн-статус
  • GET /statistics/{ladyId}/daily/{date} — статистика дня
  • GET /statistics/{ladyId}/period?from=&to= — період

Якщо новий партнер пропонує сильно інший контракт — потрібен окремий integration-шар який нормалізує під цей набір.

Кандидати на спільний мікросервіс

Логіка яка зараз дублюється в кожному Family-беку — варта винесення в окремий сервіс, спільний для всіх.

ЛогікаПоточний станКуди винести
Збір і облік онлайн-статусівДублюється: getting-online worker + online-time / online-analysis сервіси в кожній FamilyНовий stack-online — централізовано пулить, віддає API всім Family
Метрики поверх ClickHouseДублюється: кожен Family пише і читає clickhouse самНовий stack-metrics
DeepL перекладиПоки в Electronstack-ai або окремий stack-translate
Global Man реєстрДублюється логікою в кожній FamilyНовий stack-man-registry
AI-нотатки + AI-генераціяЧасткова в ai-notes контролері кожного FamilyПеренести у stack-ai
Recruit / онбординг операторівВже в stackOK

Чек-ліст для нового Family

Коли стартує новий партнерський проєкт:

  1. Створити репо stack-<family> за патерном golden
  2. Налаштувати CLAUDE.md за шаблоном
  3. Створити docs/ каркас (див. CONVENTIONS)
  4. Додати в API Map як TBD
  5. Запитати в партнерів API-контракт. Якщо відрізняється від мінімуму вище — окремий integration-шар.
  6. Зібрати мінімум ui-triggered сервісів (admin / auth / lady / man / operator / task / …)
  7. Зібрати мінімум workers (download-statistics, update-data-ladies, …)
  8. Підняти Mongo-колекції <family>_*
  9. Інтегрувати у stack як новий маршрут
  10. Додати UI у stack-client/docs/ui-family/ і stack-electron/docs/ui/

Зв’язки