BlogAnton Ignashev

Harmonogram Zadań w enova365 — nocne zadanie, które przestało działać sześć tygodni temu

Harmonogram Zadań w enova365 — nocne zadanie, które przestało działać sześć tygodni temu

Sześć tygodni. Tyle nocne zadanie w enova365 potrafiło nie działać, zanim ktokolwiek się odezwał — mój osobisty rekord. Klient wcale nie był niefrasobliwy: miał kompetentnego administratora wewnętrznego, umowę serwisową z partnerem i dashboard. Nie miał tylko niczego, co zauważyłoby nieobecność.

To trzecia i ostatnia z dróg, którymi dane wychodzą z enova365. Pobieranie przez WebAPI opisałem szeroko, pozostałe dwie wymieniłem w tekście o KSeF i JPK: Harmonogram Zadań wypychający dane na zewnątrz i replika SQL tylko do odczytu, której jeszcze pożałujecie. Harmonogram zasługuje na osobny tekst, bo jako jedyny psuje się bez błędu, bez alertu i bez jednej linijki w czyjejkolwiek skrzynce.

Harmonogram działa. To nie to samo, co działająca automatyzacja

Harmonogram Zadań jest zrobiony dobrze. Wbudowany w enova365 silnik automatyzacji oparty na wyzwalaczach i akcjach; da się go skonfigurować tak, żeby wysyłał powiadomienie HTTP na zewnątrz, kiedy coś w systemie się zmieni — status dokumentu, nowa faktura, stan magazynowy przekraczający próg. Robi to, co obiecuje.

Awaria jest piętro wyżej. Realnym wynikiem zaplanowanego zadania nie jest praca, którą wykonuje, tylko twierdzenie: uruchomiło się i było dobrze. W większości instalacji, które otwieram, nikt tego twierdzenia nigdy nie sprawdził — i nie ma czym.

Jedno zastrzeżenie, zanim cokolwiek wokół tego zaprojektujecie, i od czasu przewodnika programisty nic się tu nie zmieniło: nie każda instalacja ma harmonogram skonfigurowany pod wychodzące webhooki. Funkcja jest w produkcie. Czy jest ustawiona na maszynie, z którą się integrujecie, to pytanie do administratora albo do partnera — zadajcie je przed rysowaniem architektury, nie po. A jeśli już z tego korzystacie, po Waszej stronie musi stać publicznie dostępny endpoint HTTPS. Instalacja widoczna tylko przez VPN oznacza, że najpierw czeka Was robota z routingiem.

Sukces i cisza wyglądają identycznie

Cały problem w jednym zdaniu. Z zewnątrz enova365 zadanie, które się uruchomiło i nic nie znalazło, oraz zadanie, które w ogóle nie wystartowało, zostawiają dokładnie ten sam ślad: żaden.

Oba stany są bardzo częste. W porządku jest tylko jeden. Nocne uzgodnienie faktycznie nic nie znajduje w spokojny wtorek. To samo zadanie nic nie znajduje również wtedy, gdy usługa jest zatrzymana, gdy po aktualizacji wróciło wyłączone albo gdy jego filtr po cichu przestał cokolwiek łapać. Wszystkie te przypadki są niewidoczne, jeśli jedynym sygnałem, na który patrzycie, jest pojawienie się wyniku.

Lekarstwo jest banalne i prawie nikt go nie stosuje. Każcie zadaniu raportować, co obejrzało, a nie tylko co znalazło. Uruchomienie, które mówi sprawdzono 412 dokumentów, 0 nowych, jest zdrowe. Uruchomienie, które nie mówi nic, jest pytaniem. Oba komunikaty kosztują tyle samo, a różnica w tym, co z nich wynika, jest ogromna.

Heartbeat musi mieszkać poza enova365

Monitoring trzeba tu odwrócić. Większość alertów odpala się na błędzie, a to milczące założenie, że psujący się system jest na tyle sprawny, żeby się poskarżyć. Harmonogram, który nie działa, nie zgłosi, że nie działa. Warunkiem alarmu nie może więc być błąd, tylko nieobecność.

Konkretnie: każde uruchomienie zapisuje znacznik czasu i jedno zdanie podsumowania poza ERP — do tabeli we własnej bazie, do kolejki, na endpoint monitoringu, gdziekolwiek, co i tak już utrzymujecie. Osobna kontrola, też na zewnątrz, alarmuje, kiedy ten znacznik zestarzeje się ponad interwał plus zapas. Kwadrans roboty. I różnica między tym, że dowiecie się dziś w nocy, a tym, że dowiecie się na zamknięciu miesiąca.

