This repository has been archived on 2026-06-28. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
Dienstplan/CHANGELOG.md
copilot-swe-agent[bot] 5314f2fe7b Update CHANGELOG with Android app implementation details
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
2025-11-14 17:25:40 +00:00

94 lines
2.8 KiB
Markdown

# Changelog
## 2025-11-14 - Android App Implementation
### Feature
Added native Android mobile app for duty roster management with the same NRW Variante 2 (streng) payroll calculation logic as the Python/Excel version.
### Details
**New Android App:**
- Location: `android-app/` directory
- Language: Kotlin
- Min SDK: Android 7.0 (API 24)
- Target SDK: Android 14 (API 34)
**Features:**
- Month selection interface (2025-2030)
- Duty entry with employee name and share (Anteil)
- Automatic payroll calculation
- Results display with detailed breakdown per employee
- In-memory data storage
**Business Logic:**
- Same NRW holidays (2025-2026)
- Same WE-Tag detection (Friday, Saturday, Sunday, holidays, day before holiday)
- Same WT-Tag classification
- Same compensation rates (WT: 250€, WE: 450€)
- Same threshold logic (≥ 2.0 WE units)
- Same deduction rules (1.0 unit, Friday priority)
- Same Variante 2 behavior (no WE compensation below threshold)
**Testing:**
- Comprehensive unit tests for PayrollCalculator
- All test cases passed (under threshold, at threshold, over threshold, Friday priority, multiple employees)
**Documentation:**
- Android-specific README with setup instructions
- Main README updated to mention Android app
- .gitignore updated for Android build artifacts
### Usage
See [android-app/README.md](android-app/README.md) for detailed Android setup and usage instructions.
### Known Limitations
- Data is not persisted (in-memory only)
- No data export/import functionality
- German language only
---
## 2025-11-14 - Fix Excel Formula Syntax Error
### Issue
Fixed a syntax error in the Checks sheet that would cause Excel formula errors.
### Details
The nested WENN (IF) formula in the Checks sheet Status column was missing a semicolon between the empty string result and the second WENN function.
**File:** `src/build_template.py`, line 264
**Before:**
```excel
=WENN(A2="";""WENN(ABS(B2-1)<=0,0001;"OK";"FEHLER"))
```
**After:**
```excel
=WENN(A2="";"";WENN(ABS(B2-1)<=0,0001;"OK";"FEHLER"))
```
### Impact
This fix ensures that the Checks sheet Status column works correctly to validate that daily shift totals sum to 1.0, displaying "OK" or "FEHLER" as appropriate.
### Testing
- Template rebuilt successfully
- November 2025 file generated without errors
- All formulas verified syntactically correct
- No security issues found (CodeQL scan: 0 alerts)
### How to Use
To generate a corrected November 2025 file:
```bash
# 1. Rebuild the template with the fix
python src/build_template.py
# 2. Generate November 2025
python src/fill_plan_dates.py 2025 11
# 3. Open output/Dienstplan_2025_11_NRW.xlsx in Excel
```
The file will now work correctly with all formulas calculating as expected according to the Variante 2 (streng) rules specified in SPECIFICATION.md.