feat(scheduler): admin run-now/run-all triggers + live progress + completion notices

Add per-job "Run now" buttons and a "Start all now" button to the admin Scheduler
dashboard (admin-gated endpoints). Triggers run the job in a background thread
independent of its interval, refusing a concurrent run (409). While running, the
long jobs (maintenance, enrich, backfill, shorts) report live progress through a
decoupled contextvar sink, shown as a progress bar on the job row via the existing
4s poll. A manually-triggered run posts a completion notification to the triggering
admin's inbox (scheduled runs stay silent to avoid spam); the inbox renders the
"scheduler" type trilingually from type+data. While here, give the maintenance job
its missing dashboard label/description in all three languages.
This commit is contained in:
npeter83 2026-06-18 04:01:10 +02:00
parent 3a0789ebe7
commit ed4194a8d3
15 changed files with 344 additions and 30 deletions

View file

@ -25,6 +25,21 @@
"minutes": "perc",
"editInterval": "Kattints a gyakoriság módosításához",
"intervalFailed": "Nem sikerült módosítani a gyakoriságot",
"runNow": "Futtatás most",
"runAll": "Mind indítása most",
"runAllHint": "Minden feladat azonnali futtatása, az ütemezésükön felül.",
"runAllPausedHint": "Folytasd az ütemezőt a futtatáshoz (szüneteltetve a feladatok kimaradnak).",
"triggered": "Elindítva: {{job}}",
"triggeredAll_one": "{{count}} feladat elindítva",
"triggeredAll_other": "{{count}} feladat elindítva",
"phase": {
"recheck": "Megjelölt videók újraellenőrzése",
"revalidate": "Videók újraellenőrzése",
"enrich": "Videók dúsítása",
"backfill_recent": "Friss feltöltések behúzása",
"backfill_deep": "Teljes előzmény behúzása",
"probe": "Shorts besorolás"
},
"dot": {
"running": "most fut",
"ok": "utolsó futás OK",
@ -39,7 +54,8 @@
"autotag": "Felismeri a csatornák nyelvét/témáit, és automatikus címkéket ad. Ha leáll, az új csatornák címke nélkül maradnak, így a nyelv/téma szűrők kihagyják őket.",
"shorts": "A youtube.com/shorts próbával jelöli, mely videók Shorts-ok. Ha leáll, a Shorts-ok nem különülnek el a normál videóktól a hírfolyamban.",
"subscriptions": "Újraimportálja minden felhasználó YouTube-feliratkozásait. Ha leáll, a YouTube-on felvett vagy törölt feliratkozások nem tükröződnek itt.",
"playlist_sync": "Tükrözi a felhasználók YouTube lejátszási listáit az appba. Ha leáll, a YouTube-listák változásai nem jelennek meg lokálisan."
"playlist_sync": "Tükrözi a felhasználók YouTube lejátszási listáit az appba. Ha leáll, a YouTube-listák változásai nem jelennek meg lokálisan.",
"maintenance": "Megkeresi a már sehol le nem játszható videókat (törölt, priváttá tett, elhagyott premier), elrejti őket a hírfolyamból, és türelmi idő után eltávolítja; újraellenőrzi a legrégebben ellenőrzött videókat. Ha leáll, a halott videók a katalógusban maradnak."
},
"jobs": {
"rss_poll": "RSS-lekérdezés (új feltöltések)",
@ -48,7 +64,8 @@
"autotag": "Automatikus címkézés",
"shorts": "Shorts-besorolás",
"subscriptions": "Feliratkozások újraszinkronja",
"playlist_sync": "YouTube lejátszási listák szinkronja"
"playlist_sync": "YouTube lejátszási listák szinkronja",
"maintenance": "Karbantartás + ellenőrzés"
},
"queue": {
"recentPending": "Szinkronra váró csatorna",