feat: honor temporal read context
This commit is contained in:
@@ -68,7 +68,7 @@ manifest = ModuleManifest(
|
||||
id="decisions.formal-outcome",
|
||||
title="Formal institutional Decisions",
|
||||
summary="Reconstruct authority, evidence, reasoning, outcome, effects, and review history.",
|
||||
body="Decisions preserves immutable formal outcomes. Corrections and revocations create linked revisions; requested and observed effects remain distinct for reconciliation.",
|
||||
body="Decisions preserves immutable formal outcomes. Corrections and revocations create linked revisions; requested and observed effects remain distinct for reconciliation. List and unversioned detail reads follow the titlebar valid-time and recorded-time selection; exact revision references remain exact and current authorization is unchanged.",
|
||||
layer="configured",
|
||||
documentation_types=("admin", "user"),
|
||||
audience=("user", "operator", "module_admin", "auditor"),
|
||||
|
||||
@@ -12,6 +12,7 @@ from govoplan_core.core.institutional import (
|
||||
TemporalRevision,
|
||||
revise_formal_decision,
|
||||
)
|
||||
from govoplan_core.db.temporal import apply_temporal_revision_filter
|
||||
from govoplan_decisions.backend.db.models import FormalDecisionRevision
|
||||
|
||||
|
||||
@@ -37,7 +38,7 @@ class SqlDecisionRegistry:
|
||||
FormalDecisionRevision.decision_id == reference.object_id,
|
||||
)
|
||||
if reference.version is None:
|
||||
query = query.filter(FormalDecisionRevision.superseded_at.is_(None))
|
||||
query = apply_temporal_revision_filter(query, FormalDecisionRevision)
|
||||
else:
|
||||
query = query.filter(FormalDecisionRevision.revision == reference.version)
|
||||
row = query.order_by(FormalDecisionRevision.recorded_at.desc()).first()
|
||||
@@ -142,8 +143,8 @@ def list_decisions(
|
||||
raise DecisionStoreError("Decision list limit must be between 1 and 200.")
|
||||
query = session.query(FormalDecisionRevision).filter(
|
||||
FormalDecisionRevision.tenant_id == tenant_id,
|
||||
FormalDecisionRevision.superseded_at.is_(None),
|
||||
)
|
||||
query = apply_temporal_revision_filter(query, FormalDecisionRevision)
|
||||
if state:
|
||||
query = query.filter(FormalDecisionRevision.state == state)
|
||||
if decision_type:
|
||||
|
||||
Reference in New Issue
Block a user