Completa modulo Replay: S3, retention, sync YouTube e gestione società.
Streaming chunked da Garage, purge con delete YouTube, privacy sincronizzata, archivio club migliorato, retention 30/90 separata da stato abbonamento. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -32,10 +32,15 @@ MediaMTX registra **solo mentre il telefono pubblica** (RTMP connesso). In pausa
|
||||
- Contatore visualizzazioni su ogni play (`view_count`)
|
||||
|
||||
### 5. Visibilità
|
||||
Pubblico / Privato (unlisted), modificabile dall’admin società.
|
||||
- **Pubblico** (`public`): compare in `/replay`, indicizzabile, YouTube `public`
|
||||
- **Privato** (`unlisted`): non in catalogo pubblico, accessibile solo con link diretto, `noindex`, YouTube `unlisted`
|
||||
|
||||
Modificabile dall’archivio società (`/clubs/:id/replays`). Il cambio privacy sincronizza automaticamente il VOD YouTube se presente (`Recordings::SyncYoutubePrivacyJob`).
|
||||
|
||||
### 6. Eliminazione anticipata
|
||||
`Recordings::Delete` — DB + video + thumbnail su storage.
|
||||
`Recordings::Delete` — elimina video YouTube collegato, oggetti S3/Garage (MP4 + thumbnail) e soft-delete DB.
|
||||
|
||||
Stesso comportamento alla scadenza retention (`PurgeExpiredJob` alle 03:00).
|
||||
|
||||
### 7. Dashboard KPI
|
||||
Replay disponibili, in scadenza (7 gg), spazio occupato, **visualizzazioni totali**.
|
||||
@@ -115,6 +120,22 @@ Per ridimensionare dopo:
|
||||
bash scripts/garage_set_capacity.sh 85G # oppure senza argomento: calcolo automatico
|
||||
```
|
||||
|
||||
## Piattaforme live e replay
|
||||
|
||||
| Origine diretta | Copia Garage/S3 | Player sito `/replay/:id` | YouTube VOD |
|
||||
|-----------------|-----------------|----------------------------|-------------|
|
||||
| `matchlivetv` | Sì (Premium) | MP4 via proxy Rails | Manuale (Premium Full) |
|
||||
| `youtube` | Sì (Premium) | MP4 via proxy Rails | Auto se Premium Full + diretta YouTube |
|
||||
|
||||
Se il file S3 non è disponibile ma esiste `youtube_video_id`, la pagina replay mostra embed YouTube.
|
||||
|
||||
## Retention e abbonamento
|
||||
|
||||
- `expires_at` viene impostato alla fine diretta: **30 giorni** (Premium Light), **90 giorni** (Premium Full)
|
||||
- `expires_at` **non cambia** al cambio piano successivo
|
||||
- **Nuove registrazioni** richiedono abbonamento attivo (`can_create_recordings?`)
|
||||
- **Archivio esistente** resta accessibile fino a `expires_at` anche se l’abbonamento scade (`can_access_recordings?`)
|
||||
|
||||
## API mobile
|
||||
|
||||
- `GET /teams/:id/recordings` — lista con thumbnail, views, download_enabled
|
||||
|
||||
Reference in New Issue
Block a user