Files
subwatcher/README.md
szbk d38fc3b390 feat(api): turkcealtyazi gerçek modunu stabil hale getir ve mock altyapısını kaldır
Mock fallback mantığını ve determinantik mock üretim kodlarını kaldırarak
TurkceAltyazi sağlayıcısını tamamen gerçek moda geçirdi. İyileştirilmiş
arama, indirme ve çerez yönetimi ile sağlam bir entegrasyon sağlandı.

- MockArtifact ve deterministic modüllerini kaldır
- TurkceAltyaziProvider'da mock fallback mantığını tamamen kaldır
- HTTP çerez yönetimi, retry mantığı ve hata işleme iyileştirmeleri
- ENABLE_TA_STEP_LOGS yapılandırması ile adım adım loglama
- TURKCEALTYAZI_ALLOW_MOCK_FALLBACK ortam değişkenini kaldır
- Dokümantasyonu gerçek mod reflektif olarak güncelle
- OpenSubtitles sağlayıcını gerçek entegrasyon tamamlanana kadar pasif yap
- Varsayılan kaynak etiketini 'mock' yerine 'unknown' olarak güncelle
2026-02-16 10:50:59 +03:00

164 lines
3.4 KiB
Markdown

# subwatcher
Docker tabanli altyazi otomasyon sistemi.
- `core`: watcher + ffprobe + BullMQ + Mongo job/log API + review akisi
- `api`: gercek provider subtitle engine + archive extraction + security + scoring
- `ui`: React/Vite panel (dashboard, jobs, detail live logs, review, settings, watched paths)
## Mimari
- Mongo koleksiyonlari: `watched_paths`, `settings`, `media_files`, `jobs`, `job_logs`
- Redis/BullMQ kuyruklari:
- `fileEvents`
- `mediaAnalysis`
- `subtitleFetch`
- `finalizeWrite`
- Core -> API servis cagrisi (docker network): `http://api:3002`
- UI -> Core API: `http://localhost:3001/api` (CORS acik)
- Temp alan: `/temp/{jobToken}`
## TurkceAltyazi Gercek Modu (v2)
Gercek entegrasyon feature flag ile acilabilir:
```env
ENABLE_TURKCEALTYAZI_REAL=true
TURKCEALTYAZI_BASE_URL=https://turkcealtyazi.org
TURKCEALTYAZI_TIMEOUT_MS=12000
TURKCEALTYAZI_MIN_DELAY_MS=300
```
- `ENABLE_TURKCEALTYAZI_REAL=true`: `TurkceAltyaziProvider` gercek HTTP+HTML parse dener.
## Gelistirme (Dev)
1. Ortam dosyasi:
```bash
cp .env.example .env
```
2. Servisleri kaldir:
```bash
docker compose -f compose.dev.yml up --build
```
3. Portlar:
- UI: `http://localhost:5173`
- Core: `http://localhost:3001`
- API: `http://localhost:3002`
- Mongo: `localhost:27017`
- Redis: `localhost:6379`
4. Media dosyasi yerlestirme:
- TV: `./_media/tv`
- Movie: `./_media/movie`
Gercek `.mkv` dosyasi ekleyince watcher pipeline'i tetikler.
5. Debug enqueue (dev-only):
```bash
curl -X POST http://localhost:3001/api/debug/enqueue \
-H 'content-type: application/json' \
-d '{"path":"/media/movie/example.mkv","kind":"movie"}'
```
## Production
```bash
docker compose -f compose.yml up --build -d
```
Portlar:
- UI: `http://localhost:3000`
- Core: `http://localhost:3001`
- API: `http://localhost:3002`
## UI Ozellikleri
- Dashboard: son 24h ozet + son isler
- Jobs: filtreleme + job detayi
- Job Detail: metadata, mediaInfo, sonuc dosyalari, canli SSE log paneli
- Review List: `NEEDS_REVIEW` isler
- Manual override: metadata ile ara + candidate sec + finalize write
- Settings: language/overwrite/stability/security ayarlari
- Watched Paths: ekle/sil/enable/disable
## API Endpointleri
### Core
- `GET /api/health`
- `GET /api/settings`
- `POST /api/settings`
- `GET /api/watched-paths`
- `POST /api/watched-paths`
- `GET /api/jobs`
- `GET /api/jobs/:id`
- `GET /api/jobs/:id/logs`
- `GET /api/jobs/:id/stream` (SSE)
- `GET /api/review`
- `POST /api/review/:jobId/search`
- `POST /api/review/:jobId/choose`
- `POST /api/debug/enqueue` (dev)
### Subtitle API
- `GET /v1/health`
- `POST /v1/subtitles/search`
- `POST /v1/subtitles/choose`
- `POST /v1/subtitles/cleanup`
## Guvenlik ve Dogrulama
- Archive extraction: `7z`
- Zip slip kontrolu: realpath root disina cikis reddi
- Limit kontrolleri:
- max file count
- max total size
- max single file size
- SRT/ASS extension'a gore degil, icerige gore validate edilir
- Gecersiz altyazilar aninda silinir (`INVALID_SUBTITLE_DELETED`)
## Encoding
Core finalize adiminda:
- BOM kontrol
- UTF-8 / windows-1254 / latin1 fallback
- LF newline normalizasyonu
- hedef adlandirma: `{base}.{lang}.{ext}`
- overwrite false ise `.2`, `.3`...
## Testler
Core:
```bash
cd services/core && npm test
```
API:
```bash
cd services/api && npm test
```
Kapsam:
- filename parser
- SRT/ASS validator
- scoring + ambiguous karari
- zip slip helper
## Gelecek (v2)
- Gercek OpenSubtitles API entegrasyonu
- ClamAV tarama (feature flag hazir)