diff --git a/backend/services/maturity_practice.py b/backend/services/maturity_practice.py index 62cbe64..910bf8f 100644 --- a/backend/services/maturity_practice.py +++ b/backend/services/maturity_practice.py @@ -56,13 +56,15 @@ def enforce_single_active_maturity_stage( """At most one maturity_stage may be active.""" cur.execute( """ - UPDATE roadmap_items + UPDATE roadmap_items ri SET status = 'planned', updated_at = NOW() - WHERE tenant_id = %s - AND initiative_id = %s - AND item_type = 'maturity_stage' - AND status IN ('active', 'at_risk') - AND id != %s + FROM roadmaps r + WHERE ri.roadmap_id = r.id + AND ri.tenant_id = %s + AND r.initiative_id = %s + AND ri.item_type = 'maturity_stage' + AND ri.status IN ('active', 'at_risk') + AND ri.id != %s """, (tenant_id, initiative_id, keep_active_id), ) diff --git a/backend/tests/test_ap20e_maturity_transition.py b/backend/tests/test_ap20e_maturity_transition.py index 7230747..b3c7c0d 100644 --- a/backend/tests/test_ap20e_maturity_transition.py +++ b/backend/tests/test_ap20e_maturity_transition.py @@ -51,8 +51,11 @@ def test_maturity_stage_reached_rotates_recurring(client): headers=_auth(token), ).json() titles = {r["title"]: r["status"] for r in recurring} - assert titles.get("Tägliche Übung") == "paused" - assert any(t.startswith("Übung — Stufe 2") for t in titles) + assert titles.get("Vorbeuge-Dehnung") == "paused" + assert titles.get("Hüftöffner (Schmetterling)") == "paused" + assert any( + t.startswith("Seitlicher Spagat") and titles[t] == "active" for t in titles + ) items_after = client.get( f"/api/initiatives/{initiative_id}/roadmap/items",