Files
manage/backend/src/media_library_viewer_api/routers/.pi-map.index.md
T
Developer b8cb29e330 feat(jellyseer): stats backend — provider, stat widgets, router (slice 1/3)
Groundwork for Jellyseerr request stats in the Jellyfin service, behind a
small reusable abstraction so future stats services (Sonarr/Radarr) reuse it.

Backend:
- JellyseerrClient.request_count() -> /api/v1/request/count (normalized
  total/pending/approved/declined/processing/available) and recent_requests()
  -> /api/v1/request mapped to {name,type,status,media_status,created_at}
  with numeric status enums labelled.
- widgets/stats_provider.py: StatsProvider protocol + registry keyed by
  service_type (StatValue/StatsResult). A thin generic interface.
- widgets/jellyseerr_stats.py: JellyseerrStatsProvider registered for the
  Jellyfin service; reuses one authenticated client per service (lru_cache) and
  caches the StatsResult for ~10s under a lock, so multiple widgets + the tab
  collapse onto one Jellyseerr fetch (same lesson as the qBittorrent client).
  Accepts jellyseerr_api_key from secrets OR config during the upcoming
  config->secret migration.
- Jellyfin service gains two widget kinds: `stat` (a Literal selector over the
  six stats — the "extract one value into a widget" affordance) and
  `stats_overview` (all stats + recent list).
- widgets router routes widget_kind in {stat, stats_overview} to a generic
  StatsWidgetSource (dispatches to the service type's provider), independent of
  service type.
- new /api/jellyseerr/stats router endpoint for the Requests tab (resolves the
  Jellyfin service by id or first-enabled; shares the provider cache).

Tests: provider normalization, not-configured, TTL caching; stat selector +
overview + unknown-stat widget dispatch; 7 new tests. 400/400 backend pass;
ruff clean.
2026-07-12 13:10:09 +00:00

921 B

backend/src/media_library_viewer_api/routers (index)

dir: backend/src/media_library_viewer_api/routers

role

FastAPI router package that organizes and exposes all REST API endpoints for the media library viewer backend, covering authentication, dashboards, media management, backups, monitoring, services, files, and task execution.

parent

index: backend/src/media_library_viewer_api/.pi-map.index.md map: backend/src/media_library_viewer_api/.pi-map.md

children

files

  • __init__.py
  • authentik_users.py
  • backups.py
  • dashboard.py
  • dashboards.py
  • files.py
  • jellyseerr.py
  • jobs.py
  • media.py
  • monitoring.py
  • services.py
  • settings.py
  • tasks.py
  • widgets.py

index: backend/src/media_library_viewer_api/routers/.pi-map.index.md map: backend/src/media_library_viewer_api/routers/.pi-map.md

workflows

  • change routers behavior read: __init__.py, authentik_users.py, backups.py

dirty