Fix critical bug: End date for recurring events should use 'datum' not 'datumBis'
- Fixed: For recurring appointments (dauertermin=1), end date now correctly uses 'datum' instead of 'datumBis' - 'datumBis' is only for recurrence series end, not individual event duration - Events now have correct duration instead of being capped at 24h unnecessarily - Updated README with detailed explanation of the bug and fix - Time breakdowns in descriptions are now accurate
This commit is contained in:
@@ -288,3 +288,42 @@ Verwende `BERLIN_TZ.localize(naive_datetime)` statt `.replace(tzinfo=BERLIN_TZ)`
|
||||
|
||||
Der Sync funktioniert jetzt perfekt für alle Mitarbeiter ohne Limit auf 'AI'. Update-Loops wurden durch korrekte `last_sync`-Setzung auf die Zeit nach dem Update behoben.
|
||||
|
||||
## Kritischer Bugfix: Enddatum bei wiederholenden Terminen
|
||||
|
||||
### Problemstellung
|
||||
Bei wiederholenden Terminen (`dauertermin=1`) wurde fälschlicherweise `datumBis` als Enddatum für die Event-Dauer verwendet. `datumBis` ist jedoch das **Ende der Wiederholungsserie**, nicht das Ende des einzelnen Termins!
|
||||
|
||||
**Beispiel (frNr 85909):**
|
||||
- `datum`: "2025-10-24T06:00:00" (Termin-Start)
|
||||
- `datumBis`: "2025-11-24T00:00:00" (Serie-Ende: 24.11.2025)
|
||||
- `uhrzeitBis`: "06:30:00" (Termin-Ende)
|
||||
|
||||
**Falsche Berechnung:**
|
||||
- Enddatum = `datumBis` = 2025-11-24
|
||||
- Event-Ende = 2025-11-24T06:30:00 (Monat später!)
|
||||
- Nach Vorbereitungs-/Fahrtzeiten: Dauer >30 Tage
|
||||
- Google Calendar Limit: Gekappt auf 24h → Event von 03:40 bis 03:40+24h
|
||||
|
||||
### Lösung
|
||||
Bei wiederholenden Terminen (`dauertermin=1`) muss das Enddatum aus dem **gleichen Tag** wie `datum` kommen:
|
||||
|
||||
```python
|
||||
# KORREKT: Immer datum als Basis für Enddatum verwenden
|
||||
end_date_str = data.get('datum', '') # Nicht datumBis!
|
||||
```
|
||||
|
||||
**Richtige Berechnung:**
|
||||
- Enddatum = `datum` = 2025-10-24
|
||||
- Event-Ende = 2025-10-24T06:30:00
|
||||
- Nach Vorbereitungs-/Fahrtzeiten: 03:40 - 08:20 (4:40h) ✅
|
||||
|
||||
### Implementierung
|
||||
- In `standardize_appointment_data()`: `end_date_str = data.get('datum', '')`
|
||||
- `datumBis` wird nur noch für RRULE-Generierung verwendet
|
||||
- Bei dauertermin=0 und dauertermin=1 gleiche Logik
|
||||
|
||||
### Auswirkung
|
||||
- Events haben jetzt korrekte Dauer (keine 24h-Kappung bei kurzen Terminen)
|
||||
- Zeitaufteilung in Beschreibungen ist präzise
|
||||
- Google Calendar zeigt Events mit realistischen Zeiträumen an
|
||||
|
||||
|
||||
Reference in New Issue
Block a user