feat(tajika): year lord by the Panchadhikari rule, ported from upstream c7117f92 (BUG-1214)
Round-4 astrologer ruling Q3. tajika.calc_panchadhikari_year_lord and its
missing pieces (Tri-Rasi tables, planet index maps, ayanamsa-aware PyJHora
lookups) plus references/tajika_panchavargiya_rules.json (blob e8c15ac3) are
ported verbatim from yinduzhanxing c7117f92, with one keyword added
(muntha_sign_idx): upstream builds the Muntha-lord candidate from the annual
Lagna + years; ours stays natal Lagna + completed years (BUG-1212).
Both annual producers (solar_return_full_report, cmd_tajika) call the new
tajika_year_lord.select_annual_year_lord, so the pack conflict gate compares
the same rule. Output carries candidates / candidate_list with Panchavargiya
score and engine, aspect flags, selection_basis and a one-sentence basis
(zh/en). The product path always uses the native proxy (PyJHora is AGPL, absent
from the API image and CI); JYOTISH_YEAR_LORD_PYJHORA_REFERENCE=1 restores the
upstream PyJHora lookup for research. Card varshesha_basis and the report
'Selection basis' rows show the sentence; the BUG-1212 stand-in label is gone.
Mudda Dasha and Tri-Pataka follow the selected year lord.
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
bc03bba26b
commit
0afcc2d9a3
@@ -71,11 +71,10 @@ YOGA_PACKET_DOMAINS = {
|
||||
"raman_bvr_relationship_mother_batch_closure_packet_2026_08_20.json": "parents",
|
||||
"raman_bvr_relationship_sibling_core_batch_closure_packet_2026_08_20.json": "siblings",
|
||||
}
|
||||
# BUG-1212 (ruling 甲11): the year lord shown is the Muntha sign lord; the
|
||||
# astrologer's rule is Panchavargiya (strongest of five office-bearers), whose
|
||||
# native producer is still blocked. Shown wherever the year lord is shown.
|
||||
YEAR_LORD_BASIS = "暂用 Muntha 主星;占星师口径为 Panchavargiya,待接入"
|
||||
YEAR_LORD_BASIS_EN = "Muntha sign lord for now; the astrologer's rule is Panchavargiya, not yet wired"
|
||||
# BUG-1214 (round-4 ruling Q3): the year lord is chosen by the Panchadhikari
|
||||
# rule (tajika_year_lord); the card carries its one-sentence basis. Replaces
|
||||
# the BUG-1212 stand-in label. Fallback text only if a producer gives none.
|
||||
YEAR_LORD_BASIS_MISSING = "选法依据缺失"
|
||||
|
||||
TAJIKA_BOUNDARY = (
|
||||
"parameter_sensitive: Tajika / Varshaphala is verified on the first target set only, "
|
||||
@@ -926,7 +925,8 @@ def build_annual_tajika(birth_payload: dict, chart: dict, *, reference: datetime
|
||||
}
|
||||
annual_chart = _record(fields["annual_chart"].get("data"))
|
||||
muntha = _record(fields["muntha"].get("data"))
|
||||
year_lord = _record(fields["year_lord"].get("data")).get("year_lord")
|
||||
year_lord_data = _record(fields["year_lord"].get("data"))
|
||||
year_lord = year_lord_data.get("year_lord")
|
||||
annual_lagna_idx = _sign_index(annual_chart.get("asc_sign"))
|
||||
focus = {"Sun", "Moon", year_lord}
|
||||
aspects = []
|
||||
@@ -950,7 +950,7 @@ def build_annual_tajika(birth_payload: dict, chart: dict, *, reference: datetime
|
||||
"varsha_year": {"start": start.strftime("%Y-%m-%d"), "end": end.strftime("%Y-%m-%d")},
|
||||
"annual_lagna": annual_chart.get("asc_sign"),
|
||||
"varshesha": year_lord,
|
||||
"varshesha_basis": YEAR_LORD_BASIS,
|
||||
"varshesha_basis": year_lord_data.get("selection_basis_text") or YEAR_LORD_BASIS_MISSING,
|
||||
"muntha": {
|
||||
"sign": muntha.get("muntha_sign"),
|
||||
"lord": muntha.get("muntha_lord"),
|
||||
|
||||
Reference in New Issue
Block a user