feat(records): add governed DSAR coverage
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -38,6 +38,10 @@ from govoplan_core.core.search import SearchSourceProviderRegistration
|
||||
from govoplan_core.core.views import ViewSurface
|
||||
from govoplan_core.db.base import Base
|
||||
from govoplan_records.backend.db import models as record_models
|
||||
from govoplan_records.backend.dsar_provider import (
|
||||
RECORDS_DSAR_CAPABILITY,
|
||||
RecordsDsarProvider,
|
||||
)
|
||||
from govoplan_records.backend.search_source import create_records_search_source
|
||||
from govoplan_records.backend.service import SqlRecordRegistry
|
||||
from govoplan_records.backend.archive import (
|
||||
@@ -94,6 +98,11 @@ def _records_registry(context: ModuleContext) -> SqlRecordRegistry:
|
||||
return SqlRecordRegistry(context.registry)
|
||||
|
||||
|
||||
def _dsar_provider(context: ModuleContext) -> RecordsDsarProvider:
|
||||
del context
|
||||
return RecordsDsarProvider()
|
||||
|
||||
|
||||
def _simulated_archive_provider(
|
||||
context: ModuleContext,
|
||||
) -> SimulatedRecordArchiveProvider:
|
||||
@@ -184,6 +193,41 @@ ROLE_TEMPLATES = (
|
||||
)
|
||||
|
||||
DOCUMENTATION = (
|
||||
DocumentationTopic(
|
||||
id="records.data-subject-requests",
|
||||
title="eAkte data-subject requests",
|
||||
summary="Export minimized record metadata while preserving retention, hold, disposition, and archive evidence.",
|
||||
body=(
|
||||
"Records correlates exact record, revision, item, volume, chronology, hold, disposition, transfer-package, and provider-owned source references inside one tenant. Account, identity, and membership selectors expose staff accountability attribution but never imply that the staff member is the subject of a record. A record-subject export therefore needs an authoritative record or source linkage. "
|
||||
"The export includes bounded record, filing, chronology, hold, disposition, and transfer lifecycle metadata. Source content, snapshots, search text, opaque contexts and payloads, hashes, replay keys, launch URLs, archive manifests and receipts, approval identifiers, and unrelated records are excluded. Immutable evidence is retained. The current record fact receives non-executable manual review and can change only through the governed eAkte lifecycle."
|
||||
),
|
||||
layer="configured",
|
||||
documentation_types=("admin", "user"),
|
||||
audience=("user", "records_manager", "operator", "module_admin", "auditor"),
|
||||
order=90,
|
||||
related_modules=(
|
||||
"core",
|
||||
"cases",
|
||||
"files",
|
||||
"forms_runtime",
|
||||
"workflow_engine",
|
||||
"approvals",
|
||||
"dms",
|
||||
),
|
||||
links=(
|
||||
DocumentationLink(
|
||||
label="Records domain boundary",
|
||||
href="govoplan-records/docs/RECORDS_DOMAIN_BOUNDARY.md",
|
||||
kind="repository",
|
||||
),
|
||||
),
|
||||
metadata={
|
||||
"help_contexts": [
|
||||
"records.data-subject-requests",
|
||||
"records.lifecycle",
|
||||
],
|
||||
},
|
||||
),
|
||||
DocumentationTopic(
|
||||
id="records.workspace",
|
||||
title="eAkte workspace",
|
||||
@@ -443,10 +487,12 @@ manifest = ModuleManifest(
|
||||
ModuleInterfaceProvider(name="records.registry", version="1.0.0"),
|
||||
ModuleInterfaceProvider(name="records.filing", version="1.0.0"),
|
||||
ModuleInterfaceProvider(name="records.archive", version="1.0.0"),
|
||||
ModuleInterfaceProvider(name=RECORDS_DSAR_CAPABILITY, version="0.1.0"),
|
||||
),
|
||||
capability_factories={
|
||||
CAPABILITY_RECORDS_FILING: _records_registry,
|
||||
record_archive_capability(SIMULATION_PROVIDER_ID): _simulated_archive_provider,
|
||||
RECORDS_DSAR_CAPABILITY: _dsar_provider,
|
||||
},
|
||||
capability_documentation={
|
||||
CAPABILITY_RECORDS_FILING: CapabilityDocumentation(
|
||||
@@ -461,6 +507,11 @@ manifest = ModuleManifest(
|
||||
),
|
||||
contract_version="1.0.0",
|
||||
),
|
||||
RECORDS_DSAR_CAPABILITY: CapabilityDocumentation(
|
||||
label="Records data-subject request provider",
|
||||
summary="Finds minimized eAkte and operator-attribution evidence without bypassing record retention.",
|
||||
contract_version="0.1.0",
|
||||
),
|
||||
},
|
||||
migration_spec=MigrationSpec(
|
||||
module_id=MODULE_ID,
|
||||
|
||||
Reference in New Issue
Block a user