Kalkulator Godzin Odoo (Duck Odoo Calc)

Aplikacja webowa służąca do pobierania, analizowania oraz interaktywnego kalkulowania godzin pracy na podstawie rejestru obecności z systemu Odoo (hr.attendance).

Główne Funkcjonalności

  • Logowanie danymi Odoo: Bezpieczne logowanie i generowanie sesji JWT.
  • Automatyczne pobieranie danych: Pobieranie historii wejść/wyjść dla wybranego miesiąca i roku.
  • Wizualizacja danych: Stackowany wykres kolumnowy (Chart.js) prezentujący przepracowany czas, dni urlopowe oraz chorobowe.
  • Interaktywny kalendarz:
    • Szybkie dodawanie i usuwanie wpisów obecności.
    • Wygodne suwaki czasu (TimeStepper) do edycji godzin wejścia/wyjścia (z dokładnością do minuty).
    • Możliwość oznaczania dni jako urlop (8h) lub chorobowe (6.4h - 80%).
  • Automatyczne przeliczanie:
    • Uwzględnianie świąt państwowych w Polsce oraz weekendów.
    • Automatyczne odliczanie 15-minutowej przerwy obiadowej (0.25h) przy każdym dniu pracy.
    • Bieżące wyliczanie salda nadgodzin (bilansu dziennego i ogólnego).

Wymagania i Konfiguracja

Przed uruchomieniem aplikacji należy utworzyć plik .env w katalogu backend/ i skonfigurować następujące zmienne:

SECRET_KEY=twoj_klucz_jwt_np_z_openssl_rand_hex_32
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=60
ODDO_URL=https://odoo.twoja-firma.pl
DB_NAME=nazwa_bazy_danych_odoo
ORIGINS=http://localhost:6080

Uruchomienie Projektu

Aplikacja jest w pełni konteneryzowana za pomocą Docker Compose. Aby ją zbudować i uruchomić locally, wykonaj polecenie:

docker compose up --build

Po uruchomieniu:

  • Aplikacja frontendowa (Vue) będzie dostępna pod adresem: http://localhost:6080/odoo/
  • API backendowe (FastAPI) będzie dostępne pod adresem: http://localhost:8000/ (proxy z frontendu przekierowuje zapytania /odoo/api/ na backend).

Szczegółowa Dokumentacja

Pełna specyfikacja techniczna, w tym struktura plików, algorytmy obliczeniowe, konfiguracja Nginx oraz opis testów jednostkowych znajduje się w pliku:

Description
No description provided
Readme 220 KiB
Languages
Vue 46.8%
JavaScript 28.4%
Python 14.1%
CSS 8.9%
HTML 1%
Other 0.8%