From 950cdb4efed49274c04721ca75475a89af72e91a Mon Sep 17 00:00:00 2001 From: Deivid Soto Date: Sun, 31 May 2026 17:04:10 +0200 Subject: [PATCH] docs(roadmap): mark hueco #2 closed (2a+2b+2c) --- Docs/plans/unarr-agent-roadmap.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/Docs/plans/unarr-agent-roadmap.md b/Docs/plans/unarr-agent-roadmap.md index dba3f6d..5164c69 100644 --- a/Docs/plans/unarr-agent-roadmap.md +++ b/Docs/plans/unarr-agent-roadmap.md @@ -43,7 +43,7 @@ Sólido salvo nota: funnel/UPnP el stream queda público en internet. Plan previo `Docs/plans/security-stream-token.md` (deferido, sin código). -### Hueco #2 — Debrid en el path de streaming 🟡 2a+2b CERRADO (2026-05-31); 2c pendiente +### Hueco #2 — Debrid en el path de streaming ✅ CERRADO (2a+2b+2c, 2026-05-31) Hoy debrid es **solo descarga**, resuelto server-side; el streaming es 100% torrent. La promesa "play instantáneo cache-fast" no ocurre. Falta: source debrid en el path de streaming + cache-availability + **fallback torrent↔debrid mid-stream**. @@ -149,8 +149,26 @@ WEB (`torrentclaw-web`): --- ### Hueco #2 — Debrid en el path de streaming -**Estado:** 🟡 Fases 2a + 2b CERRADAS (2026-05-31). 2c (preferencia cache-fast -sobre torrent + fallback mid-stream) pendiente. +**Estado:** ✅ CERRADO (2a+2b+2c, 2026-05-31). + +**CERRADO 2c (2026-05-31):** fallback mid-stream, alcance = **refresh de URL +debrid** (decisión del usuario; el swap cross-source torrent↔debrid se difiere — +caso raro, gran complejidad). La preferencia cache-fast (preferir debrid +cacheado sobre torrent en streaming) ya la daban 2a/2b por orden de resolución. +Los links debrid caducan; una peli larga sobrevive al link → al detectar expiry +(401/403/404/410 en direct-play, o salida de red de ffmpeg en HLS) el agente +re-resuelve (mismo info_hash → link fresco) y reanuda sin reiniciar. +- WEB: endpoint `POST /api/internal/agent/stream-url` (withAgentAuth) → + re-resuelve + actualiza fila + devuelve URL. Guard: sesión debrid viva + (`direct_url IS NOT NULL`). 409 sin sesión, 410 si re-resolución falla. +- CLI: `agentClient.RefreshStreamURL`; `debridFileProvider` URL mutable bajo + mutex + reader refresca en expiry (bounded 1+1) + **coalescing singleflight** + (N readers del `