feat(objekt): letzte abgeschlossene Kontrolle je Objekt anzeigen
CI / backend-tests (push) Failing after 1m28s
CI / frontend-build (push) Successful in 17s

Bisher nirgends vermerkt/abrufbar, wann ein Objekt zuletzt komplett
kontrolliert wurde (nur roh in kontrolle.beendet_am ableitbar). Neues Feld
ObjektRead.letzte_kontrolle_am (jüngste Kontrolle mit status=abgeschlossen),
angezeigt in Objektliste und Admin-Objektsektion ("noch nie kontrolliert"
falls keine).

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 11:00:49 +02:00
co-authored by Claude Sonnet 5
parent 69d6956d23
commit c3f141f7b0
10 changed files with 6599 additions and 14 deletions
+32
View File
@@ -5,6 +5,38 @@ from app.schemas.vorlage import VorlagenpositionCreate
from tests.conftest import auth_header, login
@pytest.mark.asyncio
async def test_letzte_kontrolle_am_wird_erst_nach_abschluss_gesetzt(
client, objekt_mit_position, mitarbeiter_user
):
"""Nutzer-Frage: wann war die letzte KOMPLETTE Kontrolle - vorher (None/
"noch nie"), nach starte_kontrolle allein noch nicht (erst status=abgeschlossen
zählt), erst nach /abschliessen gesetzt."""
objekt, material = objekt_mit_position
token = await login(client, "mitarbeiter1")
vor_kontrolle = await client.get(f"/api/v1/objekte/{objekt.id}", headers=auth_header(token))
assert vor_kontrolle.json()["letzte_kontrolle_am"] is None
start = await client.post(
f"/api/v1/objekte/{objekt.id}/kontrollen", json={"uebernehmen": False}, headers=auth_header(token)
)
kontrolle_id = start.json()["id"]
await client.put(
f"/api/v1/kontrollen/{kontrolle_id}/positionen/{material.id}",
json={"istmenge": "10"},
headers=auth_header(token),
)
waehrend = await client.get(f"/api/v1/objekte/{objekt.id}", headers=auth_header(token))
assert waehrend.json()["letzte_kontrolle_am"] is None # noch nicht abgeschlossen
await client.post(f"/api/v1/kontrollen/{kontrolle_id}/abschliessen", headers=auth_header(token))
nach_abschluss = await client.get(f"/api/v1/objekte/{objekt.id}", headers=auth_header(token))
assert nach_abschluss.json()["letzte_kontrolle_am"] is not None
@pytest.mark.asyncio
async def test_objekt_aus_vorlage_startet_unkontrolliert(
client, db_session, objekttyp_factory, material_factory, standort_factory, admin_user