Zapas ustawcie rozsądnie. Za ciasny — budzicie kogoś przy każdym dłuższym imporcie. Za luźny — macie z powrotem ten sam problem, tylko z dodatkowymi krokami. Dla zadania nocnego zwykle sprawdza się interwał plus połowa.

Interwał cichej awarii

To liczba, o którą proszę, zanim cokolwiek tknę. Kosztuje jedno spotkanie.

Dla każdego zaplanowanego zadania w instalacji odpowiedzcie na dwa pytania: gdyby stanęło dziś w nocy, kto by to zauważył i kiedy? Odpowiedź podana w dniach to interwał cichej awarii tego zadania — najdłuższy czas, przez jaki mogłoby leżeć martwe, zanim ktoś natknąłby się na to przypadkiem.

Rozrzut bywa ogromny i układa się w trzy grupy. Zadania zasilające ekran, który ktoś otwiera co rano, mają interwał liczony w godzinach. Zadania zasilające raport czytany na zamknięciu miesiąca — dwa do czterech tygodni. I zawsze jest trzecia grupa, w której uczciwa odpowiedź brzmi nigdy: jedynym widocznym efektem zadania jest plik wrzucony do folderu albo rekord w tabeli, do której nikt nie zagląda, dopóki coś innego już nie poszło źle.

Wszystko powyżej tygodnia to nie automatyzacja, tylko zakład. To zdanie kończy dyskusję szybciej niż jakakolwiek propozycja monitoringu, bo przenosi rozmowę z narzędzi na ryzyko. Podpowiada też, od czego zacząć — nie od najważniejszego zadania, tylko od tego z najdłuższym interwałem.

Trzy rzeczy zabijają działające zadanie i żadna się nie zapowiada

Aktualizacja albo migracja serwera. Ta jest najczęstsza. Zadania wracają wyłączone albo ze zmienionym zachowaniem i nikt ich nie włącza z powrotem, bo nikt nie miał listy tego, co w ogóle działało. Jeśli macie wynieść z tego tekstu jeden nawyk operacyjny, wynieście tę listę — i trzymajcie ją poza systemem, który opisuje.

Zmiana poświadczeń. Zadanie uruchamia się na jakimś koncie, konto ma hasło, a hasło zmienia podczas przeglądu bezpieczeństwa ktoś, kto nie ma pojęcia, że wisi na nim nocne zadanie. Ten sam problem dostępu co opóźnienie dostępowe z tekstu o harmonogramie wdrożenia, tylko oglądany z drugiej strony i osiemnaście miesięcy później. Zadanie nie wywala się w żaden widoczny sposób. Próbuje się uwierzytelnić, dostaje odmowę i milknie.

Filtr, który przestaje łapać. Najpaskudniejszy z tej trójki, bo zadanie dalej się uruchamia i dalej raportuje sukces. Ktoś zmienia definicję pola własnego, przemianowuje typ dokumentu albo poprawia wartość słownikową — i warunek, który wybierał dwieście rekordów, wybiera zero. Dokładnie ten dryf opisałem w tekście o polach własnych: pięć minut pracy administratora, żadnego obowiązku informowania Was, a Wasza integracja jest jedyną stroną, która to kiedykolwiek zauważy. To również ten przypadek, w którym sprawdzono 412 dokumentów kontra sprawdzono 0 dokumentów powiedziałoby Wam wszystko od razu — a 0 nowych nie powiedziało nic.

Drugie uruchomienie to miejsce, w którym znikają pieniądze

Zaplanowane zadania uruchamiają się po raz drugi znacznie częściej, niż ktokolwiek to przewiduje: ponowienie po częściowej awarii, ręczne powtórzenie przez administratora, który nie był pewien, czy pierwsze przeszło, albo nałożenie się przebiegów, gdy zadanie trwa dłużej niż jego własny interwał. Jeśli praca nie jest idempotentna, każdy z tych przypadków zostawia duplikat.

Duplikaty z harmonogramu są ciche w bardzo konkretny i kosztowny sposób. Zduplikowana faktura zatrzymuje się na walidacji. Zduplikowany rozrachunek już nie — rozlicza coś, dopina się do prawdziwej należności i wypływa kilka tygodni później jako niewytłumaczalnie nadpłacony klient. Ta sama awaria, którą opisałem przy wyciągach śróddziennych w tekście o imporcie MT940, a harmonogram to drugi popularny sposób, żeby ją wyprodukować.

