diff --git a/src/govoplan_audit/backend/manifest.py b/src/govoplan_audit/backend/manifest.py index 926abc9..e0a62b2 100644 --- a/src/govoplan_audit/backend/manifest.py +++ b/src/govoplan_audit/backend/manifest.py @@ -9,6 +9,7 @@ from govoplan_core.core.access import ( ) from govoplan_core.core.module_guards import drop_table_retirement_provider, persistent_table_uninstall_guard from govoplan_core.core.modules import FrontendModule, MigrationSpec, ModuleContext, ModuleManifest +from govoplan_core.core.events import CAPABILITY_PLATFORM_EVENT_OUTBOX from govoplan_core.core.views import ViewSurface from govoplan_core.db.base import Base @@ -34,6 +35,13 @@ def _audit_retention(context: ModuleContext): return SqlAuditRetentionProvider() +def _event_outbox(context: ModuleContext): + del context + from govoplan_audit.backend.outbox import SqlAuditOutbox + + return SqlAuditOutbox() + + manifest = ModuleManifest( id="audit", name="Audit", @@ -61,6 +69,7 @@ manifest = ModuleManifest( capability_factories={ CAPABILITY_AUDIT_RECORDER: _audit_recorder, CAPABILITY_AUDIT_RETENTION: _audit_retention, + CAPABILITY_PLATFORM_EVENT_OUTBOX: _event_outbox, }, ) diff --git a/src/govoplan_audit/backend/outbox.py b/src/govoplan_audit/backend/outbox.py index f32637e..a3be871 100644 --- a/src/govoplan_audit/backend/outbox.py +++ b/src/govoplan_audit/backend/outbox.py @@ -36,7 +36,6 @@ class SqlAuditOutbox: status="pending", ) db.add(item) - db.flush() return item def dispatch_pending( @@ -55,6 +54,7 @@ class SqlAuditOutbox: or_(AuditOutboxEvent.next_attempt_at.is_(None), AuditOutboxEvent.next_attempt_at <= now), ) .order_by(AuditOutboxEvent.created_at.asc(), AuditOutboxEvent.id.asc()) + .with_for_update(skip_locked=True) .limit(max(1, min(int(limit), 500))) .all() ) diff --git a/webui/package.json b/webui/package.json index b04b0ae..cc92912 100644 --- a/webui/package.json +++ b/webui/package.json @@ -17,7 +17,7 @@ "lucide-react": "^1.23.0", "react": "^19.0.0", "react-dom": "^19.0.0", - "react-router-dom": "^7.1.1" + "react-router-dom": ">=7.18.2 <8" }, "peerDependenciesMeta": { "@govoplan/core-webui": {