TUMediaService
Спільний модуль family-application-api для керування chat/mail медіа TU.
Задача
- Тримати єдине frontend API для всіх Family.
- Віддавати фото, відео та доступне аудіо окремо для chat і mail.
- Показувати нормалізований статус медіа.
- Завантажувати, видаляти або приховувати медіа.
- Передавати операцію у FamilyTUMediaService відповідної Family.
API
| № | Операція | Endpoint |
|---|---|---|
| 1 | Список медіа TU | `GET /tus/{tuId}/media?channel={chat |
| 2 | Завантажити медіа | POST /tus/{tuId}/media |
| 3 | Видалити або приховати медіа | DELETE /tus/{tuId}/media/{mediaId}?channel={channel}&type={type} |
| 4 | Повторно відправити на модерацію | POST /tus/{tuId}/media/{mediaId}/moderation?type={type} |
Upload приймає channel, type і файл. Файл передається через HTTP, а не в RMQ payload.
MediaItem
TODO: перевірити реальні response-формати всіх Family і окремо спроєктувати остаточні поля
MediaItem.
type MediaItem = {
externalId: string;
type: 'photo' | 'video' | 'audio';
channels: Array<'chat' | 'mail'>;
status: 'approved' | 'moderation' | 'declined';
processing: boolean;
url: string | null;
previewUrl: string | null;
partnerStatus: string | number | boolean | null;
actions: {
delete: boolean;
resubmitModeration: boolean;
};
};Frontend не визначає правила за назвою Family. Доступні кнопки беруться з actions.
Зв’язки
- FamilyTU — TU, медіа якої відкрито.
- FamilyTUMediaService — Family-адаптація операцій.
- Family TU Media API — конкретні partner endpoints і GraphQL operations.