Zatem: każda jednostka pracy dostaje klucz naturalny, sprawdzacie przed zapisem, a nakładające się uruchomienia czynicie niemożliwymi, nie mało prawdopodobnymi. Blokada jest tańsza niż uzgadnianie.

Co powinien tu robić agent, a czego nie

Podział uprawnień z tekstu o tym, kto podpisuje układa się tutaj wyjątkowo czysto i wyjątkowo nisko na skali. Nic z tego nie wymaga prawa zapisu. Nic z tego nie wymaga kontaktu z kimkolwiek.

Na start zbudowałbym obserwatora. Trzyma oczekiwany harmonogram — które zadania, jak często, czego każde powinno było dotknąć — porównuje to z tym, co faktycznie się zgłosiło, i kładzie rozbieżność na biurko człowieka. Wyłapuje wyłączone zadanie, cichy błąd uwierzytelnienia i filtr, który przestał łapać, tej samej nocy, a nie na koniec kwartału. Czego nie może robić: naprawiać czegokolwiek samodzielnie. Włączenie z powrotem zadania, które administrator świadomie wyłączył na czas aktualizacji, to dokładnie ten rodzaj usłużności, który zamienia narzędzie monitorujące w incydent.

Jest jeszcze jedna korzyść, uboczna, ale konkretna. Kiedy coś zaczyna pilnować, czy nocne zadania się uruchomiły, przy okazji powstaje ich inwentarz — a w instalacjach żyjących od kilku lat sam ten inwentarz bywa znaleziskiem. Zadania, których celu nikt nie potrafi wyjaśnić, są częste. Dwa zadania po cichu robiące dokładnie to samo — też.

Od czego zacząłbym w poniedziałek

Spiszcie listę. Każde zaplanowane zadanie, co robi, na jakim koncie się uruchamia i jaki ma interwał cichej awarii. Popołudnie roboty, zero oprogramowania, zero budżetu.

Potem oprzyrządujcie to jedno zadanie o najdłuższym interwale, dokładnie tak, jak wyżej: heartbeat wychodzący tam, gdzie i tak już patrzycie, linijka podsumowania z tym, co obejrzano, a nie tylko z tym, co znaleziono, i alarm na nieobecność przy interwale plus połowa. Jedno zadanie, jeden tydzień. Potem będziecie wiedzieć, czy resztę warto ruszać.

Chcecie drugą opinię o własnej liście? Przyślijcie zaplanowane zadania z jednej instalacji enova365 razem z tym, co każde z nich zasila, a powiem Wam, które mogą być martwe już teraz, a nikt o tym nie wie. Pół godziny, bez opłat — napiszcie do mnie. A jak to wygląda od strony usług, opisuję tutaj: integracja enova365 z AI.

Porozmawiajmy o Twoim projekcie

Bezpłatna 30-minutowa konsultacja. Sprawdzimy, czy i jak mogę pomóc.

Umów bezpłatną 30-minutową rozmowę

Wybierz datę

Sierpień 2026
Pon
Wt
Śr
Czw
Pt
Sob
Ndz
Powrót do bloga

Powiązane wpisy

Comarch Optima API: przewodnik programisty po integracji
Blog

Comarch Optima API: przewodnik programisty po integracji

Pytanie brzmi zwykle: czy Optima ma API. Odpowiedź brzmi: ma pięć różnych rzeczy o tej nazwie, każda z inną licencją, innym właścicielem i innym numerem telefonu, pod który dzwonisz, gdy przestanie działać.

Czytaj dalej
Który agent AI wdrożyć w enova365 jako pierwszy
Blog

Który agent AI wdrożyć w enova365 jako pierwszy

Najcenniejszy agent to prawie zawsze zły pierwszy projekt. Nie dlatego, że się nie da go zbudować — dlatego, że pierwszy wynik pokazuje po dziesięciu tygodniach, a tyle uwagi nikt nie utrzyma. Cztery pytania, które przesiewają kandydatów, i jedna liczba, która mówi, czy wdrożenie wyjdzie.

Czytaj dalej
Konto serwisowe w enova365 — co naprawdę znaczy „tylko do odczytu”
Blog

Konto serwisowe w enova365 — co naprawdę znaczy „tylko do odczytu”

Integracja dostaje konto Administratora, bo rozpisanie uprawnień zajęłoby popołudnie, a nikt nie ma tego popołudnia. Potem okazuje się, że najmocniejszą granicą odczytu w enova365 nie jest wcale drzewko uprawnień, tylko licencja.

Czytaj dalej