52 lines
2.4 KiB
Python
52 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
|
from scripts.jyotish_api_server import JyotishAPIHandler
|
|
from scripts.jyotish_engine import _build_ai_prompt_pack, _build_health_narrative_payload
|
|
|
|
|
|
def _varga(asc, placements):
|
|
return {
|
|
"ascendant": {"sign": asc, "sign_index": 0},
|
|
"planets": {planet: {"sign": sign} for planet, sign in placements.items()},
|
|
}
|
|
|
|
|
|
def _report():
|
|
modules = {
|
|
"chart": {"ascendant": {"sign": "Leo", "sign_idx": 4}, "planets": {}, "birth_info": {}},
|
|
"varga_full": {
|
|
"D6_Shashthamsa": _varga("Aries", {"Saturn": "Taurus", "Jupiter": "Gemini"}),
|
|
"D8_Ashtamsa": _varga("Taurus", {"Saturn": "Cancer", "Jupiter": "Leo"}),
|
|
"D30_Trimsamsa": _varga("Gemini", {"Saturn": "Virgo", "Jupiter": "Libra"}),
|
|
},
|
|
"dasha": {"current_dasha": {"mahadasha": "Saturn", "antardasha": "Jupiter"}},
|
|
"shadbala": {"planets": {
|
|
"Saturn": {"total_rupas": 6.2, "min_required": 5.0, "strength_level": "strong"},
|
|
"Jupiter": {"total_rupas": 4.1, "min_required": 5.0, "strength_level": "weak"},
|
|
"Venus": {"total_rupas": 9.9, "min_required": 5.0, "strength_level": "strong"},
|
|
}},
|
|
}
|
|
return {"chart": modules["chart"], "modules": modules, "birth_info": {}}
|
|
|
|
|
|
def test_health_narrative_uses_only_health_vargas_lords_dasha_and_related_shadbala():
|
|
report = _report()
|
|
payload = _build_health_narrative_payload(report["modules"], report["chart"])
|
|
assert set(payload) == {"headline", "strengths", "risks", "boundaries"}
|
|
joined = " ".join([payload["headline"], *payload["strengths"], *payload["risks"]])
|
|
for layer in ("D6", "D8", "D30", "Saturn", "Jupiter"):
|
|
assert layer in joined
|
|
assert "Venus" not in joined
|
|
assert "非医疗" in " ".join(payload["boundaries"])
|
|
prompt = _build_ai_prompt_pack(report)
|
|
assert prompt["evidence_snapshot"]["health_narrative"]["headline"] == payload["headline"]
|
|
|
|
|
|
def test_api_prompt_pack_keeps_compact_health_narrative():
|
|
report = _report()
|
|
chart = {**report["chart"], "modules": report["modules"], "birth": {}, "dasha": {}}
|
|
prompt = JyotishAPIHandler.__new__(JyotishAPIHandler)._build_chart_prompt_pack(chart)
|
|
seed = prompt["evidence_snapshot"]["health_narrative"]
|
|
assert seed["status"] == "parameter_sensitive"
|
|
assert "D6/D8/D30" in seed["headline"]
|
|
assert "非医疗" in " ".join(seed["boundaries"])
|