Naprawa OCR cron, dropdown statusu, animacje tabeli zleceń
Filip Borkowski, Backend/Frontend/Fullstack Engineer
Naprawa krytycznego buga — OCR cron nie działał
Od momentu wdrożenia endpointu /api/cron/ocr-process cron Vercel zwracał 401 Unauthorized co 10 minut. Powodem była brakująca zmienna środowiskowa CRON_SECRET — Vercel automatycznie wysyła Authorization: Bearer <CRON_SECRET> do endpointów cron, ale zmienna nie była ustawiona w projekcie.
Efekt: emaile z zleceniami tworzyły rekordy w bazie z podstawowymi danymi (numer zlecenia, kontrahent), ale OCR nigdy nie uzupełniał szczegółów z PDF-ów — adresy, wagi, kontenery, daty załadunku pozostawały puste.
Po dodaniu CRON_SECRET i redeployu, ręcznie uruchomiono OCR dla ~50 zaległych zleceń. Wszystkie dane zostały uzupełnione.
OCR przetwarza tylko dzisiejsze zlecenia
Dodano filtr created_at >= dzisiaj (UTC midnight) w cronie OCR. Wcześniej cron brał 500 najnowszych zleceń niezależnie od daty, co mogło powodować niepotrzebne przetwarzanie starszych rekordów. Teraz przetwarza wyłącznie zlecenia z bieżącego dnia — oszczędza wywołania Mistral API i jest bardziej przewidywalny.
Animowany wykrzyknik — brakujące dane
Nowy komponent MissingCell zastąpił zwykły myślnik „—" w pustych polach zleceń, które przyszły z emaila. Pulsująca amber kropka z wykrzyknikiem sygnalizuje że OCR przetworzył PDF ale nie wyciągnął danej wartości.
Po najechaniu wyświetla się tooltip: „Brak danych — OCR nie wyciągnął wartości z PDF".
Dotyczy kolumn: haulier, shipper, consignee, tracking ID, booking number, data załadunku, godzina załadunku, waga brutto, plomba, pier of loading/discharge i innych.
Zlecenia ręczne (bez emaila) dalej pokazują zwykły myślnik.
Synchronizacja migracji Supabase
Zsynchronizowano lokalne pliki migracji z bazą remote — 4 brakujące migracje dodane jako stuby, 2 zduplikowane z niepoprawnymi timestampami usunięte. Naprawia to błąd Supabase Preview check „Remote migration versions not found in local migrations directory".
Dropdown statusu zleceń
Kolumna STATUS w tabeli zleceń zamieniona na interaktywny dropdown z Catalyst UI. Lista statusów pobierana jest z ustawień aplikacji (app_settings → order_statuses). Każdy status ma kolorową kropkę i checkmark przy aktualnie wybranym. Zmiana statusu bezpośrednio z tabeli jednym kliknięciem.
Logika statusów: Przetwarzanie AI → in Planing
Nowe zlecenia z emaila otrzymują teraz status „Przetwarzanie AI" zamiast od razu „in Planing". Po zakończeniu OCR (cron co 10 minut) status automatycznie zmienia się na „in Planing". Dzięki temu widać w tabeli które zlecenia są jeszcze przetwarzane.
Animacje i UI tabeli
- Pulsacja wierszy przetwarzanych w różnym tempie — każdy wiersz ma losowe opóźnienie i czas trwania animacji
- Naprzemienne tła wierszy wg koloru statusu
- Import Raport przeniesiony za L.P., Data/Godzina zlecenia rozdzielone na osobne kolumny
- Piętrowe opisy nagłówków, ciemniejsze obramowanie, centrowanie wartości
- Fix hydratacji React: Checkbox w DropdownItem zamieniony na wizualny span