Zakres: wszystkie przypadki wpływające na czas pracy poza ręcznym Start/Stop użytkownika.
| Sytuacja | Co robi system | Efekt biznesowy |
|---|---|---|
| Wykryto hibernację | Kończy bieżący wpis na ostatnim wiarygodnym punkcie przed snem. | Brak „sztucznego” naliczania podczas snu komputera. |
| Dual-entry OFF | Powstaje 1 wpis (praca do momentu uśpienia). | Okres snu nie jest osobno rejestrowany. |
| Dual-entry ON i krótka hibernacja (w zakresie progów) | Powstają 2 wpisy:
|
Widoczna informacja o nieaktywności użytkownika. |
| Dual-entry przez północ | 2. wpis jest dzielony per dzień (brak jednego ciągłego wpisu przez północ). | Raporty dzienne są spójne. |
| Akcja użytkownika | Co robi system | Status biznesowy |
|---|---|---|
| Kliknięcie „TAK” | Zamknięcie starego wpisu o 23:59:59 i automatyczny start nowego o 00:00:00. | kontynuacja pracy |
| Kliknięcie „Zakończ teraz” | Natychmiastowe zakończenie naliczania (jak ręczne zatrzymanie). | zakończenie przez użytkownika |
| Brak reakcji do północy | Zakończenie o 23:59:59 bez kontynuacji. | nieaktywność użytkownika |
| Start zadania < 15 min przed północą | Bez okna; automatyczny split 23:59:59 / 00:00:00. | automatyczna kontynuacja |
| Flaga | Znaczenie |
|---|---|
HibernationDualEntryEnabled |
Włącza/wyłącza ścieżkę 2 wpisów po krótkiej hibernacji. |
HibernationDualEntryMaxDurationMinutes |
Maksymalna długość hibernacji kwalifikująca do 2. wpisu. |
HibernationHeuristicThresholdSeconds |
Minimalny próg wykrycia hibernacji (aktualnie 120 sekund = 2 minuty). |
MidnightGuardPromptMinutes |
Aktywny offset pytania o północ (30 min). |
MidnightGuardAutoContinueIfStartedWithinMinutes |
Jeśli zadanie uruchomiono w tym progu przed północą, system nie pyta i robi automatyczny split. |
LongWorkingSessionLimitHours |
Limit długiej sesji; liczony ciągle przez północ po potwierdzeniu usera. |
| Sytuacja | Co robi system | Efekt biznesowy |
|---|---|---|
| Przekroczenie limitu ciągłej pracy (domyślnie 4h) | Pokazuje okno z decyzją: TAK / Zakończ teraz / Zakończ o HH:mm:ss. | Kontrola długiej pracy bez utraty ciągłości sesji. |
| Long guard: „Zakończ o HH:mm:ss” | Zatrzymuje naliczanie na czasie pojawienia się okna (np. 4h, 8h, ... ciągłej sesji). | Precyzyjne domknięcie wpisu na granicy cyklu guarda. |
| Midnight guard aktywny/pending | Long guard jest tymczasowo tłumiony. | Brak konfliktu wielu okien na raz. |
| Brak reakcji w oknie long guard | Zamyka naliczanie jako nieaktywność. | Auto-stop bez ręcznego kliknięcia. |
| Sytuacja | Co robi system | Efekt biznesowy |
|---|---|---|
| Wykryta istotna anomalia czasu (clock skew) | Automatycznie kończy aktywne naliczanie i pokazuje komunikat. | Eliminacja błędnego naliczania po zmianie zegara. |
| Sytuacja | Co robi system | Efekt biznesowy |
|---|---|---|
| Aktywny wpis lokalnie, brak aktywnego odpowiednika po stronie API | Synchronizacyjnie zatrzymuje lokalne naliczanie i pokazuje okno MissingTask. | Spójność z backendem + jasna informacja dla użytkownika. |
| API zwraca pustą listę zadań | Pusty payload listy zadań jest ignorowany (cache lokalny zostaje). | Brak pochopnego usuwania listy zadań po stronie klienta. |
| Sytuacja | Co robi system | Status biznesowy |
|---|---|---|
| Restart aplikacji z lokalnym aktywnym wpisem | Domyka wpis automatycznie przy starcie. | AutoFinishAfterAppRestart (2) |
| Aktualizacja aplikacji / techniczna konsolidacja aktywnych wpisów | Domyka technicznie wpisy wymagające porządku i synchronizacji. | AutoFinishDueToAppUpdate (4) |
| Fallback Quartz po północy (> 5 min po 00:00) | Awaryjnie domyka wpis na 23:59:59 poprzedniego dnia. | AutoFinishAfterSystemRestart (3) |
| Quartz wykryje długą przerwę aktywności przy zmianie doby | Zamyka wpis na znaczniku ostatniej aktywności. | AutoFinishDueToUserInactivity (5) |
| Obszar | Czy zmienia WorkTime | Pokrycie |
|---|---|---|
| Hibernacja / sen | Tak | Tak |
| Północ | Tak | Tak |
| Długa praca | Pośrednio / Tak | Tak |
| Zmiana zegara | Tak | Tak |
| Zniknięcie zadania z API | Tak | Tak |
| Restart / update / fallback Quartz | Tak | Tak |
Poniżej makiety wszystkich okien guardów/komunikatów, utrzymane w stylu aplikacji.