Upcoming streams — DuoCrowd filter değişikliği
DuoCrowd funding filtresi migration notları
Upcoming Live Streams DuoCrowd Funding Filter Değişikliği
Migration rehberi
Yapılandırma sırası için Migration şablonu. Yeni düzenlemelerde Amaç → Önkoşullar → Endpoint → Request/Response → Hata kodları → Client adımları → İlgili sayfalar bölümlerini tercih edin.
Amaç
Bu değişiklik, upcoming-live-streams akışında funding süreci henüz tamamlanmamış SCHEDULED DUOCROWD yayınların kullanıcıya gösterilmesini engellemek için yapıldı.
Temel ihtiyaç şuydu:
- Kullanıcı
upcominglistesinde henüz yayına hazır olmayan, funding hedefi tamamlanmamış DuoCrowd yayınları görmemeli. - Buna karşılık gerçekten yayına hazır olan veya funding gerektirmeyen yayın tipleri görünmeye devam etmeli.
Problem Neydi
Değişiklikten önce upcoming endpoint’i şu yayınları döndürüyordu:
ACTIVEyayınlarPREPARINGyayınlar- Zaman penceresi içine düşen tüm
SCHEDULEDyayınlar
Bu yaklaşımın sonucu olarak, SCHEDULED DUOCROWD bir yayın funding hedefini tamamlamamış olsa bile upcoming listesinde görünebiliyordu.
Bu ürün açısından iki probleme yol açıyordu:
- Kullanıcı henüz başlamaya hazır olmayan bir DuoCrowd yayını yaklaşan yayın gibi görüyordu.
- Join aşamasında ayrı bir funding kontrolü olduğu için listeleme ve aksiyon alma davranışı arasında tutarsızlık oluşuyordu.
Yapılan Değişiklik
Repository katmanında upcoming sorgusuna funding tamamlanma filtresi eklendi.
Davranış şu şekilde düzenlendi:
SCHEDULED DUOCROWDyayınlar yalnızcacollectedFunding >= fundingGoalolduğunda sonuçlara dahil edilir.
Sonuç olarak:
findUpcoming(...)artık funding tamamlanmamışSCHEDULED DUOCROWDyayınları gizler.
Etkilenen Endpoint'ler
Bu değişiklik doğrudan aşağıdaki endpoint’leri etkiler:
GET /api/v1/live-stream/upcoming-live-streamsGET /api/v1/live-stream/user/:userId/upcoming-live-streams
Bu endpoint’lerde artık şu kural geçerlidir:
SCHEDULEDveliveStreamType = DUOCROWDolan bir yayın, funding tamamlanmadıysa listede dönmez.
Etkilenmeyen Alanlar
Bu değişiklik aşağıdaki alanları etkilemez:
ACTIVEyayınlarPREPARINGyayınlarSCHEDULED SOLOyayınlarSCHEDULED DUOSELFyani self-funded yayınlar
Önemli not:
SCHEDULEDself-funded yayınlar halen görünür.- Yapılan değişiklik self-funded yayınları gizlemez.
- Filtre yalnızca
DUOCROWDyayın tipine uygulanmıştır.
Teknik Detay
Filtreleme mantığı şu kurala dayanır:
liveStreamType != DUOCROWDise yayın normal şekilde geçer.liveStreamType == DUOCROWDise yayın ancakcollectedFunding >= fundingGoalolduğunda geçer.
Mongo query seviyesinde kullanılan ifade mantıksal olarak şudur:
$or: [
{ liveStreamType: { $ne: LiveStreamType.DUOCROWD } },
{
liveStreamType: LiveStreamType.DUOCROWD,
$expr: {
$gte: [{ $ifNull: ['$collectedFunding', 0] }, { $ifNull: ['$fundingGoal', 0] }],
},
},
];Bu yaklaşımın avantajı:
- Filtre repository seviyesinde uygulanır.
- Use-case katmanında ek post-filter ihtiyacı oluşmaz.
- Aynı sorgu içindeki membership ve zaman penceresi mantığı korunur.
Önceki ve Sonraki Davranış
Önce:
- Kullanıcı upcoming listesinde funding tamamlanmamış
SCHEDULED DUOCROWDyayınları görebiliyordu.
Sonra:
- Kullanıcı upcoming listesinde yalnızca funding tamamlanmış
SCHEDULED DUOCROWDyayınları görebilir.
Değişmeyen durum:
- Self-funded
SCHEDULED DUOSELFyayınlar görünmeye devam eder.
Teknik Yaklaşım
Filtreleme repository seviyesinde, doğrudan findUpcoming(...) sorgusu içinde uygulanır.
Bu yaklaşımın sonucu:
- Use-case katmanında ek post-filter ihtiyacı oluşmaz.
- Membership, pencere ve funding kuralları tek sorguda kalır.
Test ve Doğrulama
Değişiklik aşağıdaki testlerle doğrulandı:
src/live-stream/repository/live-stream.repository.spec.tssrc/live-stream/use-cases/upcoming-live-streams.usecase.spec.tssrc/live-stream/use-cases/get-user-upcoming-live-streams.usecase.spec.ts
Doğrulanan ana noktalar:
findUpcoming(...)sorgusuna yeni DuoCrowd funding filtresi ekleniyor.- Upcoming use-case davranışı bozulmuyor.
- User upcoming use-case davranışı bozulmuyor.
İlgili Dosyalar
src/live-stream/repository/live-stream.repository.tssrc/live-stream/repository/live-stream.repository.spec.tsdocs/upcoming-live-streams-endpoint.md
Özet
Bu değişiklik sayesinde upcoming listesi ürün mantığıyla daha uyumlu hale geldi.
Artık:
- Funding tamamlanmamış
SCHEDULED DUOCROWDyayınlar kullanıcıya gösterilmez. - Funding tamamlanmış
SCHEDULED DUOCROWDyayınlar gösterilir. SCHEDULED DUOSELFself-funded yayınlar görünmeye devam eder.