docs: mimari ve operasyon dokümantasyonlarını ekle
- `ARCHITECTURE_AND_FLOW.md`: Mimari, servis sorumlulukları, kuyruklar ve iş akışı. - `HANDOVER_2026-02-16.md`: Tamamlanan kapsam, düzeltmeler ve sonraki adımlar. - `OPERATIONS_RUNBOOK.md`: Dev/prod çalıştırma, test ve sık karşılaşılan sorunlar. - `TURKCEALTYAZI_REAL_STATUS.md`: Gerçek provider entegrasyon durumu ve yapılacaklar. - `README.md`: Dokümantasyon dizini için giriş ve indeks.
This commit is contained in:
83
doc/ARCHITECTURE_AND_FLOW.md
Normal file
83
doc/ARCHITECTURE_AND_FLOW.md
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# 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:
|
||||||
|
- OpenSubtitles su an mock.
|
||||||
|
- TurkceAltyazi mock + feature-flag ile real deneme moduna sahip.
|
||||||
|
|
||||||
|
## `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.
|
||||||
|
|
||||||
91
doc/HANDOVER_2026-02-16.md
Normal file
91
doc/HANDOVER_2026-02-16.md
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
# Handover Notu (16 Subat 2026)
|
||||||
|
|
||||||
|
Bu belge, 16 Subat 2026 tarihine kadar subwatcher projesinde tamamlanan calismalari ozetler.
|
||||||
|
|
||||||
|
## 1) Tamamlanan kapsam
|
||||||
|
|
||||||
|
- Monorepo iskeleti olusturuldu:
|
||||||
|
- `services/core` (Fastify + watcher + BullMQ + Mongo)
|
||||||
|
- `services/api` (Fastify + provider katmani + extraction/security/selection)
|
||||||
|
- `services/ui` (React + Vite)
|
||||||
|
- Docker yapisi kuruldu:
|
||||||
|
- `compose.dev.yml` (hot reload)
|
||||||
|
- `compose.yml` (prod)
|
||||||
|
- Her servis icin Dockerfile
|
||||||
|
- Temel altyazi pipeline aktif:
|
||||||
|
- Dosya izleme
|
||||||
|
- Stabil dosya kontrolu
|
||||||
|
- Parse
|
||||||
|
- ffprobe (hata halinde fallback mediaInfo)
|
||||||
|
- Subtitle arama
|
||||||
|
- Encoding normalize + hedefe yazma
|
||||||
|
- Mongo koleksiyonlari ve job log mekanizmasi aktif.
|
||||||
|
- UI sayfalari aktif:
|
||||||
|
- Dashboard
|
||||||
|
- Jobs
|
||||||
|
- Job Detail (SSE log akisi)
|
||||||
|
- Review listesi + manuel secim akisi
|
||||||
|
- Settings
|
||||||
|
- Watched Paths
|
||||||
|
- API tarafinda mock provider altyapisi aktif:
|
||||||
|
- TurkceAltyazi (mock)
|
||||||
|
- OpenSubtitles (mock)
|
||||||
|
- Archive extraction/security aktif:
|
||||||
|
- 7z extraction
|
||||||
|
- zip slip kontrolu
|
||||||
|
- limit kontrolleri
|
||||||
|
- icerik tabanli SRT/ASS validasyonu
|
||||||
|
|
||||||
|
## 2) Sonradan yapilan kritik duzeltmeler
|
||||||
|
|
||||||
|
- `p7zip-rar` Docker build hatasi duzeltildi:
|
||||||
|
- `services/api/Dockerfile` -> `p7zip-full unrar-free`
|
||||||
|
- Dev ortamda bagimlilik drift sorunu duzeltildi:
|
||||||
|
- `compose.dev.yml` icin `api/core/ui` servislerine:
|
||||||
|
- `command: sh -c "npm install && npm run dev"`
|
||||||
|
- Parse gorunurlugu iyilestirildi:
|
||||||
|
- `PARSE_DONE` log meta icine `release/year/season/episode`
|
||||||
|
- UI Job Detail ekraninda release/year/season-episode gosterimi
|
||||||
|
|
||||||
|
## 3) Gercek TurkceAltyazi entegrasyonu (v2) icin yapilanlar
|
||||||
|
|
||||||
|
- Feature flag eklendi (API env):
|
||||||
|
- `ENABLE_TURKCEALTYAZI_REAL`
|
||||||
|
- `TURKCEALTYAZI_ALLOW_MOCK_FALLBACK`
|
||||||
|
- `TURKCEALTYAZI_BASE_URL`
|
||||||
|
- `TURKCEALTYAZI_TIMEOUT_MS`
|
||||||
|
- `TURKCEALTYAZI_MIN_DELAY_MS`
|
||||||
|
- Yeni real adapter helper eklendi:
|
||||||
|
- `services/api/src/lib/turkcealtyaziReal.ts`
|
||||||
|
- `TurkceAltyaziProvider` guncellendi:
|
||||||
|
- real search denemesi
|
||||||
|
- detail->download URL resolve
|
||||||
|
- dosya indirme (archive/direct ayrimi)
|
||||||
|
- Provider trace adimlari eklendi:
|
||||||
|
- `TA_SEARCH_REQUEST`
|
||||||
|
- `TA_SEARCH_PARSED`
|
||||||
|
- `TA_DETAIL_FETCHED`
|
||||||
|
- `TA_DOWNLOAD_URL_RESOLVED`
|
||||||
|
- `services/api/package.json` eklendi:
|
||||||
|
- `axios`
|
||||||
|
- `cheerio`
|
||||||
|
|
||||||
|
## 4) Mevcut calisan durum
|
||||||
|
|
||||||
|
- API ve Core servisleri basariyla ayaga kalkiyor.
|
||||||
|
- Yeni bagimliliklar kurulduktan sonra `ERR_MODULE_NOT_FOUND: axios` problemi cozuldu.
|
||||||
|
- Pipeline genel olarak calisiyor; yeni eklenen film dosyalarinda job ilerlemesi izlenebiliyor.
|
||||||
|
|
||||||
|
## 5) Bilinen riskler
|
||||||
|
|
||||||
|
- TurkceAltyazi HTML parser heuristik, site DOM degisirse kirilabilir.
|
||||||
|
- Gercek TA akisi icin cookie/challenge korumalari ihtiyac halinde ek hardening gerektirebilir.
|
||||||
|
- Watcher coklu event uretebildigi icin tek dosya icin birden fazla job olusabiliyor (de-dup katmani guclendirilmeli).
|
||||||
|
|
||||||
|
## 6) Sonraki oncelikli isler (onerilen)
|
||||||
|
|
||||||
|
1. Watcher dedup mekanizmasi ekle (path + zaman penceresi + aktif job kontrolu).
|
||||||
|
2. TurkceAltyazi parserini fixture testlerle sabitle.
|
||||||
|
3. TA hata tiplerini ayir (network/parsing/rate-limit/blocked).
|
||||||
|
4. Core tarafinda retry/policy netlestir.
|
||||||
|
|
||||||
65
doc/OPERATIONS_RUNBOOK.md
Normal file
65
doc/OPERATIONS_RUNBOOK.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# Operations Runbook
|
||||||
|
|
||||||
|
## Dev calistirma
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f compose.dev.yml up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
Not:
|
||||||
|
- Dev compose servisleri startup'ta otomatik `npm install` yapar.
|
||||||
|
- Bu sayede yeni dependency eklendiginde `node_modules` volume drift sorunu azalir.
|
||||||
|
|
||||||
|
## Ortam guvenligi
|
||||||
|
|
||||||
|
- `.env` dosyasinda gizli anahtarlar bulunabilir.
|
||||||
|
- Bu dosyayi git'e commit etme.
|
||||||
|
- Baska cihaza geciste guvenli sekilde tasiyip sadece lokalde kullan.
|
||||||
|
|
||||||
|
## Health check
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:3001/api/health
|
||||||
|
curl http://localhost:3002/v1/health
|
||||||
|
```
|
||||||
|
|
||||||
|
## Test media yerlestirme
|
||||||
|
|
||||||
|
- Film: `./_media/movie`
|
||||||
|
- Dizi: `./_media/tv`
|
||||||
|
|
||||||
|
## Job tetikleme (dev endpoint)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:3001/api/debug/enqueue \
|
||||||
|
-H 'content-type: application/json' \
|
||||||
|
-d '{"path":"/media/movie/test.mkv","kind":"movie"}'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Log izleme
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose -f compose.dev.yml logs -f api core ui
|
||||||
|
```
|
||||||
|
|
||||||
|
UI:
|
||||||
|
- `http://localhost:5173`
|
||||||
|
- Job Detail -> Canli Loglar paneli
|
||||||
|
|
||||||
|
## SIk sorunlar
|
||||||
|
|
||||||
|
1. `ERR_MODULE_NOT_FOUND` (yeni paket)
|
||||||
|
- Neden: node_modules volume eski.
|
||||||
|
- Cozum:
|
||||||
|
```bash
|
||||||
|
docker compose -f compose.dev.yml up -d --build api core ui
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Cok sayida `PENDING` job
|
||||||
|
- Neden: watcher coklu event (add/change) uretebilir.
|
||||||
|
- Cozum (kisa vade): dosya transfer tamamlandiktan sonra tek tetikleme.
|
||||||
|
- Orta vade: core tarafina de-dup logic eklenmeli.
|
||||||
|
|
||||||
|
3. ffprobe hata veriyor
|
||||||
|
- Pipeline fallback metadata ile devam eder.
|
||||||
|
- Log adimi: `FFPROBE_DONE - ffprobe failed, fallback metadata used`
|
||||||
22
doc/README.md
Normal file
22
doc/README.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# subwatcher Dokumantasyon Indeksi
|
||||||
|
|
||||||
|
Bu klasor, projeyi baska bir cihazdan devralip hizli devam etmek icin olusturuldu.
|
||||||
|
|
||||||
|
## Dosyalar
|
||||||
|
|
||||||
|
- `doc/HANDOVER_2026-02-16.md`
|
||||||
|
- Bu tarihe kadar yapilan tum gelistirmelerin ozet dokumu.
|
||||||
|
- `doc/ARCHITECTURE_AND_FLOW.md`
|
||||||
|
- Core/API/UI servis mimarisi, kuyruklar, veri modeli ve is akis detaylari.
|
||||||
|
- `doc/OPERATIONS_RUNBOOK.md`
|
||||||
|
- Dev/prod calistirma, debug, smoke test ve sik sorunlar.
|
||||||
|
- `doc/TURKCEALTYAZI_REAL_STATUS.md`
|
||||||
|
- Gercek TurkceAltyazi entegrasyonunda su anki asama, kalan isler ve devam adimlari.
|
||||||
|
|
||||||
|
## Hangi dosyadan baslamaliyim?
|
||||||
|
|
||||||
|
1. Once `doc/HANDOVER_2026-02-16.md`
|
||||||
|
2. Sonra `doc/TURKCEALTYAZI_REAL_STATUS.md`
|
||||||
|
3. Ardindan `doc/OPERATIONS_RUNBOOK.md`
|
||||||
|
|
||||||
|
Bu siralama ile en hizli sekilde kaldigin yerden devam edebilirsin.
|
||||||
82
doc/TURKCEALTYAZI_REAL_STATUS.md
Normal file
82
doc/TURKCEALTYAZI_REAL_STATUS.md
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# TurkceAltyazi Gercek Entegrasyon Durum Raporu
|
||||||
|
|
||||||
|
Guncel durum tarihi: **16 Subat 2026**
|
||||||
|
|
||||||
|
## Hedef
|
||||||
|
|
||||||
|
Mock yerine TurkceAltyazi kaynagindan gercek aday bulma ve indirme akisini aktif etmek.
|
||||||
|
|
||||||
|
## Tamamlananlar
|
||||||
|
|
||||||
|
1. Feature flags tanimli:
|
||||||
|
- `ENABLE_TURKCEALTYAZI_REAL`
|
||||||
|
- `TURKCEALTYAZI_ALLOW_MOCK_FALLBACK`
|
||||||
|
- `TURKCEALTYAZI_BASE_URL`
|
||||||
|
- `TURKCEALTYAZI_TIMEOUT_MS`
|
||||||
|
- `TURKCEALTYAZI_MIN_DELAY_MS`
|
||||||
|
|
||||||
|
2. Real helper dosyasi var:
|
||||||
|
- `services/api/src/lib/turkcealtyaziReal.ts`
|
||||||
|
- Arama URL denemeleri
|
||||||
|
- HTML parse ile aday cikarimi
|
||||||
|
- Detail sayfasinda download link cikarimi
|
||||||
|
- Binary indirme
|
||||||
|
|
||||||
|
3. Provider real/mok gecisi var:
|
||||||
|
- `services/api/src/providers/TurkceAltyaziProvider.ts`
|
||||||
|
- Real aciksa once real dener
|
||||||
|
- Basarisiz olursa fallback policy'e gore mock'a duser
|
||||||
|
|
||||||
|
4. Trace log adimlari var:
|
||||||
|
- `TA_SEARCH_REQUEST`
|
||||||
|
- `TA_SEARCH_PARSED`
|
||||||
|
- `TA_DETAIL_FETCHED`
|
||||||
|
- `TA_DOWNLOAD_URL_RESOLVED`
|
||||||
|
|
||||||
|
## Su an nerede kaldik?
|
||||||
|
|
||||||
|
- KOD seviyesinde real TA akisi entegre edildi.
|
||||||
|
- Servisler ayaga kalkiyor.
|
||||||
|
- Runtime'da real TA davranisinin stabilitesi daha test edilmedi (site response/DOM degiskenligi nedeniyle).
|
||||||
|
- Yani entegrasyon **ilk calisir prototip** seviyesinde.
|
||||||
|
|
||||||
|
## Kalan kritik isler
|
||||||
|
|
||||||
|
1. HTML parseri fixture testlerle sabitle
|
||||||
|
- Ornek TA arama/detay HTML snapshotlari ile unit test yaz.
|
||||||
|
- DOM degisikliklerine karsi fallback selector stratejisi ekle.
|
||||||
|
|
||||||
|
2. Dayaniklilik katmani
|
||||||
|
- 403/429/Cloudflare benzeri durumlari ayri hata kodlariyla logla.
|
||||||
|
- Retry/backoff politikasi daha netlestir.
|
||||||
|
|
||||||
|
3. Download tipi dogrulama
|
||||||
|
- Content-Type + dosya signature kontrolu ekle.
|
||||||
|
- Yanlis mime/redirect durumlarini net hata ile ele al.
|
||||||
|
|
||||||
|
4. Yasal/etik uyum notu
|
||||||
|
- Robots/ToS uyumunu projede dokumante et.
|
||||||
|
|
||||||
|
## Devam ederken kontrol listesi
|
||||||
|
|
||||||
|
1. `.env`:
|
||||||
|
```env
|
||||||
|
ENABLE_TURKCEALTYAZI_REAL=true
|
||||||
|
TURKCEALTYAZI_ALLOW_MOCK_FALLBACK=true
|
||||||
|
```
|
||||||
|
2. Servisleri yeniden baslat:
|
||||||
|
```bash
|
||||||
|
docker compose -f compose.dev.yml up -d --build api core
|
||||||
|
```
|
||||||
|
3. Yeni bir movie job tetikle.
|
||||||
|
4. Job logda TA adimlarini dogrula.
|
||||||
|
5. Mock'a dustuyse sebebi logla ve parseri iyilestir.
|
||||||
|
|
||||||
|
## Onemli dosyalar
|
||||||
|
|
||||||
|
- `services/api/src/lib/turkcealtyaziReal.ts`
|
||||||
|
- `services/api/src/providers/TurkceAltyaziProvider.ts`
|
||||||
|
- `services/api/src/lib/subtitleEngine.ts`
|
||||||
|
- `.env`
|
||||||
|
- `.env.example`
|
||||||
|
|
||||||
Reference in New Issue
Block a user