sender-invite-service

SenderInviteService

Майбутній спільний модуль project-application-api для банку chat/mail інвайтів. Контракт ще не спроєктований, бо поточні lifecycle суттєво різні й будуть перероблятися.

Поточна реалізація

ПроєктМожливостіХто керує
Goldencreate, moderation, reject із причиною, повторне редагування, hide/restore, окремий active stateOperator створює; тімлід і Top Manager модерують
Primecreate, hard delete, reorder; chat і mail спискиТімлід і Top Manager
Chathousecreate, hard delete, reorder; additional chat messages; low-credit mail; sender analyticsТімлід і Top Manager
Udatecreate, hard delete, reorder; additional chat messagesТімлід і Top Manager

Типи й контент

ПроєктChatMail
Goldencontact / agency, text 4–300NAF / FANM, text 500–2000, до 2 photo в active state
Primeодин ordered list, text 50–300один ordered list, text 500–3000, photo/video
Chathouseодин ordered list, text 50–300, до 2 additional text/photo/stickertext 500–3000, photo, окремий low-credit invite
Udateодин ordered list, text 30–300, до 2 additional text/photo/stickertext 500–3000, photo/video

Delay additional message у Chathouse та Udate — від 15 секунд до 15 хвилин.

Frontend Prime, Chathouse і Udate блокує створення тексту із similarity >= 70%: для цього він завантажує всі наявні тексти й порівнює їх у browser. Backend цю перевірку не повторює.

Поточний flow

  1. Наш frontend працює напряму з endpoint-ами відповідного проєкту.
  2. Інвайти зберігаються у collection проєкту.
  3. SenderRunner проєкту або Electron отримує впорядкований чи active список.
  4. Відправлення, cooldown, counters і помилки записуються у власні моделі проєкту.

Partner API для CRUD інвайтів не потрібен. Partner API використовується лише для медіа TU та фактичної відправки.

TODO: повна переробка

Перед реалізацією спільного сервісу треба заново затвердити:

  1. Формат ProjectSenderInvite.
  2. Один lifecycle: створення, moderation, edit, hide/delete та restore.
  3. Права Operator, тімліда і Top Manager.
  4. Спільний active list і порядок замість Golden slots та масивів проєктів.
  5. Єдині audience для Golden contact/agency, NAF/FANM та звичайних списків інших проєктів.
  6. Main/additional messages, media, delay і low-credit.
  7. Єдині text limits і серверну similarity-перевірку.
  8. Одне frontend API та один startup contract для Electron.
  9. Винесення аналітики відповідей у SenderAnalyticsService. Робота Sender, send history, cooldown і помилки відправлення залишаються в Electron.

До цього рішення endpoint-и нового SenderInviteService не фіксуємо.