Live Stream
Live Stream reports — backend
Yayın şikayetleri backend mimarisi
Live Stream Reports - Backend (Minimal)
Kapsam
Bu modül, canli yayinlar için ayri bir sikayet akisi sunar.
- Controller:
live-stream-reports - Base path:
/api/v1/live-stream-reports - Ayrik modul:
src/live-stream-reports live-streamcontroller'a ekleme yok
Endpointler
User:
POST /api/v1/live-stream-reports/:streamIdGET /api/v1/live-stream-reports/typesGET /api/v1/live-stream-reports/my-reports
Admin:
GET /api/v1/live-stream-reports/adminGET /api/v1/live-stream-reports/admin/statsGET /api/v1/live-stream-reports/admin/:idPATCH /api/v1/live-stream-reports/admin/:idPATCH /api/v1/live-stream-reports/admin/:id/archive
Enumlar
LiveStreamReportType:
harassment_or_bullyinghate_speechsexual_content_or_nudityviolence_or_self_harmspam_or_scamcopyright_or_intellectual_propertyother
LiveStreamReportStatus:
pendingunder_reviewresolvedrejected
Is Kurallari
- Rapor sadece
ACTIVE,ENDED,SCHEDULEDyayinlar için acilir. PREPARING,EXPIRED,CANCELLED_*durumlari için400.- Stream yoksa
404. - Yayin sahibi kendi yayinini raporlayamaz (
400). type=otherisedescriptionzorunlu.- Ayni
user + streamiçin aktif (pendingveyaunder_review) tek kayit. - Arsivlenen kayitlar listelerde gorunmez (soft delete).
Veri Modeli
Collection: live_stream_reports
Temel alanlar:
reportedByliveStreamstreamCreatorstreamStatusAtReporttype,descriptionstatus,reviewedBy,adminNotes,resolvedAtisArchivedmetadata.userAgent,metadata.ipAddress,metadata.platformdeletedAt,deletedBy(soft delete)createdAt,updatedAt
Indexler:
- Partial unique:
{ reportedBy: 1, liveStream: 1 }- Kosul:
status in [pending, under_review],deletedAt: null,isArchived: false
- Kosul:
- Diger indexler:
status,type,liveStream,createdAt(-1),deletedAt
Katman Yapisi (Kod)
- Controller:
src/live-stream-reports/controllers/live-stream-reports.controller.ts - UseCase:
src/live-stream-reports/use-cases/* - Repository:
src/live-stream-reports/repositories/live-stream-report.repository.ts - Mapper:
src/live-stream-reports/mappers/live-stream-report.mapper.ts - Schema:
src/live-stream-reports/schemas/live-stream-report.schema.ts - Module:
src/live-stream-reports/modules/live-stream-reports.module.ts
Controller sadece UseCase cagirir; repository dogrudan controller'dan kullanılmaz.
Ornek Sozlesmeler
Create request:
{
"type": "hate_speech",
"description": "Yayinda hedef gösterme var."
}Update request (admin):
{
"status": "resolved",
"adminNotes": "Ihlal dogrulandi."
}Types response (tr/en):
[
{ "key": "hate_speech", "label": "Nefret soylemi", "requiresCustomText": false },
{ "key": "other", "label": "Diger", "requiresCustomText": true }
]Not: API yanitlari BaseResponseDto<T> sarmaliyla gelir; asil payload data alanindadir.