# Mimari ve Is Akisi ## Servisler ## `services/core` Sorumluluklar: - Dizin izleme (`/media/tv`, `/media/movie`) - Stabil dosya kontrolu - Dosya adi parse - ffprobe media analizi - BullMQ pipeline orchestration - Job/log API + SSE stream - Review endpointleri Queue'lar: - `fileEvents` - `mediaAnalysis` - `subtitleFetch` - `finalizeWrite` Durumlar (ozet): - `PENDING` - `WAITING_FILE_STABLE` - `PARSED` - `ANALYZED` - `REQUESTING_API` - `FOUND_TEMP` - `NORMALIZING_ENCODING` - `WRITING_SUBTITLE` - `DONE` - `NEEDS_REVIEW` - `NOT_FOUND` - `AMBIGUOUS` - `ERROR` ## `services/api` Sorumluluklar: - `/v1/subtitles/search` - `/v1/subtitles/choose` - archive extraction + guvenlik - icerik tabanli SRT/ASS dogrulama - scoring + best/ambiguous/not_found karari - temp cleanup Providerlar: - `TurkceAltyaziProvider` - `OpenSubtitlesProvider` Not: - TurkceAltyazi provider gercek HTTP+HTML akisi ile calisir. - OpenSubtitles provider real entegrasyon tamamlanana kadar pasiftir. ## `services/ui` Sayfalar: - Dashboard - Jobs - Job Detail (SSE canli log) - Review - Settings - Watched Paths ## Veri modeli (Mongo) - `watched_paths` - `settings` - `media_files` - `jobs` - `job_logs` ## Uctan uca akis (movie ornegi) 1. Watcher `add/change` event yakalar. 2. `fileEvents` job olusur. 3. Stabil kontrol -> parse -> media kaydi. 4. `mediaAnalysis` ffprobe calistirir. 5. `subtitleFetch` API `search` cagirir. 6. API provider adaylarini indirir/isler. 7. best secilirse core `finalizeWrite` ile dosyayi yazar. 8. Job `DONE` olur, loglar UI'da canli akar.