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_settingsorder_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

Więcej artykułów

Akordeonowy widok korespondencji email i poprawki WorkDesk

Nowy wątkowy widok emaili z animowanymi akordeonami, podgląd treści wiadomości, poprawki WorkDesk i Biblioteki danych.

Czytaj więcej

Realtime, animacje OCR i wyrównanie tabeli zleceń

Naprawa automatycznej aktualizacji tabeli zleceń (Supabase Realtime + RLS), animacja OCR w pustych komórkach przetwarzanych zleceń oraz globalne wyrównanie do środka w tabelach.

Czytaj więcej