0421f19630
Deploy PROD / deploy (push) Successful in 26s
Nagrywania NIE DALO SIE URUCHOMIC. Backend mial `startRecording` i `stopRecording`, Egress byl skonfigurowany i pisal prosto do MinIO, ale brakowalo dwoch ogniw: przycisku w panelu i domkniecia stanu po zakonczeniu. `completeRecording` nie bylo wolane z ZADNEGO miejsca w kodzie. PRZYCISK W PANELU PROWADZENIA Obok trybow mikrofonu i wideo, bo tam prowadzacy podejmuje decyzje o sali. Osobno od nich, bo nagrywanie nie dotyczy uprawnien uczestnikow: to decyzja organizatora o utrwaleniu szkolenia. Start bez potwierdzenia (nagrywanie niczego nie ujawnia i da sie je zatrzymac), stop z potwierdzeniem, bo tego fragmentu nie nagra sie drugi raz. Stan czytany jest przy wejsciu z listy nagran, nie tylko trzymany lokalnie: prowadzacy moze odswiezyc strone albo wrocic z innego urzadzenia i musi zobaczyc, ze nagranie trwa, zamiast zaczynac drugie rownolegle. Sluzy do tego `providerRecordingId` dopisane do `RecordingView`. DOMYKANIE PRZEZ ODPYTYWANIE, NIE WEBHOOK LiveKit podpisuje webhooki tokenem JWT, ktorego `VideoWebhookController` nie rozpoznaje: przyjmuje wylacznie wspolny sekret w naglowku, tak jak Daily. Odpytywanie jest przy tym ODPORNIEJSZE: zgloszenie, ktore nie dojdzie (restart backendu w zlej chwili, awaria sieci), zostawia wpis w stanie DOWNLOADING na zawsze, a zadanie w tle samo to nadrabia. Opoznienie do minuty nie ma znaczenia, bo montaz pliku po stronie Egress i tak trwa dluzej. EGRESS_COMPLETE domyka wpis rozmiarem i czasem trwania, FAILED/ABORTED/ LIMIT_REACHED oznacza go jako nieudany Z POWODEM: wpis zostaje w bazie, zeby administrator widzial, ze proba byla i czym sie skonczyla. Zadanie nie rusza, gdy dostawca nie jest LiveKit, i nie oznacza nagrania jako nieudanego, gdy Egress zwyczajnie nie zna juz zadania: brak informacji to nie to samo co blad. `reconcileRecordings` jest nietransakcyjne (wola serwer po sieci) i domyka kazdy wpis przez `@Lazy self`: samowywolanie omija proxy Springa, a wtedy zapis odbywa sie bez transakcji i stan nagrania nie zmienia sie wcale. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>