完整数据版补上行星和宫主解释、后两年年运细项,以及 72 年逐年年返。
定向测试和 200 张英文扫描通过。一张虚构盘中英合计约 20 秒。土星和 KP 结果段仍按修复单让步。 Co-Authored-By: Grok (agent loop)
This commit is contained in:
co-authored by
Grok (agent loop)
parent
2a4646d8b2
commit
cfd0ab68ac
@@ -879,8 +879,51 @@ def _phase_word(phase: Any, language: str) -> str | None:
|
||||
return None
|
||||
|
||||
|
||||
def _annual_houses(packet: dict, language: str) -> str:
|
||||
pack = _first(packet, ("timing_and_predictive_systems", "annual_tajika_pack")) or {}
|
||||
def _year_packs(packet: dict) -> list[tuple[str, dict]]:
|
||||
"""Primary year plus the next two, when the series was calculated."""
|
||||
series = _first(packet, ("timing_and_predictive_systems", "annual_tajika_series")) or {}
|
||||
years = series.get("years") if isinstance(series, dict) else None
|
||||
found: list[tuple[str, dict]] = []
|
||||
if isinstance(years, dict):
|
||||
for year in sorted(years, key=str):
|
||||
pack = years.get(year)
|
||||
if isinstance(pack, dict) and pack:
|
||||
found.append((str(year), pack))
|
||||
if found:
|
||||
return found
|
||||
primary = _first(packet, ("timing_and_predictive_systems", "annual_tajika_pack")) or {}
|
||||
if isinstance(primary, dict) and primary:
|
||||
return [("", primary)]
|
||||
return []
|
||||
|
||||
|
||||
def _each_year(packet: dict, language: str, render) -> str:
|
||||
packs = _year_packs(packet)
|
||||
if not packs:
|
||||
return render({})
|
||||
if len(packs) == 1 and not packs[0][0]:
|
||||
return render(packs[0][1])
|
||||
parts = []
|
||||
for year, pack in packs:
|
||||
body = render(pack)
|
||||
parts.append(f"#### {year}\n\n{body}" if year else body)
|
||||
return "\n\n".join(parts)
|
||||
|
||||
|
||||
def _year_lord_basis(pack: dict, language: str) -> str:
|
||||
field = pack.get("year_lord") if isinstance(pack, dict) and isinstance(pack.get("year_lord"), dict) else {}
|
||||
data = field.get("data") if isinstance(field.get("data"), dict) else {}
|
||||
blocked = field.get("blocked_detail") if isinstance(field.get("blocked_detail"), dict) else {}
|
||||
source = data or blocked
|
||||
if language == "en":
|
||||
text = str(source.get("selection_basis_text_en") or "")
|
||||
if re.search(r"[\u4e00-\u9fff]", text):
|
||||
return ""
|
||||
return text.strip()
|
||||
return str(source.get("selection_basis_text") or "").strip()
|
||||
|
||||
|
||||
def _annual_house_table(pack: dict, language: str) -> str:
|
||||
data = _pack_data(pack.get("annual_houses") if isinstance(pack, dict) else None)
|
||||
houses = data.get("houses") if isinstance(data, dict) else None
|
||||
rows = []
|
||||
@@ -896,8 +939,11 @@ def _annual_houses(packet: dict, language: str) -> str:
|
||||
return _rows_from(rows, language, [("house", "text"), ("sign", "sign"), ("lord", "planet"), ("occupant", "text")])
|
||||
|
||||
|
||||
def _tripataki(packet: dict, language: str) -> str:
|
||||
pack = _first(packet, ("timing_and_predictive_systems", "annual_tajika_pack")) or {}
|
||||
def _annual_houses(packet: dict, language: str) -> str:
|
||||
return _each_year(packet, language, lambda pack: _annual_house_table(pack, language))
|
||||
|
||||
|
||||
def _tripataki_table(pack: dict, language: str) -> str:
|
||||
data = _pack_data(pack.get("tripataki_chakra") if isinstance(pack, dict) else None)
|
||||
if not isinstance(data, dict):
|
||||
return _blank(language, ["point", "sign", "degree", "longitude"])
|
||||
@@ -925,6 +971,10 @@ def _tripataki(packet: dict, language: str) -> str:
|
||||
return "\n\n".join(parts)
|
||||
|
||||
|
||||
def _tripataki(packet: dict, language: str) -> str:
|
||||
return _each_year(packet, language, lambda pack: _tripataki_table(pack, language))
|
||||
|
||||
|
||||
def _trace_table(traces: Any, language: str) -> str:
|
||||
rows = []
|
||||
if isinstance(traces, list):
|
||||
@@ -982,21 +1032,23 @@ def _annual_numeric(packet: dict, language: str) -> str:
|
||||
return _rows_from(rows, language, [("year", "text"), ("planet", "planet"), ("sign", "sign"), ("longitude", "text")])
|
||||
|
||||
|
||||
def _annual_saham_trace(packet: dict, language: str) -> str:
|
||||
pack = _first(packet, ("timing_and_predictive_systems", "annual_tajika_pack")) or {}
|
||||
def _annual_saham_one(pack: dict, language: str) -> str:
|
||||
sahams = _pack_data(pack.get("sahams") if isinstance(pack, dict) else None)
|
||||
traces = sahams.get("formula_traces") if isinstance(sahams, dict) else None
|
||||
return _trace_table(traces, language)
|
||||
|
||||
|
||||
def _annual_saham_trace(packet: dict, language: str) -> str:
|
||||
return _each_year(packet, language, lambda pack: _annual_saham_one(pack, language))
|
||||
|
||||
|
||||
def _natal_saham_trace(packet: dict, language: str) -> str:
|
||||
module = _first(packet, ("advanced_systems", "sahams")) or {}
|
||||
traces = module.get("formula_traces") if isinstance(module, dict) else None
|
||||
return _trace_table(traces, language)
|
||||
|
||||
|
||||
def _annual(packet: dict, language: str) -> str:
|
||||
pack = _first(packet, ("timing_and_predictive_systems", "annual_tajika_pack")) or {}
|
||||
def _annual_contract(pack: dict, language: str) -> str:
|
||||
solar = pack.get("solar_return") if isinstance(pack, dict) else {}
|
||||
chart = pack.get("annual_chart") if isinstance(pack, dict) else {}
|
||||
muntha = pack.get("muntha") if isinstance(pack, dict) else {}
|
||||
@@ -1011,11 +1063,25 @@ def _annual(packet: dict, language: str) -> str:
|
||||
"value": (muntha_data or {}).get("muntha_sign"),
|
||||
"lord": (lord_data or {}).get("year_lord"),
|
||||
}
|
||||
return _rows_from([row], language, [("date", "text"), ("sign", "sign"), ("value", "sign"), ("lord", "planet")])
|
||||
table = _rows_from([row], language, [("date", "text"), ("sign", "sign"), ("value", "sign"), ("lord", "planet")])
|
||||
basis = _year_lord_basis(pack, language)
|
||||
if not basis:
|
||||
return table
|
||||
label = "年主依据" if language == "zh" else "Year-lord basis"
|
||||
sep = ":" if language == "zh" else ": "
|
||||
muntha_lord = muntha_data.get("muntha_lord") if isinstance(muntha_data, dict) else None
|
||||
lines = [table, f"{label}{sep}{basis}"]
|
||||
if muntha_lord:
|
||||
muntha_label = "Muntha 主星" if language == "zh" else "Muntha lord"
|
||||
lines.append(f"{muntha_label}{sep}{planet_name(muntha_lord, language)}")
|
||||
return "\n\n".join(lines)
|
||||
|
||||
|
||||
def _tajika_candidates(packet: dict, language: str) -> str:
|
||||
pack = _first(packet, ("timing_and_predictive_systems", "annual_tajika_pack")) or {}
|
||||
def _annual(packet: dict, language: str) -> str:
|
||||
return _each_year(packet, language, lambda pack: _annual_contract(pack, language))
|
||||
|
||||
|
||||
def _tajika_candidate_table(pack: dict, language: str) -> str:
|
||||
field = pack.get("tajika_yogas") if isinstance(pack, dict) else {}
|
||||
data = field.get("data") if isinstance(field, dict) else {}
|
||||
rows = []
|
||||
@@ -1034,8 +1100,11 @@ def _tajika_candidates(packet: dict, language: str) -> str:
|
||||
return _rows_from(rows, language, [("name", "text"), ("planet", "planets"), ("aspect", "text"), ("residual", "text"), ("status", "text")])
|
||||
|
||||
|
||||
def _tajika_strength(packet: dict, language: str) -> str:
|
||||
pack = _first(packet, ("timing_and_predictive_systems", "annual_tajika_pack")) or {}
|
||||
def _tajika_candidates(packet: dict, language: str) -> str:
|
||||
return _each_year(packet, language, lambda pack: _tajika_candidate_table(pack, language))
|
||||
|
||||
|
||||
def _tajika_strength_table(pack: dict, language: str) -> str:
|
||||
field = pack.get("tajika_strength") if isinstance(pack, dict) else {}
|
||||
data = field.get("data") if isinstance(field, dict) else {}
|
||||
rows = []
|
||||
@@ -1049,6 +1118,10 @@ def _tajika_strength(packet: dict, language: str) -> str:
|
||||
return _rows_from(rows, language, [("name", "text"), ("planet", "planet"), ("score", "text")])
|
||||
|
||||
|
||||
def _tajika_strength(packet: dict, language: str) -> str:
|
||||
return _each_year(packet, language, lambda pack: _tajika_strength_table(pack, language))
|
||||
|
||||
|
||||
def _shadbala_planets(packet: dict) -> dict:
|
||||
module = _first(packet, ("strengths_and_scores", "shadbala")) or {}
|
||||
planets = module.get("planets") if isinstance(module, dict) else None
|
||||
|
||||
Reference in New Issue
Block a user