Files
Jyotisha/scripts/varga_dignity.py
T
Jesse_ChenandClaude Opus 5.5 ae18952e51
Independent Staging Quality Gate / validate (push) Successful in 15m27s
Independent Staging Quality Gate / publish (push) Successful in 3m42s
fix(report,chart): blank columns — drop Kranti, split Ashtakavarga house SAV, ascendant nakshatra, engine varga dignity, no duplicate charts (BUG-1199..1203)
- Report p33 table: no Kranti column (no producer; materials.kranti stays blocked).
- Report p53 table: the "SAV" column was the with-Lagna total (386). Split in the
  reader into SAV / Lagna BAV / SAV + Lagna with a totals row; ashtakavarga.py is
  untouched (frozen rectification identity, ERR-115).
- /api/chart ascendant carries nakshatra / pada / lord (_nakshatra_fields shared with
  the nine bodies); chart cache schema 4 -> 5.
- /api/varga_full bodies carry dignity_level from varga_dignity_level, the function
  the Vimsopaka path now shares (A/B identical); the chart page shows the D1 status
  wording and no longer derives a three-level dignity itself.
- Report page draws each chart once: the trailing block skips charts the body already
  fenced (same rule as the export); the birth-time caveat moves under the body's
  chart heading.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-10-03 09:11:15 +08:00

25 lines
891 B
Python

"""Engine dignity on each body of a `/api/varga_full` divisional chart (BUG-1202).
The chart page's divisional tables show the same ten-level dignity as the D1
"状态" column. The level is `jyotish_engine.varga_dignity_level`, the function
the Vimsopaka path uses, so the page never carries a second rule set.
"""
from __future__ import annotations
from jyotish_engine import varga_dignity_level
def annotate_varga_dignity(varga: dict) -> dict:
"""Add `dignity_level` to every body of one `_calculate_single_varga` result."""
planets = varga.get("planets") if isinstance(varga, dict) else None
if not isinstance(planets, dict):
return varga
for name, row in planets.items():
if not isinstance(row, dict):
continue
level = varga_dignity_level(name, planets)
if level:
row["dignity_level"] = level
return varga