fix(functional): yogakaraka needs a kendra among 4/7/10 and a trikona among 5/9; grouping unchanged (BUG-1158 partial)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
81f6e5130a
commit
ffafa28b79
@@ -26,7 +26,16 @@ SIGN_LORDS = {
|
||||
"Pisces": "Jupiter",
|
||||
}
|
||||
PLANETS = ("Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn")
|
||||
SOURCE = "strict_functional_benefic_malefic_v1"
|
||||
# v2 (2026-10-02, BUG-1158 partial, product decision on
|
||||
# TASK-consult-career-yoga-functional-20261002 T1): a yogakaraka must own one
|
||||
# kendra among 4 / 7 / 10 AND one trikona among 5 / 9 (BPHS ch.34 v13); the
|
||||
# 1st house no longer counts for this test, so a lagna lord is not a
|
||||
# yogakaraka by owning the 1st. The benefic / malefic / neutral grouping is
|
||||
# unchanged from v1. The full per-lagna BPHS ch.34 table waits for an
|
||||
# astrology consultant on branch codex/consult-career-yoga-functional-t1-20261002.
|
||||
SOURCE = "strict_functional_benefic_malefic_v2"
|
||||
YOGAKARAKA_KENDRAS = frozenset({4, 7, 10})
|
||||
YOGAKARAKA_TRIKONAS = frozenset({5, 9})
|
||||
|
||||
|
||||
def normalize_sign(value: Any) -> str | None:
|
||||
@@ -80,7 +89,8 @@ def derive_functional_benefic_malefic(ascendant: Any) -> dict[str, Any]:
|
||||
owns_challenge = any(house in challenging for house in houses)
|
||||
|
||||
if owns_trine and owns_kendra and planet not in {"Sun", "Moon"}:
|
||||
yogakarakas.add(planet)
|
||||
if YOGAKARAKA_KENDRAS & set(houses) and YOGAKARAKA_TRIKONAS & set(houses):
|
||||
yogakarakas.add(planet)
|
||||
benefics.add(planet)
|
||||
elif owns_trine:
|
||||
benefics.add(planet)
|
||||
|
||||
@@ -3732,7 +3732,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler, VedastroEvidenceMixin, SynastryM
|
||||
neutral_text = _escape(', '.join(str(item) for item in neutrals) or 'None')
|
||||
yogakaraka_text = _escape(', '.join(str(item) for item in yogakarakas) or 'None')
|
||||
confidence_text = _escape(snapshot.get('effect_on_confidence') or 'Functional role layer was used in the final judgement.')
|
||||
source_text = _escape(snapshot.get('source') or 'strict_functional_benefic_malefic_v1')
|
||||
source_text = _escape(snapshot.get('source') or 'strict_functional_benefic_malefic_v2')
|
||||
|
||||
summary = (
|
||||
'<section data-functional-role-summary="true" '
|
||||
@@ -7109,7 +7109,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler, VedastroEvidenceMixin, SynastryM
|
||||
'yogakarakas': [],
|
||||
'owned_houses': {},
|
||||
'effect_on_confidence': f'未完成功能性吉凶星判定,需降低高严谨结论置信度: {exc}',
|
||||
'source': 'strict_functional_benefic_malefic_v1',
|
||||
'source': 'strict_functional_benefic_malefic_v2',
|
||||
}
|
||||
|
||||
def _detect_yogas(self, planets, asc_idx):
|
||||
|
||||
@@ -5197,7 +5197,7 @@ def render_pl9_markdown(packet: dict) -> str:
|
||||
benefics = _planet_list_text(functional.get('functional_benefics') if isinstance(functional.get('functional_benefics'), list) else [], limit=7) or '-'
|
||||
malefics = _planet_list_text(functional.get('functional_malefics') if isinstance(functional.get('functional_malefics'), list) else [], limit=7) or '-'
|
||||
yogakarakas = _planet_list_text(functional.get('yogakarakas') if isinstance(functional.get('yogakarakas'), list) else [], limit=4) or '-'
|
||||
rows.append(('功能性吉凶', f"吉星:{benefics};凶星:{malefics};Yogakaraka:{yogakarakas}", 'strict_functional_benefic_malefic_v1', '宫主功能属性必须与自然属性、分盘和大运交叉,不单独断事。'))
|
||||
rows.append(('功能性吉凶', f"吉星:{benefics};凶星:{malefics};Yogakaraka:{yogakarakas}", 'strict_functional_benefic_malefic_v2', '宫主功能属性必须与自然属性、分盘和大运交叉,不单独断事。'))
|
||||
|
||||
shadbala = strength_sheet.get('shadbala') if isinstance(strength_sheet.get('shadbala'), dict) else {}
|
||||
if shadbala:
|
||||
@@ -10731,7 +10731,7 @@ def _functional_benefic_malefic_snapshot(planets, ascendant):
|
||||
'yogakarakas': [],
|
||||
'owned_houses': {},
|
||||
'effect_on_confidence': f'未完成功能性吉凶星判定,需降低高严谨结论置信度: {exc}',
|
||||
'source': 'strict_functional_benefic_malefic_v1',
|
||||
'source': 'strict_functional_benefic_malefic_v2',
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user