Allmine API
Users and Discovery

Upcoming streams — DuoCrowd filter değişikliği

~5 dkBackendMobil / WebKararlı

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ı upcoming listesinde 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:

  • ACTIVE yayınlar
  • PREPARING yayınlar
  • Zaman penceresi içine düşen tüm SCHEDULED yayı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 DUOCROWD yayınlar yalnızca collectedFunding >= fundingGoal olduğunda sonuçlara dahil edilir.

Sonuç olarak:

  • findUpcoming(...) artık funding tamamlanmamış SCHEDULED DUOCROWD yayınları gizler.

Etkilenen Endpoint'ler

Bu değişiklik doğrudan aşağıdaki endpoint’leri etkiler:

  • GET /api/v1/live-stream/upcoming-live-streams
  • GET /api/v1/live-stream/user/:userId/upcoming-live-streams

Bu endpoint’lerde artık şu kural geçerlidir:

  • SCHEDULED ve liveStreamType = DUOCROWD olan bir yayın, funding tamamlanmadıysa listede dönmez.

Etkilenmeyen Alanlar

Bu değişiklik aşağıdaki alanları etkilemez:

  • ACTIVE yayınlar
  • PREPARING yayınlar
  • SCHEDULED SOLO yayınlar
  • SCHEDULED DUOSELF yani self-funded yayınlar

Önemli not:

  • SCHEDULED self-funded yayınlar halen görünür.
  • Yapılan değişiklik self-funded yayınları gizlemez.
  • Filtre yalnızca DUOCROWD yayın tipine uygulanmıştır.

Teknik Detay

Filtreleme mantığı şu kurala dayanır:

  • liveStreamType != DUOCROWD ise yayın normal şekilde geçer.
  • liveStreamType == DUOCROWD ise yayın ancak collectedFunding >= fundingGoal olduğ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 DUOCROWD yayınları görebiliyordu.

Sonra:

  • Kullanıcı upcoming listesinde yalnızca funding tamamlanmış SCHEDULED DUOCROWD yayınları görebilir.

Değişmeyen durum:

  • Self-funded SCHEDULED DUOSELF yayı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.ts
  • src/live-stream/use-cases/upcoming-live-streams.usecase.spec.ts
  • src/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.ts
  • src/live-stream/repository/live-stream.repository.spec.ts
  • docs/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 DUOCROWD yayınlar kullanıcıya gösterilmez.
  • Funding tamamlanmış SCHEDULED DUOCROWD yayınlar gösterilir.
  • SCHEDULED DUOSELF self-funded yayınlar görünmeye devam eder.

On this page