mitai-jinkendo/backend/placeholder_registrations/profile_reference_values.py

69 lines
2.8 KiB
Python
Raw Normal View History

"""
Registry: Persönliche Referenzwerte (Profil) — Layer 1 reference_values, JSON-Platzhalter 2a.
"""
from placeholder_registry import (
PlaceholderMetadata,
MissingValuePolicy,
OutputType,
PlaceholderType,
register_placeholder,
)
from ._evidence import tag_standard_evidence
CAT = "Referenzwerte"
MVP = lambda reason, disp: MissingValuePolicy(
available=False, value_raw=None, missing_reason=reason, legacy_display=disp
)
def register_profile_reference_values():
for key, dl_fn, desc, sem in [
(
"reference_values_current_json",
"get_profile_reference_values_current_snapshot",
"JSON: aktuelle Referenzwerte (jüngster Eintrag pro Typ, Katalog-Reihenfolge)",
"reference_values.get_profile_reference_values_current_snapshot(profile_id)",
),
(
"reference_values_recent_json",
"get_profile_reference_values_recent_snapshot",
"JSON: Verlauf — bis zu 5 Einträge pro Referenztyp (neueste zuerst), optional Datumsfilter in Layer-1-API",
"reference_values.get_profile_reference_values_recent_snapshot(profile_id, limit_per_type=5)",
),
]:
m = PlaceholderMetadata(
key=key,
category=CAT,
description=desc,
resolver_module="backend/placeholder_resolver.py",
resolver_function="_safe_json",
data_layer_module="backend/data_layer/reference_values.py",
data_layer_function=dl_fn,
source_tables=["profile_reference_values", "reference_value_types"],
semantic_contract=sem,
business_meaning="Persönliche Referenzkennwerte für KI-Kontext (Messmethode, Vertrauen, Historie)",
unit="JSON",
time_window="aktuell bzw. letzte N Einträge pro Typ",
output_type=OutputType.JSON,
placeholder_type=PlaceholderType.RAW_DATA,
format_hint="JSON-String (schema *_v1)",
example_output='{"count":0,"items":[]}',
minimum_data_requirements="Keine Pflicht — leere Listen möglich",
quality_filter_policy=None,
confidence_logic="Rohdaten aus Erfassung (confidence-Feld pro Eintrag)",
missing_value_policy=MVP("optional_module", "{}"),
known_limitations="recent_json: fest 5 pro Typ im Platzhalter; Datumsfilter nur über API/Layer-1-Parameter",
layer_1_decision="data_layer.reference_values",
layer_2a_decision="_safe_json + compact_json_payload_for_prompts",
layer_2b_reuse_possible=True,
architecture_alignment="Issue 53 / Phase 0c Layer 1",
issue_53_alignment="Strukturierte L1-Daten für Prompts",
evidence={},
)
tag_standard_evidence(m)
register_placeholder(m)
register_profile_reference_values()