Obsługa rzeczywistych wyjątków zaczyna się od prawdziwych przykładów. Dowiedz się, jak zebrać późne zatwierdzenia, brakujące dane i przypadki specjalne przed napisaniem logiki aplikacji.

Czysty schemat blokowy wygląda dobrze, bo zakłada, że ludzie robią rzeczy we właściwej kolejności, z prawidłowymi danymi i w odpowiednim czasie. W rzeczywistości praca rzadko tak wygląda. Ktoś wysyła formularz za późno, menedżer jest na chorobowym, klient pomija ważny szczegół, albo płatność wymaga specjalnego zatwierdzenia, o którym nikt nie wspomniał na początku.
Dlatego pierwsza wersja aplikacji może wydawać się skończona na demo, a potem zacząć się psuć, gdy używają jej prawdziwi ludzie. "Happy path" działa. Codzienna praca długo nie trzyma się szczęśliwej ścieżki.
Najbezpieczniej założyć, że uporządkowana wersja jest niekompletna. Proste żądanie może zmienić się błyskawicznie, gdy zabraknie jednego szczegółu. Jedno brakujące pole, nietypowy klient lub opóźnione zatwierdzenie mogą zatrzymać cały proces i zostawić ludzi w niepewności, co robić dalej.
Zwykłe awarie są zazwyczaj proste:
To więcej niż drobna niedogodność. Jeden nietypowy przypadek może zablokować wszystko za nim. Pracownicy zaczynają używać obejść w czacie, arkuszach kalkulacyjnych lub mailach, a aplikacja przestaje być jedynym miejscem, gdzie praca się odbywa.
Lepszy cel jest prosty: zbierz wyjątki zanim napiszesz reguły. Zapytaj, co się dzieje, gdy brakuje danych, gdy czas się nie zgadza i gdy żądanie nie pasuje do standardowej ścieżki. Te nieporządne przykłady nie są detalami pobocznymi. To one decydują o tym, czy twoja aplikacja zadziała w praktyce.
Pierwsze problemy do uchwycenia to nie rzadkie przypadki brzegowe. To bałaganiarskie zdarzenia, które dzieją się co tydzień i potajemnie psują czysty przepływ. Jeśli chcesz silniejszej pierwszej wersji, szukaj miejsc, gdzie praca się opóźnia, blokuje lub trafia do osoby, bo system nie potrafi zdecydować.
Późne zatwierdzenia zwykle są wysoko na liście. Menedżer zatwierdza wniosek po terminie, po zamknięciu listy płac albo po tym, jak towar został już zamówiony. Aplikacja potrzebuje reguły na ten moment. Czy powinna otworzyć ponownie wniosek, utworzyć nowy, powiadomić dział finansów, czy skierować go do przeglądu zamiast udawać, że zatwierdzenie przyszło na czas?
Brakujące dane to kolejny częsty blokujący element. Formularz może zostać wysłany bez NIP-u, paragonu, daty dostawy albo kontaktu do klienta. Jeśli kolejny krok zależy od tego pola, przepływ nie powinien padać z niejasnym błędem. Powinien wstrzymać się, pokazać, czego brakuje i ułatwić poprawienie.
Przypadki specjalne mają znaczenie, bo ujawniają ograniczenia normalnej ścieżki. Może większość zwrotów jest prosta, ale zwroty powyżej pewnej kwoty wymagają dodatkowego dowodu. Może jeden dział stosuje inną regułę zatwierdzeń. Te przypadki nie potrzebują nowej aplikacji, ale potrzebują jasnego rozgałęzienia.
Przydatny pierwszy przegląd to szukanie czterech wzorców: zatwierdzenia przychodzące za późno, by pójść pierwotną ścieżką; brakujące dane blokujące kolejny krok; nietypowe żądania wymagające innej reguły; oraz momenty, kiedy system powinien zatrzymać się i zapytać osobę.
Przegląd ludzki nie jest porażką. Często to najbezpieczniejszy wybór, gdy aplikacja widzi sprzeczne dane, wyjątek polityki lub działanie o wysokim koszcie. Kolejka wstrzymanych przeglądów zwykle jest lepsza niż cichy błąd.
Jeśli znajdziesz te wyjątki wcześnie, pierwsza wersja będzie znacznie bardziej realistyczna i mniej kruche.
Najszybszy sposób, by nie zauważyć złego wyjątku, to pytać tylko menedżera, który zaprojektował proces. Prawdziwe problemy zwykle są u osób wykonujących pracę na co dzień. One wiedzą, które kroki się pomijają, które pola często są puste i które zatwierdzenia przychodzą za późno, poza kolejnością lub poza systemem.
Zacznij od krótkich rozmów. Poproś ludzi, żeby przeszli przez normalny przypadek, a potem zapytaj, co się zmieniło, gdy ostatnim razem zrobiło się bałaganiarsko. Nie pytaj o ogólne opinie o procesie. Poproś o prawdziwe historie: co się stało, czego brakowało, kto to naprawił i co musieli zrobić ręcznie.
Stara praca to kolejne dobre źródło. Minione e-maile, tickety wsparcia, wiadomości na czacie i notatki przekazania często pokazują dokładny moment, w którym czysty przepływ się złamał. Te zapisy są przydatne, bo pokazują język, jakim ludzie mówią, gdy coś idzie nie tak, a nie wypolerowaną wersję z dokumentu procesowego.
Sprawdź też narzędzia, których ludzie używają bokiem. Jeśli ktoś prowadzi arkusz kalkulacyjny, listę karteczek lub prywatny dokument do śledzenia wyjątków, to mocny sygnał. Obejścia istnieją z jakiegoś powodu. Często ujawniają reguły, których twoja aplikacja będzie potrzebować od pierwszego dnia.
Najlepsze źródła do przeglądu na start to zwykle systemy cieniowe jak arkusze i osobiste listy kontrolne, wątki e-mailowe, w których ludzie proszą o brakujące szczegóły lub ręczne zatwierdzenia, rozmowy na czacie o pilnych poprawkach, tickety wsparcia wspominające opóźnienia lub odrzucone wpisy oraz ostatnie kilka spraw, które się nie powiodły, z pełnym przebiegiem zdarzeń.
To ostatnie źródło jest ważniejsze, niż się wydaje. Niedawno nieudane przypadki często są lepsze niż stare podsumowania, bo pokazują dokładny łańcuch zdarzeń. Możesz znaleźć wzorce jak zatwierdzenie po terminie, klient, który nigdy nie wysłał wymaganych plików, albo ktoś stosujący specjalną regułę, której nikt nie udokumentował.
Jeśli szkicujesz pierwszą wersję w narzędziu opartym na czacie, zbierz te przykłady zanim wygenerujesz logikę. Łatwiej jest zbudować bezpieczniejsze przepływy, gdy nieporządne przypadki są widoczne wcześniej.
Zacznij od jednego prawdziwego przypadku, nie od teorii. Zapisz go tak, jak osoba wyjaśniłaby to współpracownikowi: co próbowała zrobić, co poszło nie tak, kto się wtrącił i jak się to skończyło.
Nieporządna historia typu "wniosek utknął, bo menedżer był na urlopie, potem finans zatwierdził go później bez jednego pola" jest bardziej użyteczna niż schludny schemat blokowy. Pokazuje punkty, w których aplikacje zwykle zawodzą.
Dla każdego przypadku wyciągnij cztery fakty: co się stało, kto podjął decyzję, dlaczego ją podjął i co aplikacja powinna zrobić dalej.
To utrzymuje fokus na zachowaniu, nie tylko ekranach. Celem nie jest pokrycie każdego dziwnego przypadku na pierwszy dzień. Celem jest wychwycenie powtarzalnych wzorców.
Gdy masz kilka historii, pogrupuj te, które są podobne. Pojawią się proste kubełki: późne zatwierdzenie, brakujące informacje, niewłaściwa osoba zapytana, duplikat wniosku lub specjalne zatwierdzenie potrzebne powyżej limitu.
Następnie przekształć każdy kubełek w najlżejszą regułę, która działa. Ta reguła nie zawsze musi oznaczać pełną automatyzację. Czasem najlepsza reguła to ostrzeżenie, pauza lub krok manualnego przeglądu.
Na przykład, jeśli zatwierdzenie jest opóźnione, bo zatwierdzający jest nieobecny, aplikacja może wysłać przypomnienie po 24 godzinach, przekierować po 48 godzinach albo poprosić zapasowego zatwierdzającego do przeglądu. Jeśli brakujące pole jest istotne, najlepszą opcją może być zapisanie wersji roboczej zamiast twardego zablokowania. To pozwala procesowi iść dalej bez ukrywania problemu.
Jeśli budujesz w narzędziu opartym na czacie, takim jak Koder.ai, przypadki w języku naturalnym bardzo pomagają. Dają systemowi coś konkretnego, więc pierwszy przepływ opiera się na realnych decyzjach zamiast na czystym, ale nierealistycznym założeniu.
Zanim zamkniesz logikę, przetestuj ją na dwóch lub trzech prawdziwych historiach. Zadaj kilka podstawowych pytań. Czy przepływ osiąga ten sam rezultat co prawdziwy przypadek? Czy bezpiecznie zawodzi, gdy brakuje informacji? Czy wie, kiedy się zatrzymać i poprosić człowieka?
Jeśli odpowiedź brzmi "nie", nie dodawaj od razu złożoności. Najpierw przepisz regułę prostszymi słowami. Jasne reguły zwykle prowadzą do lepszych przepływów niż sprytne reguły, których nikt nie potrafi wytłumaczyć.
Zacznij od czystej wersji. Pracownik zgłasza wydatek 42 USD za taksówkę po wizycie u klienta. Dodaje datę, kwotę, nazwę projektu i paragon. Menedżer zatwierdza przed zamknięciem listy płac, a dział finansów uwzględnia go w następnym zwrocie.
Ta ścieżka jest łatwa do odwzorowania, ale to nie cała praca.
Teraz dodaj pierwszy wyjątek. Pracownik zgłasza wniosek na czas, ale menedżer zatwierdza go dzień po zamknięciu listy płac. Aplikacja nie powinna cicho przepchnąć go tak, jakby nic się nie stało, ale też nie powinna odrzucić roszczenia.
Lepsza reakcja to przeniesienie wniosku do wyraźnego statusu takiego jak "zatwierdzone po terminie". Stamtąd aplikacja może wstrzymać płatność do następnego cyklu, powiadomić pracownika o nowej dacie wypłaty i skierować sprawę do finansów tylko wtedy, gdy polityka firmy pozwala na ręczną płatność poza cyklem.
To oznacza, że aplikacja powinna zapisywać więcej niż jedną datę. Powinna śledzić, kiedy wydatek został zgłoszony, kiedy zatwierdzono i którego terminu dotyczyło opóźnienie.
Dodaj teraz drugi wyjątek. Pracownik zapomniał paragonu, więc menedżer zatwierdza na podstawie wyjaśnienia. Dwa dni później paragon przychodzi.
Jeśli aplikacja jest dobrze zbudowana, sprawa nie znika ani nie zaczyna się od zera. Przechodzi do stanu "oczekuje na paragon", wysyła przypomnienie i pozostaje otwarta. Gdy paragon zostanie później przesłany, aplikacja ponownie otwiera sprawę i wysyła ją tylko do kroku, który nadal wymaga działania.
Taki przepływ może przechodzić przez kilka prostych stanów: wysłane, oczekuje na zatwierdzenie menedżera, zatwierdzone po terminie, wstrzymane z powodu brakującego paragonu oraz ponownie otwarte do przeglądu finansowego.
Tak w praktyce wygląda obsługa wyjątków. Aplikacja nie tylko decyduje tak lub nie. Decyduje, czy wstrzymać, skierować lub ponownie otworzyć sprawę, nie tracąc kontekstu, dat ani odpowiedzialności.
Brakujące informacje są normą, nie rzadkim przypadkiem brzegowym. Jeśli twoja aplikacja zakłada, że każdy formularz będzie kompletny za pierwszym razem, przepływ zatrzyma się, gdy prawdziwi użytkownicy napotkają lukę. Lepsza reguła jest prosta: wymagaj tylko tego, co potrzebne do następnego kroku.
Planowanie rób krok po kroku. Zapytaj, co aplikacja musi wiedzieć teraz, a co może poczekać. Wniosek o zwrot wydatków może wymagać kwoty i nazwiska pracownika przed wysłaniem, ale ostateczny paragon może być potrzebny dopiero przed płatnością. To pozwala pracy iść dalej bez obniżenia kontroli.
Użytkownicy powinni móc zapisać postęp nawet wtedy, gdy brakuje szczegółów. Wersja robocza, którą można ponownie otworzyć, jest znacznie lepsza niż formularz, który zmusza do zaczynania od początku. Ma to większe znaczenie, gdy brakujące informacje zależą od kogoś innego, jak menedżer, dostawca czy dział finansów.
Jasne statusy pomagają wszystkim zrozumieć, co się dzieje. Trzymaj je krótkie i łatwe do przejrzenia: oczekuje na informacje, zablokowane przez brakujący dokument, wymaga przeglądu, gotowe do zatwierdzenia, odesłane do aktualizacji.
Te etykiety wykonują dwie funkcje jednocześnie. Pokazują obecny stan i mówią użytkownikowi, jaki rodzaj problemu trzeba rozwiązać.
Każdy brakujący element także potrzebuje właściciela. Jeśli brakuje NIP-u, kto go doda? Jeśli paragon jest nieczytelny, kto go wymieni? Jeśli brak notatki zatwierdzającej, kto może ją dostarczyć? Gdy nikt nie ma przypisanej odpowiedzialności, rekordy zalegają w próżni.
Prosty przykład to jasne. Wyobraź sobie, że pracownik zgłasza koszt podróży bez paragonu, bo hotel jeszcze go nie wysłał. Aplikacja powinna pozwolić zapisać i wysłać wniosek z statusem "oczekuje na paragon". Finans może sprawdzić resztę, pracownik wie, czego brakuje, i żądanie nie znika w cichym błędzie.
Automatyzacja działa najlepiej, gdy ten sam zestaw danych niemal zawsze powinien prowadzić do tego samego wyniku. Jeśli żądanie podąża jasnym wzorcem, daj mu regułę. Jeśli odpowiedź zależy od brakującego kontekstu, nietypowego czasu lub oceny, skieruj je do człowieka.
Ten podział ma znaczenie. Dobra aplikacja powinna szybko przetwarzać normalne przypadki i zwalniać przy niejasnych. Zła automatyczna decyzja może stworzyć więcej pracy niż krótki ręczny przegląd.
Prosty test pomaga: czy dwie różne osoby z zespołu podjęłyby tę samą decyzję na podstawie tych samych danych? Jeśli tak, zautomatyzuj. Jeśli nie, trzymaj człowieka w pętli.
Dobre kandydaty do automatyzacji to kompletne formularze ze wszystkimi wymaganymi polami, żądania mieszczące się w polityce, powtarzalne działania z jasnymi terminami i zatwierdzenia, które zawsze idą tą samą ścieżką.
Niektóre sytuacje nie powinny być w ogóle zgadywane: kluczowe szczegóły brakują, wniosek łamie normalny wzorzec, dwie reguły ze sobą kolidują, koszt lub ryzyko są wysokie albo ktoś musi wyjaśnić wyjątek.
Wyobraź sobie wniosek podróżny bez miejsca docelowego, z pilną datą i kosztem powyżej zwykłego limitu. Aplikacja nie powinna próbować być sprytna. Powinna oznaczyć sprawę, wstrzymać przepływ i skierować do właściwej osoby.
Równie ważne jest, by powód każdego wyjątku był widoczny. Pokaż, dlaczego aplikacja się zatrzymała, która reguła została wyzwolona i jakich informacji brakuje. To przyspiesza przeglądy i pomaga zespołowi udoskonalić później przepływ.
Wiele projektów aplikacji psuje się zanim ktoś napisze logikę. Zespół szkicuje czystą ścieżkę, zakłada, że ludzie będą jej przestrzegać i ignoruje dziwne przypadki, które zdarzają się co tydzień. Tak proste przepływy zamieniają się w tickety wsparcia, ręczne poprawki i zdezorientowanych użytkowników.
Pierwszy błąd to projektowanie wyłącznie na podstawie założeń. Jeśli zgadujesz, jak zwykle działają zatwierdzenia, brakujące pola czy wyjątki, przegapisz przypadki, które mają największe znaczenie. Menedżer zatwierdza za późno, rekord klienta przychodzi niekompletny albo płatność wymaga dodatkowego przeglądu, bo kwota jest nietypowa.
Inny błąd to ukrywanie wielu różnych sytuacji w jednej niejasnej regule. Reguła typu "wyślij do administracji, jeśli coś wygląda źle" brzmi elastycznie, ale tworzy nowe problemy. Kto to jest administracja? Co liczy się jako "źle"? Co się stanie, jeśli nikt nie odpowie przez dwa dni?
Szkodzi też użytkownikom, gdy aplikacja wymusza pełne rozpoczęcie od nowa. Jeśli brakuje jednego dokumentu lub jeden zatwierdzający odrzuca krok, ludzie nie powinni być zmuszeni do ponownego wprowadzania wszystkiego od początku. Lepszy przepływ zapisuje postęp, sygnalizuje problem i pozwala użytkownikowi naprawić tylko zablokowaną część.
Inne problemy łatwo przeoczyć, bo brzmią drugorzędnie: czas, odpowiedzialność i historia. To nie są drugorzędne sprawy. Jeśli zatwierdzenie przychodzi po terminie, aplikacja musi wiedzieć, czy je zaakceptować, eskalować czy ponownie otworzyć wniosek. Jeśli sprawa jest zablokowana, ktoś musi być właścicielem następnego działania. Jeśli status się zmienia, ludzie muszą widzieć, kto to zmienił i dlaczego.
Historia audytu ma znaczenie z prostych powodów. Ludzie muszą wiedzieć, kto zmienił wartość, kto zatwierdził wyjątek i kiedy status się przesunął.
Zanim zamienisz przepływ w reguły, zatrzymaj się i sprawdź, czy twoje wejścia pasują do realnej pracy. Czyste diagramy często pomijają dziwne przypadki, które powodują opóźnienia, zamieszanie lub ręczne poprawki później.
Krótki przegląd pomaga:
Prosty przypadek testowy często wystarczy, by ujawnić słabą logikę. Wyobraź sobie wniosek zakupowy wysłany bez nazwy dostawcy, a potem zatwierdzony za późno przez kierownika działu. Czy wnioskodawca może poprawić brakujące pole? Czy aplikacja wie, czy ponownie otworzyć wniosek, kontynuować, czy poprosić finansów o przegląd?
To poziom szczegółu, którego chcesz przed wygenerowaniem logiki. Krótkie, prawdziwe historie prowadzą do bezpieczniejszych pierwszych wersji i mniej niespodzianek po wdrożeniu.
Zacznij od małej części. Wybierz jeden przepływ, nie cały biznes. Zbierz potem pięć prawdziwych przypadków wyjątków od osób wykonujących pracę codziennie — na przykład późne zatwierdzenie, brakujący paragon, menedżer na urlopie, duplikat wniosku albo sprawa, która wymaga interwencji finansów.
Zbuduj pierwszą wersję wokół tego wąskiego przepływu i tych pięciu przypadków. Trzymaj reguły czytelne. Jeśli wniosek jest niekompletny, pokaż, czego brakuje. Jeśli zatwierdzenie jest późne, zdecyduj, kiedy przypominać, kiedy eskalować i kiedy wstrzymać. Jeśli sprawa nie pasuje do normalnej ścieżki, jasno wskaż, kto ma ją przejrzeć.
Następnie przetestuj to z zaangażowanymi osobami: osobą składającą wniosek, pierwszym zatwierdzającym, osobą naprawiającą wyjątki, menedżerem otrzymującym eskalacje i każdym, kto widzi ostateczny wynik.
Obserwuj, gdzie się zatrzymują, zgadują lub proszą o pomoc. Te momenty są ważniejsze niż to, co działa płynnie. Jeśli trzy osoby utkną w tym samym kroku, reguła lub ekran wymaga zmiany.
Aplikacja wydatków może działać dobrze, dopóki ktoś nie zgłosi paragonu taksówki bez kodu projektu albo nie wyśle go po miesięcznym terminie. Twoja pierwsza wersja nie musi rozwiązywać każdego rzadkiego przypadku. Powinna wychwytywać częste wyjątki, wyjaśniać kolejny krok i zostawić jasną ścieżkę do przeglądu ludzkiego.
Potem wprowadzaj poprawki małymi rundami. Usuń kroki, które wprowadzają zamieszanie. Dodawaj pola tylko wtedy, gdy zapobiegają powtarzającym się problemom. Zmieniaj timing przypomnień, jeśli są za wczesne lub za późne. Małe poprawki po realnym testowaniu zwykle są lepsze niż dodawanie złożonej logiki specjalnych przypadków zbyt wcześnie.
Jeśli chcesz prototypować szybko, narzędzie oparte na czacie takie jak Koder.ai może pomóc przekształcić te prawdziwe przykłady krok po kroku w działającą aplikację. Klucz jest ten sam: zacznij od nieporządnych historii, potem buduj reguły wokół nich.
The best way to understand the power of Koder is to see it for yourself.