feat(maintenance): MAINT-Epic (Wartungspläne/-aufträge, Werkstatt) + Akte-Redesign
Neues Wartungskonzept: Wartungsplan+Position+Intervall (zeit/km/ Betriebsstunden, kombinierbar - fällig sobald ein Kriterium erreicht ist), Wartungsauftrag mit intern/externer Werkstatt, Status offen/ in_arbeit/erledigt, Kosten, Historie, Dokument-Anhang. Ad-hoc-Aufträge ohne Plan möglich (z.B. kleinere Reparatur). Admin-Tab "Wartungspläne". Objektakte-Redesign (Epic 21, Nutzer-Feedback "wirkt nicht modern"): CSS-Grid statt Karten-Stapel, einspaltig mobil, zweispaltig ab 900px; Fahrzeug-Objekte zeigen Wartung/Fahrzeugdaten prominent, Geräte/ Rucksäcke die Beladung. Dabei gefundene Lücke: Beladung (Soll/Ist je Position) fehlte in der Akte komplett, nur über eine laufende Kontrolle sichtbar - jetzt eigene Karte. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import calendar
|
||||
import uuid
|
||||
from datetime import date, datetime, timezone
|
||||
from decimal import Decimal
|
||||
@@ -12,17 +11,7 @@ from app.models.objekt import Objekt
|
||||
from app.models.objektposition import Objektposition
|
||||
from app.services import benachrichtigung as benachrichtigung_service
|
||||
from app.services import historie as historie_service
|
||||
|
||||
|
||||
def _plus_monate(stichtag: date, monate: int) -> date:
|
||||
"""Kein python-dateutil als Dependency für eine einzelne Monatsaddition -
|
||||
Tag wird auf das Monatsende gekappt, falls der Zielmonat kürzer ist
|
||||
(z.B. 31. Januar + 1 Monat -> 28./29. Februar)."""
|
||||
monats_index = stichtag.month - 1 + monate
|
||||
jahr = stichtag.year + monats_index // 12
|
||||
monat = monats_index % 12 + 1
|
||||
letzter_tag = calendar.monthrange(jahr, monat)[1]
|
||||
return date(jahr, monat, min(stichtag.day, letzter_tag))
|
||||
from app.services.datumshilfen import plus_monate as _plus_monate
|
||||
|
||||
|
||||
async def liste_fuer_position(db: AsyncSession, objektposition_id) -> list[GeraetInstanz]:
|
||||
|
||||
Reference in New Issue
Block a user