Initial commit: TimeClock v3 - Node.js/Vue.js Zeiterfassung

Features:
- Backend: Node.js/Express mit MySQL/MariaDB
- Frontend: Vue.js 3 mit Composition API
- UTC-Zeithandling für korrekte Zeiterfassung
- Timewish-basierte Überstundenberechnung
- Wochenübersicht mit Urlaubs-/Krankheits-/Feiertagshandling
- Bereinigtes Arbeitsende (Generell/Woche)
- Überstunden-Offset für historische Daten
- Fixed Layout mit scrollbarem Content
- Kompakte UI mit grünem Theme
This commit is contained in:
Torsten Schulz (local)
2025-10-17 14:11:28 +02:00
commit e95bb4cb76
86 changed files with 19530 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
-- Ersetze Worklog-Einträge für Donnerstag, 16.10.2025
-- Lokale Zeit (MESZ = UTC+2): 08:02:35, 12:07:53, 13:06:14, 16:45:02, 17:00:00, 17:13:24
-- UTC-Zeit (für DB): 06:02:35, 10:07:53, 11:06:14, 14:45:02, 15:00:00, 15:13:24
-- Schritt 1: Lösche alte Einträge für 16.10.2025
-- Wegen Foreign Key Constraints müssen wir in der richtigen Reihenfolge löschen:
-- Erst die Einträge, die auf andere verweisen (stop work, stop pause)
-- Dann die Einträge, die referenziert werden (start pause, start work)
-- 1a. Lösche stop work und stop pause Einträge
DELETE FROM worklog
WHERE user_id = 1
AND DATE(tstamp) = '2025-10-16'
AND state IN ('stop work', 'stop pause');
-- 1b. Lösche start pause und start work Einträge
DELETE FROM worklog
WHERE user_id = 1
AND DATE(tstamp) = '2025-10-16'
AND state IN ('start pause', 'start work');
-- Schritt 2: Füge neue Einträge ein
-- Variablen für die IDs
SET @start_work_id = NULL;
SET @start_pause1_id = NULL;
SET @start_pause2_id = NULL;
-- 1. start work (06:02:35 UTC = 08:02:35 lokal)
INSERT INTO worklog (user_id, state, tstamp, relatedTo_id, version)
VALUES (1, 'start work', '2025-10-16 06:02:35', NULL, 0);
SET @start_work_id = LAST_INSERT_ID();
-- 2. start pause (10:07:53 UTC = 12:07:53 lokal) → relatedTo = start work
INSERT INTO worklog (user_id, state, tstamp, relatedTo_id, version)
VALUES (1, 'start pause', '2025-10-16 10:07:53', @start_work_id, 0);
SET @start_pause1_id = LAST_INSERT_ID();
-- 3. stop pause (11:06:14 UTC = 13:06:14 lokal) → relatedTo = start pause
INSERT INTO worklog (user_id, state, tstamp, relatedTo_id, version)
VALUES (1, 'stop pause', '2025-10-16 11:06:14', @start_pause1_id, 0);
-- 4. start pause (14:45:02 UTC = 16:45:02 lokal) → relatedTo = start work
INSERT INTO worklog (user_id, state, tstamp, relatedTo_id, version)
VALUES (1, 'start pause', '2025-10-16 14:45:02', @start_work_id, 0);
SET @start_pause2_id = LAST_INSERT_ID();
-- 5. stop pause (15:00:00 UTC = 17:00:00 lokal) → relatedTo = start pause
INSERT INTO worklog (user_id, state, tstamp, relatedTo_id, version)
VALUES (1, 'stop pause', '2025-10-16 15:00:00', @start_pause2_id, 0);
-- 6. stop work (15:13:24 UTC = 17:13:24 lokal) → relatedTo = start work
INSERT INTO worklog (user_id, state, tstamp, relatedTo_id, version)
VALUES (1, 'stop work', '2025-10-16 15:13:24', @start_work_id, 0);
SELECT 'Worklog-Einträge für 16.10.2025 erfolgreich ersetzt' AS Status;