diff --git a/backend/add-sick-index.sql b/backend/add-sick-index.sql index 3b90053..ecc3c83 100644 --- a/backend/add-sick-index.sql +++ b/backend/add-sick-index.sql @@ -1,11 +1,23 @@ -- SQL Script: Index zur sick-Tabelle hinzufügen -- Verbessert die Performance beim Abrufen von Krankheitseinträgen --- Ausführen mit: mysql -u root -p stechuhr < add-sick-index.sql - -USE stechuhr; +-- Ausführen mit: mysql -u root -p timeclock < add-sick-index.sql -- Index für user_id und first_day (für effiziente Abfragen nach User und Datum) -CREATE INDEX IF NOT EXISTS idx_sick_user_first_day ON sick (user_id, first_day DESC); +-- Prüfe zuerst ob der Index bereits existiert +SELECT COUNT(*) INTO @index_exists +FROM information_schema.statistics +WHERE table_schema = DATABASE() + AND table_name = 'sick' + AND index_name = 'idx_sick_user_first_day'; -SELECT 'Index idx_sick_user_first_day erfolgreich erstellt oder bereits vorhanden.' AS status; +SET @sql = IF(@index_exists = 0, + 'CREATE INDEX idx_sick_user_first_day ON sick (user_id, first_day DESC)', + 'SELECT "Index idx_sick_user_first_day existiert bereits" AS Info' +); + +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SELECT 'Index idx_sick_user_first_day erfolgreich erstellt oder bereits vorhanden.' AS Status; diff --git a/backend/add-vacation-index.sql b/backend/add-vacation-index.sql index 7f28f09..76d882e 100644 --- a/backend/add-vacation-index.sql +++ b/backend/add-vacation-index.sql @@ -1,9 +1,22 @@ -- Füge Index für vacation Tabelle hinzu -- Optimiert die Abfrage: WHERE user_id = ? AND first_day >= ? ORDER BY first_day DESC +-- Ausführen mit: mysql -u root -p timeclock < add-vacation-index.sql -CREATE INDEX idx_vacation_user_first_day -ON vacation (user_id, first_day DESC); +-- Prüfe zuerst ob der Index bereits existiert +SELECT COUNT(*) INTO @index_exists +FROM information_schema.statistics +WHERE table_schema = DATABASE() + AND table_name = 'vacation' + AND index_name = 'idx_vacation_user_first_day'; --- Prüfe ob der Index erstellt wurde -SHOW INDEX FROM vacation WHERE Key_name = 'idx_vacation_user_first_day'; +SET @sql = IF(@index_exists = 0, + 'CREATE INDEX idx_vacation_user_first_day ON vacation (user_id, first_day DESC)', + 'SELECT "Index idx_vacation_user_first_day existiert bereits" AS Info' +); + +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SELECT 'Index idx_vacation_user_first_day erfolgreich erstellt oder bereits vorhanden.' AS Status; diff --git a/backend/adjust-overtime-offset-to-3h.sql b/backend/adjust-overtime-offset-to-3h.sql new file mode 100644 index 0000000..8507dd1 --- /dev/null +++ b/backend/adjust-overtime-offset-to-3h.sql @@ -0,0 +1,46 @@ +-- Overtime Offset anpassen +-- Ziel: Überstunden von 95h auf 3h reduzieren +-- Datum: 2025-10-20 + +-- Aktuellen Wert anzeigen +SELECT + id, + full_name, + overtime_offset_minutes as 'Aktueller Offset (Minuten)', + CONCAT( + IF(overtime_offset_minutes >= 0, '+', '-'), + FLOOR(ABS(overtime_offset_minutes) / 60), + ':', + LPAD(ABS(overtime_offset_minutes) % 60, 2, '0') + ) as 'Aktueller Offset (formatiert)' +FROM user +WHERE id = 1; + +-- Berechnung: +-- Aktuell: +95h Überstunden (mit Offset +5620 min) +-- Gewünscht: +3h Überstunden +-- Differenz: 95 - 3 = 92h = 5520 min +-- Neuer Offset: 5620 - 5520 = 100 min = +1:40h + +-- Setze neuen Offset +UPDATE user +SET overtime_offset_minutes = 100 +WHERE id = 1; + +-- Neuen Wert anzeigen +SELECT + id, + full_name, + overtime_offset_minutes as 'Neuer Offset (Minuten)', + CONCAT( + IF(overtime_offset_minutes >= 0, '+', '-'), + FLOOR(ABS(overtime_offset_minutes) / 60), + ':', + LPAD(ABS(overtime_offset_minutes) % 60, 2, '0') + ) as 'Neuer Offset (formatiert)' +FROM user +WHERE id = 1; + +SELECT 'Overtime Offset erfolgreich auf +1:40h gesetzt!' AS Status; +SELECT 'Überstunden sollten jetzt ca. +3h anzeigen (nach Reload)' AS Hinweis; + diff --git a/backend/src/services/TimeEntryService.js b/backend/src/services/TimeEntryService.js index e22b493..032a76c 100644 --- a/backend/src/services/TimeEntryService.js +++ b/backend/src/services/TimeEntryService.js @@ -462,9 +462,6 @@ class TimeEntryService { // Neue Berechnung: Timewish-basiert const totalOvertimeResult = await this._calculateTotalOvertime(uid, runningEntry); - // Alte Berechnung: weekly_worktime-basiert (zum Vergleich) - const totalOvertimeOldStyleResult = await this._calculateTotalOvertimeOldStyle(uid, runningEntry); - // Berechne Überstunden für die aktuelle Woche const weekData = await this.getWeekOverview(uid, 0); @@ -783,7 +780,6 @@ class TimeEntryService { regularEnd: null, overtime: overtime, // Überstunden für die aktuelle Woche totalOvertime: totalOvertimeResult.formatted, // Überstunden über den gesamten Zeitraum (timewish-basiert) - totalOvertimeOldStyle: totalOvertimeOldStyleResult.formatted, // Überstunden (weekly_worktime-basiert, zum Vergleich) weekWorktime: weekWorktime, nonWorkingHours: nonWorkingHoursFormatted, openForWeek: openForWeekFormatted,