Skip to content

status sesji - 200 vs 445 (brak poprawnych faktur) #806

@jacekkarczmarczyk

Description

@jacekkarczmarczyk

Większość statusów sesji wsadowej 4xx ma sens, np. błąd odszyfrowywania, sesja anulowana, błąd dekompresji itp - w takich przypadkach sesja faktycznie nie mogła zostać przetworzona - przy wysyłce mogę użytkownikowi pokazać odpowiedni komunikat ze StatusInfo.

Natomiast jeśli jest brak poprawnych faktur to wydaje mi się, że sesja powinna zostać potraktowana jako przetworzona czyli otrzymać status 200, nie bardzo widzę czym się różni sesja, gdzie jest 1000 faktur w tym 999 błędnych od takiej gdzie jest 1000 faktur i 1000 błędnych. Jedyna różnica to chyba tylko możliwość wygenerowania UPO, ale to można obsłużyć odpowiednim komunikatem przy generowaniu UPO.

Problem praktyczny w moim przypadku jest taki, że muszę specjalnie obsługiwać konkretny status 445. W pozostałych przypadkach sprawa jest prosta: 1xx czekamy, 2xx ok, 4xx/5xx błąd. Dla 4xx/5xx (innych niż 445) po prostu wyświetlam błąd i zostawiam faktury w systemie jako niewysłane. Dla 2xx oznaczam wszystkie faktury jako wysłane lub jako błędne na podstawie odpowiedzi z endpointu zwracającego faktury sesji. Podobnie też robię dla 445 tylko, że muszę mieć if code = 445 ... co jest takie sobie.

Stąd moje 2 postulaty:

  • jeśli żadna z faktur nie jest poprawna status sesji niech zwraca 200 (bo jakby nie patrzeć sesja została przetworzona poprawnie, można zostawić 455 dla przypadku kiedy po prostu nie wysłano żadnych faktur)
  • poza dokładną przyczyną błędu (np. błąd odszyfrowywania) status sesji mógłby zwracać jakieś prostego enuma (OK/OPEN/PROCESSING/BAD_REQUEST/SERVER_ERROR itp) - takie coś prawdopodobnie przydałoby się też w innych miejscach. Przykładowo o ile pamiętam statusy 1xx są różne dla sesji wsadowej i interaktywnej, enum ujednoliciłby obsługę

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions