GitLens-style graf emaili, dopasowanie kontrahentów i optymalizacje wydajności
Filip Borkowski, Backend/Frontend/Fullstack Engineer
GitLens-style graf emaili, dopasowanie kontrahentów i optymalizacje wydajności
Dzisiejsza aktualizacja wprowadza graficzną wizualizację przepływu emaili, inteligentne dopasowanie kontrahentów po domenie nadawcy oraz znaczące optymalizacje wydajności panelu.
Wizualizacja statusu emaili (GitLens Graph)
Inspirowana narzędziem GitLens dla Visual Studio Code, nowa kolumna Graph w widoku Zlecenia Email wizualizuje przepływ wiadomości w każdym wątku.
- Kolorowe kropki statusu — zielona (sparsowany automatycznie), pomarańczowa (wymaga ręcznej obsługi), czerwona (błąd parsowania)
- Linie przepływu — pionowe i poziome gałęzie łączą emaile w wątku, pokazując hierarchię oryginał → odpowiedzi
- Tooltip — najechanie na kropkę pokazuje status parsowania danej wiadomości
- Legenda — czytelna legenda kolorów statusów nad tabelą
Wyrównanie kolumn i stabilny widok
Poprawiono układ tabeli emaili — kolumny mają teraz stałe szerokości i nie zmieniają rozmiaru przy interakcji użytkownika.
- table-fixed — stałe szerokości kolumn zapobiegają skakaniu layoutu
- Wyrównane komórki — nagłówki wątków i rozwinięte wiadomości mają identyczny układ kolumn
- Wcięcie rozwinięcia — emaile wewnątrz wątku mają mniejszy font i wizualne odróżnienie
Automatyczne dopasowanie kontrahentów po domenie
Do tej pory system rozpoznawał kontrahenta tylko po dokładnym adresie email. Teraz działa dwuetapowe dopasowanie:
- Exact match — szukanie kontrahenta po pełnym adresie email
- Fallback po domenie — jeśli exact match nie znajdzie wyniku, system wyciąga domenę z adresu nadawcy i szuka w polu
email_aliaskontrahenta
Wystarczy w ustawieniach kontrahenta włączyć opcję „Automatycznie przypisuj emaile z domeny" i wpisać domenę (np. translog.de), aby wszystkie emaile z adresów *@translog.de były automatycznie przypisywane.
Optymalizacje wydajności
Przeprowadzono audyt wydajności 3 kluczowych stron dashboardu:
- Biblioteka danych — 18 sub-filtrów opakowane w
useMemo, komponentyTreeNodeiRecordRowzReact.memo, wyszukiwanie pracowników O(1) zamiast O(n) - Flota — mapa podmiotów (
entityMap) zamiast powtarzanegofind()w sortowaniu i renderowaniu - Zadania — redukcja niepotrzebnych re-renderów
Inne zmiany
- Sidebar: zmieniono nazwę „Parametry" na „Parametry logiki"
- Nowa strona Parametry logiki z regułami biznesowymi systemu