fix(models): app/models/__init__.py fehlten 6 Module seit Personal-Modul
CI / backend-tests (push) Failing after 1m56s
CI / frontend-build (push) Successful in 17s

Nicht mitgezogen seit Migration 0012: personal, mangel, fahrzeugdetails,
lagerbewegung, dokument, permission. Live-Testlauf von scripts/create_admin.py
brach mit NoReferencedTableError ab (Benutzer.einheit_id -> einheit war nicht
registriert, da das Skript nur app.models.auth statt des vollständigen
Registry-Imports nutzt). App selbst lief nur zufällig fehlerfrei, weil
api.py alle Endpunkt-Module importiert und die dortigen Modell-Importe die
Lücke im Betrieb kaschiert haben.

Fix: __init__.py vervollständigt + create_admin.py/eskalation_pruefen.py
(täglicher Timer!) bekommen zusätzlich ein explizites "import app.models" als
Schutz, unabhängig davon ob die Registry künftig wieder unvollständig wird.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KC8HYvv6UkCVYheYiTw9DD
This commit is contained in:
2026-09-05 14:09:30 +02:00
co-authored by Claude Sonnet 5
parent c56fc285de
commit 1afac3a797
3 changed files with 32 additions and 0 deletions
+27
View File
@@ -1,13 +1,25 @@
from app.models.auth import Benutzer, BenutzerRolle, RolleTyp, Systemknoten, KnotenTyp from app.models.auth import Benutzer, BenutzerRolle, RolleTyp, Systemknoten, KnotenTyp
from app.models.dokument import Dokument
from app.models.eskalation import EskalationKonfiguration from app.models.eskalation import EskalationKonfiguration
from app.models.fahrzeugdetails import Fahrzeugdetails
from app.models.fehlbestand import Fehlbestand, FehlbestandStatus from app.models.fehlbestand import Fehlbestand, FehlbestandStatus
from app.models.geraet_instanz import GeraetInstanz, GeraetStatus from app.models.geraet_instanz import GeraetInstanz, GeraetStatus
from app.models.historie import Historie from app.models.historie import Historie
from app.models.kontrolle import Kontrolle, KontrollStatus, Kontrollposition from app.models.kontrolle import Kontrolle, KontrollStatus, Kontrollposition
from app.models.lagerbewegung import Lagerbewegung
from app.models.mangel import Mangel, MangelPrioritaet, MangelStatus
from app.models.mindermenge import MindermengeStatus, MindermengenGenehmigung from app.models.mindermenge import MindermengeStatus, MindermengenGenehmigung
from app.models.nachfuellung import Nachfuellung from app.models.nachfuellung import Nachfuellung
from app.models.objekt import Objekt, ObjektStatus from app.models.objekt import Objekt, ObjektStatus
from app.models.objektposition import Objektposition, ObjektpositionStatus from app.models.objektposition import Objektposition, ObjektpositionStatus
from app.models.permission import Berechtigung, BenutzerRolleZuordnung, Rolle, RolleBerechtigung
from app.models.personal import (
BenutzerQualifikation,
Einheit,
ObjekttypQualifikationsanforderung,
Qualifikationskategorie,
Qualifikationstyp,
)
from app.models.stammdaten import Bereich, Kategorie, Material, MaterialTyp, Objekttyp, Standort from app.models.stammdaten import Bereich, Kategorie, Material, MaterialTyp, Objekttyp, Standort
from app.models.vorlage import Beladungsvorlage, VorlageStatus, Vorlagenposition from app.models.vorlage import Beladungsvorlage, VorlageStatus, Vorlagenposition
from app.models.zustaendigkeit import Kontrollverantwortung, Zustaendigkeit from app.models.zustaendigkeit import Kontrollverantwortung, Zustaendigkeit
@@ -18,7 +30,9 @@ __all__ = [
"RolleTyp", "RolleTyp",
"Systemknoten", "Systemknoten",
"KnotenTyp", "KnotenTyp",
"Dokument",
"EskalationKonfiguration", "EskalationKonfiguration",
"Fahrzeugdetails",
"Fehlbestand", "Fehlbestand",
"FehlbestandStatus", "FehlbestandStatus",
"GeraetInstanz", "GeraetInstanz",
@@ -27,6 +41,10 @@ __all__ = [
"Kontrolle", "Kontrolle",
"KontrollStatus", "KontrollStatus",
"Kontrollposition", "Kontrollposition",
"Lagerbewegung",
"Mangel",
"MangelPrioritaet",
"MangelStatus",
"MindermengeStatus", "MindermengeStatus",
"MindermengenGenehmigung", "MindermengenGenehmigung",
"Nachfuellung", "Nachfuellung",
@@ -34,6 +52,15 @@ __all__ = [
"ObjektStatus", "ObjektStatus",
"Objektposition", "Objektposition",
"ObjektpositionStatus", "ObjektpositionStatus",
"Berechtigung",
"BenutzerRolleZuordnung",
"Rolle",
"RolleBerechtigung",
"BenutzerQualifikation",
"Einheit",
"ObjekttypQualifikationsanforderung",
"Qualifikationskategorie",
"Qualifikationstyp",
"Bereich", "Bereich",
"Kategorie", "Kategorie",
"Material", "Material",
+4
View File
@@ -14,6 +14,10 @@ import asyncio
from sqlalchemy import select from sqlalchemy import select
import app.models # noqa: F401 (alle ORM-Modelle registrieren, sonst schlägt
# db.flush() mit NoReferencedTableError fehl, sobald ein Modell eine FK auf
# eine Tabelle hat, deren Modell hier nicht importiert wurde - Fund beim
# Live-Testlauf, Benutzer.einheit_id -> einheit war nicht mitregistriert)
from app.core.security import hash_password from app.core.security import hash_password
from app.db.session import SessionLocal from app.db.session import SessionLocal
from app.models.auth import Benutzer, BenutzerRolle, RolleTyp from app.models.auth import Benutzer, BenutzerRolle, RolleTyp
+1
View File
@@ -15,6 +15,7 @@ from __future__ import annotations
import asyncio import asyncio
import logging import logging
import app.models # noqa: F401 (alle ORM-Modelle registrieren, siehe create_admin.py)
from app.db.session import SessionLocal from app.db.session import SessionLocal
from app.services.eskalation import pruefe_offene_fehlbestaende from app.services.eskalation import pruefe_offene_fehlbestaende