feat(campaigns): add governed collaboration thread
Module Package Release / publish-packages (push) Successful in 13s

This commit is contained in:
2026-08-22 00:09:34 +02:00
parent 5a21067e44
commit c2f083e5f6
25 changed files with 2315 additions and 24 deletions
+4 -1
View File
@@ -5,6 +5,7 @@ from collections import Counter
from govoplan_campaign.backend.router import router
from govoplan_campaign.backend.routes.attachments import router as attachments_router
from govoplan_campaign.backend.routes.campaigns import router as campaigns_router
from govoplan_campaign.backend.routes.collaboration import router as collaboration_router
from govoplan_campaign.backend.routes.delivery import router as delivery_router
from govoplan_campaign.backend.routes.jobs import router as jobs_router
from govoplan_campaign.backend.routes.operations import router as operations_router
@@ -26,6 +27,7 @@ def test_campaign_router_composes_every_workflow_operation_once() -> None:
workflow_routers = (
operations_router,
campaigns_router,
collaboration_router,
versions_router,
jobs_router,
reports_router,
@@ -42,7 +44,7 @@ def test_campaign_router_composes_every_workflow_operation_once() -> None:
actual = _operation_keys(router)
assert actual == expected
assert len(actual) == 81
assert len(actual) == 86
assert not [operation for operation, count in Counter(actual).items() if count > 1]
@@ -53,6 +55,7 @@ def test_key_routes_are_owned_by_their_focused_router() -> None:
("POST", "/campaigns/operations/artifacts/reconcile"),
),
(campaigns_router, ("GET", "/campaigns/{campaign_id}/workspace")),
(collaboration_router, ("POST", "/campaigns/{campaign_id}/collaboration")),
(versions_router, ("POST", "/campaigns/versions/{version_id}/build")),
(jobs_router, ("GET", "/campaigns/{campaign_id}/jobs")),
(reports_router, ("GET", "/campaigns/{campaign_id}/report")),