Release v6.0.49: fix D9 context injection + theevrabuddhi (BVR-232); Precision 92.95%→94.69%\n\n1. D9 context injection fix (validate_logic_v2.py):\n - Bug: context was read from planet_positions_60.json (no D9 data)\n - Fix: read context from standard_test_charts.json (has full D9/Navamsa/Upagraha)\n - Impact: all D9-dependent rules can now query D9 positions\n\n2. theevrabuddhi_yoga (BVR-232):\n - Old: checked Mercury's D1 strength (completely wrong logic)\n - New: L5 benefic in D1 AND in Navamsa Lagna; D9 L1 lord benefic/aspected\n - FP: 19 → 0 (clean fix via D9 engine)\n\n3. Metrics: Precision 92.95%→94.69%, FP 73→54, F1 92.32%→93.17%

This commit is contained in:
732642856
2026-06-06 23:49:03 +08:00
parent ab620bf130
commit d3cc37b45c
2 changed files with 10 additions and 9 deletions
+7 -7
View File
@@ -286,19 +286,19 @@ def main():
name = chart['name']
planets = chart['planets']
ascendant = chart['ascendant']
context = chart.get('context')
# Skill 引擎检测
# 从 standard_test_charts.json 取完整 context(含 D9/Navamsa/Upagraha 数据)
pyj_chart = pyj_charts.get(name)
if not pyj_chart:
print(f" WARNING: {name} not in PyJhora data")
continue
context = pyj_chart.get('context', {})
# Skill 引擎检测(使用含 D9 的完整 context)
skill_results = engine.detect(planets, ascendant, context=context)
skill_yoga_ids = set(r['rule_id'] for r in skill_results)
skill_comp = skill_yoga_ids & comparable_rule_ids # 只保留可对比的
total_skill_comp += len(skill_comp)
# PyJhora 结果
pyj_chart = pyj_charts.get(name)
if not pyj_chart:
print(f" WARNING: {name} not in PyJhora data")
continue
pyj_yoga_names = set(pyj_chart.get('expected_yogas', []))
# 将 PyJhora Yoga名映射到 Skill rule_id