Repair divisional dignity context handling

This commit is contained in:
732642856
2026-06-28 14:53:54 +08:00
parent ac6f4ed85f
commit 4aae95456a
5 changed files with 331 additions and 19 deletions
+46 -2
View File
@@ -126,7 +126,7 @@ def test_chart_accepts_second_and_preserves_birth_time_precision() -> None:
assert with_seconds["birth_info"]["julian_day"] > without_seconds["birth_info"]["julian_day"]
def test_chart_reports_friend_and_enemy_sign_dignity_for_user_case() -> None:
def test_chart_reports_richer_d1_dignity_labels_for_user_case() -> None:
result = run_engine(
"chart",
"--year", "REDACTED_YEAR",
@@ -141,7 +141,7 @@ def test_chart_reports_friend_and_enemy_sign_dignity_for_user_case() -> None:
)
assert result["planets"]["Jupiter"]["sign"] == "Virgo"
assert result["planets"]["Jupiter"]["status"] == "敌(Enemy Sign)"
assert result["planets"]["Jupiter"]["status"] == "敌(Great Enemy)"
def test_chart_table_mode_prints_readable_ascii_table() -> None:
@@ -330,6 +330,50 @@ def test_full_reading_exposes_sensitive_point_modules() -> None:
assert payload["is_sarpa_drekkana"] is True
def test_full_reading_uses_d9_context_for_navamsa_dignity() -> None:
result = run_engine("full-reading", *BASE_BIRTH_ARGS)
d9_jupiter = result["modules"]["d9_navamsa_expanded"]["Jupiter"]
assert d9_jupiter["sign"] == "Capricorn"
assert d9_jupiter["dignity"] == "NEECHA_BHANGA"
def test_full_reading_uses_d9_context_for_darakaraka_dignity() -> None:
result = run_engine(
"full-reading",
"--year", "1992",
"--month", "8",
"--day", "25",
"--hour", "23",
"--minute", "10",
"--lat", "35.6895",
"--lon", "139.6917",
"--tz", "9",
)
darakaraka = result["modules"]["jaimini"]["darakaraka"]
assert darakaraka["dk_planet"] == "Sun"
assert darakaraka["d9_sign"] == "Gemini"
assert darakaraka["d9_dignity"] == "ENEMY"
def test_full_reading_uses_d9_context_for_vimsopaka_navamsa_dignity() -> None:
result = run_engine(
"full-reading",
"--year", "1992",
"--month", "8",
"--day", "25",
"--hour", "23",
"--minute", "10",
"--lat", "35.6895",
"--lon", "139.6917",
"--tz", "9",
)
navamsa = result["modules"]["vimsopaka"]["Sun"]["varga_scores"]["Navamsa"]
assert navamsa["dignity"] == "Enemy"
def test_varga_cli_outputs_d9_and_d10() -> None:
result = run_engine("varga", *BASE_BIRTH_ARGS, "--d9", "--d10")
charts = result.get("divisional_charts", {})
+37
View File
@@ -91,6 +91,43 @@ class TestDignityLevel(unittest.TestCase):
result = _get_dignity_level(planet, sign)
self.assertEqual(result, 'DEBILITATED', f"{planet} in {sign} should be DEBILITATED, got {result}")
def test_temporary_relationship_depends_on_passed_chart_context(self):
"""同一落位若误用 D1 planets_data,会改变分盘 dignity 结果。"""
d1_like_context = {
'Jupiter': {'sign': 'Virgo'},
'Mercury': {'sign': 'Libra'},
}
d9_like_context = {
'Jupiter': {'sign': 'Virgo'},
'Mercury': {'sign': 'Capricorn'},
}
d1_result = _get_dignity_level('Jupiter', 'Virgo', 10.0, d1_like_context)
d9_result = _get_dignity_level('Jupiter', 'Virgo', 10.0, d9_like_context)
self.assertEqual(d1_result, 'NEUTRAL')
self.assertEqual(d9_result, 'GREAT_ENEMY')
def test_neecha_bhanga_depends_on_passed_chart_context(self):
"""落陷取消必须依赖当前分盘上下文,而不是借用 D1 planets_data。"""
with_cancelling_dispositor = {
'Mercury': {'sign': 'Pisces'},
'Jupiter': {'sign': 'Cancer'},
'Venus': {'sign': 'Aries'},
}
without_cancelling_dispositor = {
'Mercury': {'sign': 'Pisces'},
'Jupiter': {'sign': 'Capricorn'},
'Venus': {'sign': 'Aries'},
}
self.assertEqual(
_get_dignity_level('Mercury', 'Pisces', 12.0, with_cancelling_dispositor),
'NEECHA_BHANGA',
)
self.assertEqual(
_get_dignity_level('Mercury', 'Pisces', 12.0, without_cancelling_dispositor),
'DEBILITATED',
)
class TestDashaCalculation(unittest.TestCase):
"""测试 Dasha 时间线计算"""