Enrich external event signal evidence
This commit is contained in:
+4
-1
@@ -1342,7 +1342,10 @@ def _build_life_event_graph(route: str, strict: Dict[str, Any]) -> Dict[str, Any
|
||||
nodes.append(
|
||||
{
|
||||
"kind": "external_window",
|
||||
"label": event.get("event_id"),
|
||||
"label": event.get("signal_label") or event.get("event_id"),
|
||||
"event_id": event.get("event_id"),
|
||||
"signal_key": event.get("signal_key"),
|
||||
"signal_family": event.get("signal_family"),
|
||||
"score": event.get("score"),
|
||||
"start": event.get("start"),
|
||||
"end": event.get("end"),
|
||||
|
||||
@@ -900,7 +900,11 @@ def _build_technique_audit_table(functional_layer, oracle_progress, modules):
|
||||
'technique': 'Functional Benefic/Malefic',
|
||||
'status': functional_layer.get('status', 'blocked'),
|
||||
'source': 'scripts/yoga_engine.py::YogaContext',
|
||||
'note': functional_layer.get('effect_on_confidence', '高严谨模式缺少功能性吉凶星判定。'),
|
||||
'note': (
|
||||
f"关键功能吉星={functional_layer.get('functional_benefics', [])}; "
|
||||
f"关键功能凶星={functional_layer.get('functional_malefics', [])}; "
|
||||
f"{functional_layer.get('effect_on_confidence', '高严谨模式缺少功能性吉凶星判定。')}"
|
||||
),
|
||||
},
|
||||
{
|
||||
'technique': 'External Oracle Progress',
|
||||
|
||||
@@ -90,6 +90,79 @@ RANGE_SCAN_EVENT_ALLOWLIST = {
|
||||
"tags": {"career", "profession", "work", "transit"},
|
||||
},
|
||||
}
|
||||
RANGE_SCAN_SIGNAL_METADATA = {
|
||||
"marriage": {
|
||||
"GocharJupiterIn7th": {
|
||||
"signal_key": "gochar_jupiter_7th_marriage",
|
||||
"signal_label": "Jupiter in 7th marriage window",
|
||||
"signal_family": "marriage_trigger",
|
||||
},
|
||||
"GocharJupiterAspect7th": {
|
||||
"signal_key": "gochar_jupiter_aspect_7th_marriage",
|
||||
"signal_label": "Jupiter aspecting 7th marriage window",
|
||||
"signal_family": "marriage_trigger",
|
||||
},
|
||||
"GocharSaturnAspect7th": {
|
||||
"signal_key": "gochar_saturn_aspect_7th_relationship_pressure",
|
||||
"signal_label": "Saturn aspecting 7th relationship window",
|
||||
"signal_family": "relationship_pressure",
|
||||
},
|
||||
"JupiterSupportsMarriageAxis": {
|
||||
"signal_key": "jupiter_supports_marriage_axis",
|
||||
"signal_label": "Jupiter supports marriage axis",
|
||||
"signal_family": "marriage_trigger",
|
||||
},
|
||||
},
|
||||
"wealth": {
|
||||
"GocharJupiterIn2nd": {
|
||||
"signal_key": "gochar_jupiter_2nd_wealth",
|
||||
"signal_label": "Jupiter in 2nd wealth window",
|
||||
"signal_family": "wealth_trigger",
|
||||
},
|
||||
"GocharJupiterIn11th": {
|
||||
"signal_key": "gochar_jupiter_11th_gains",
|
||||
"signal_label": "Jupiter in 11th gains window",
|
||||
"signal_family": "gains_trigger",
|
||||
},
|
||||
"GocharJupiterAspect2nd": {
|
||||
"signal_key": "gochar_jupiter_aspect_2nd_wealth",
|
||||
"signal_label": "Jupiter aspecting 2nd wealth window",
|
||||
"signal_family": "wealth_trigger",
|
||||
},
|
||||
"GocharJupiterAspect11th": {
|
||||
"signal_key": "gochar_jupiter_aspect_11th_gains",
|
||||
"signal_label": "Jupiter aspecting 11th gains window",
|
||||
"signal_family": "gains_trigger",
|
||||
},
|
||||
"WealthExpansionWindow": {
|
||||
"signal_key": "wealth_expansion_window",
|
||||
"signal_label": "Wealth expansion window",
|
||||
"signal_family": "wealth_trigger",
|
||||
},
|
||||
},
|
||||
"career": {
|
||||
"GocharJupiterIn10th": {
|
||||
"signal_key": "gochar_jupiter_10th_career",
|
||||
"signal_label": "Jupiter in 10th career window",
|
||||
"signal_family": "career_trigger",
|
||||
},
|
||||
"GocharSaturnIn10th": {
|
||||
"signal_key": "gochar_saturn_10th_career",
|
||||
"signal_label": "Saturn in 10th career window",
|
||||
"signal_family": "career_pressure",
|
||||
},
|
||||
"GocharJupiterAspect10th": {
|
||||
"signal_key": "gochar_jupiter_aspect_10th_career",
|
||||
"signal_label": "Jupiter aspecting 10th career window",
|
||||
"signal_family": "career_trigger",
|
||||
},
|
||||
"CareerExpansionWindow": {
|
||||
"signal_key": "career_expansion_window",
|
||||
"signal_label": "Career expansion window",
|
||||
"signal_family": "career_trigger",
|
||||
},
|
||||
},
|
||||
}
|
||||
DEFAULT_TIMEOUT_SECONDS = 8
|
||||
TIMEOUT_ENV = "VEDASTRO_TIMEOUT_SECONDS"
|
||||
RETRY_POLICY = {
|
||||
@@ -276,12 +349,16 @@ def _normalize_range_scan_success(
|
||||
tag_set = {str(tag) for tag in tags}
|
||||
if event_id not in allowed_ids and tag_set.isdisjoint(allowed_tags):
|
||||
continue
|
||||
signal_metadata = RANGE_SCAN_SIGNAL_METADATA.get(domain, {}).get(event_id, {})
|
||||
evidence_ledger.append(
|
||||
{
|
||||
"source": "vedastro_service_adapter_candidate",
|
||||
"operation": "range_scan",
|
||||
"domain": domain,
|
||||
"event_id": event_id,
|
||||
"signal_key": signal_metadata.get("signal_key"),
|
||||
"signal_label": signal_metadata.get("signal_label") or event.get("name") or event_id,
|
||||
"signal_family": signal_metadata.get("signal_family"),
|
||||
"start": event.get("start") or event.get("start_time") or event.get("start_date"),
|
||||
"end": event.get("end") or event.get("end_time") or event.get("end_date"),
|
||||
"score": event.get("score") if event.get("score") is not None else event.get("strength"),
|
||||
@@ -298,6 +375,9 @@ def _normalize_range_scan_success(
|
||||
)
|
||||
top_event = {
|
||||
"event_id": top.get("event_id"),
|
||||
"signal_key": top.get("signal_key"),
|
||||
"signal_label": top.get("signal_label"),
|
||||
"signal_family": top.get("signal_family"),
|
||||
"score": top.get("score"),
|
||||
"start": top.get("start"),
|
||||
"end": top.get("end"),
|
||||
|
||||
@@ -283,6 +283,8 @@ def test_full_reading_reports_ayanamsa_metadata_and_ai_prompt_pack() -> None:
|
||||
assert functional_rows
|
||||
assert functional_rows[0]["status"] == "used"
|
||||
assert "高严谨" in functional_rows[0]["note"]
|
||||
assert "关键功能吉星=" in functional_rows[0]["note"]
|
||||
assert "关键功能凶星=" in functional_rows[0]["note"]
|
||||
dasha_rows = [row for row in audit_table if row["technique"] == "Vimshottari + Narayana Cross-check"]
|
||||
assert dasha_rows
|
||||
assert dasha_rows[0]["status"] == "used"
|
||||
|
||||
@@ -39,7 +39,10 @@ def test_life_event_graph_folds_strict_evidence_and_vedastro_top_event() -> None
|
||||
"signals": ["vedastro_range_scan"],
|
||||
"events": [
|
||||
{
|
||||
"event_id": "jupiter_7h_window",
|
||||
"event_id": "GocharJupiterIn7th",
|
||||
"signal_key": "gochar_jupiter_7th_marriage",
|
||||
"signal_label": "Jupiter in 7th marriage window",
|
||||
"signal_family": "marriage_trigger",
|
||||
"score": 72,
|
||||
"start": "2026-05-01",
|
||||
"end": "2026-06-01",
|
||||
@@ -86,7 +89,10 @@ def test_life_event_graph_folds_strict_evidence_and_vedastro_top_event() -> None
|
||||
}
|
||||
assert graph["event_nodes"][4] == {
|
||||
"kind": "external_window",
|
||||
"label": "jupiter_7h_window",
|
||||
"label": "Jupiter in 7th marriage window",
|
||||
"event_id": "GocharJupiterIn7th",
|
||||
"signal_key": "gochar_jupiter_7th_marriage",
|
||||
"signal_family": "marriage_trigger",
|
||||
"score": 72,
|
||||
"start": "2026-05-01",
|
||||
"end": "2026-06-01",
|
||||
@@ -118,7 +124,10 @@ def test_life_event_graph_is_returned_from_strict_relationship_evidence() -> Non
|
||||
"source": "vedastro_service_adapter_candidate",
|
||||
"operation": "range_scan",
|
||||
"domain": "marriage",
|
||||
"event_id": "jupiter_7h_window",
|
||||
"event_id": "GocharJupiterIn7th",
|
||||
"signal_key": "gochar_jupiter_7th_marriage",
|
||||
"signal_label": "Jupiter in 7th marriage window",
|
||||
"signal_family": "marriage_trigger",
|
||||
"score": 72,
|
||||
"start": "2026-05-01",
|
||||
"end": "2026-06-01",
|
||||
|
||||
@@ -220,7 +220,7 @@ def test_vedastro_service_adapter_can_normalize_mock_range_scan_response() -> No
|
||||
response = {
|
||||
"events": [
|
||||
{
|
||||
"id": "jupiter_7h_window",
|
||||
"id": "GocharJupiterIn7th",
|
||||
"name": "Jupiter supports marriage axis",
|
||||
"start": "2026-05-01",
|
||||
"end": "2026-06-01",
|
||||
@@ -284,13 +284,19 @@ def test_vedastro_service_adapter_can_normalize_mock_range_scan_response() -> No
|
||||
assert report["domain"] == "marriage"
|
||||
assert report["event_count"] == 1
|
||||
assert report["top_event"] == {
|
||||
"event_id": "jupiter_7h_window",
|
||||
"event_id": "GocharJupiterIn7th",
|
||||
"signal_key": "gochar_jupiter_7th_marriage",
|
||||
"signal_label": "Jupiter in 7th marriage window",
|
||||
"signal_family": "marriage_trigger",
|
||||
"score": 72,
|
||||
"start": "2026-05-01",
|
||||
"end": "2026-06-01",
|
||||
"tags": ["marriage", "transit"],
|
||||
}
|
||||
assert report["evidence_ledger"][0]["event_id"] == "jupiter_7h_window"
|
||||
assert report["evidence_ledger"][0]["event_id"] == "GocharJupiterIn7th"
|
||||
assert report["evidence_ledger"][0]["signal_key"] == "gochar_jupiter_7th_marriage"
|
||||
assert report["evidence_ledger"][0]["signal_label"] == "Jupiter in 7th marriage window"
|
||||
assert report["evidence_ledger"][0]["signal_family"] == "marriage_trigger"
|
||||
assert report["evidence_ledger"][0]["domain"] == "marriage"
|
||||
assert report["evidence_ledger"][0]["score"] == 72
|
||||
assert report["evidence_ledger"][0]["raw"]["name"] == "Jupiter supports marriage axis"
|
||||
|
||||
Reference in New Issue
Block a user