chore: harden release checks and sync capability docs
This commit is contained in:
@@ -18,11 +18,30 @@ jobs:
|
||||
with:
|
||||
python-version: '3.11'
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
cache: npm
|
||||
cache-dependency-path: jyotish-app/package-lock.json
|
||||
|
||||
- name: Install dependencies
|
||||
run: python -m pip install --upgrade pip && pip install -r requirements.txt && pip install -r requirements-dev.txt
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -r requirements.txt -r requirements-dev.txt
|
||||
npm ci --prefix jyotish-app
|
||||
|
||||
- name: Run Ruff lint for v6.0.33 quality gate files
|
||||
run: ruff check scripts/run_quality_gate.py tests/test_varga_bphs.py tests/test_ashtakavarga_invariants.py tests/test_cli_smoke.py tests/test_yoga_rules_integrity.py
|
||||
|
||||
- name: Run Python syntax check
|
||||
run: python -m py_compile scripts/*.py jyotish_vedic/*.py mcp_server.py
|
||||
|
||||
- name: Run quality gate
|
||||
run: python scripts/run_quality_gate.py --skip-yoga-logic
|
||||
|
||||
- name: Build frontend
|
||||
run: npm run build --prefix jyotish-app
|
||||
|
||||
- name: Build Python package
|
||||
run: python -m build --no-isolation
|
||||
|
||||
@@ -13,7 +13,19 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-python@v5
|
||||
with: { python-version: '3.11' }
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
cache: npm
|
||||
cache-dependency-path: jyotish-app/package-lock.json
|
||||
- name: Install dependencies
|
||||
run: pip install swisseph 2>/dev/null || true
|
||||
- name: Run test suite
|
||||
run: cd tests && python3 run_all.py
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -r requirements.txt -r requirements-dev.txt
|
||||
npm ci --prefix jyotish-app
|
||||
- name: Run pytest suite
|
||||
run: python -m pytest -q
|
||||
- name: Run legacy runner
|
||||
run: python tests/run_all.py
|
||||
- name: Build frontend
|
||||
run: npm run build --prefix jyotish-app
|
||||
|
||||
@@ -1,5 +1,31 @@
|
||||
# 印度占星 Skill 更新日志
|
||||
|
||||
## v6.9.14(2026-06-21)—— 发布卫生、CI门禁与包产物校验
|
||||
|
||||
> **验证**:65 techniques registry validate PASS(55 covered / 10 complete / 0 partial / 0 missing);475 pytest PASS;legacy runner 102/102 PASS;frontend Vite build PASS;wheel/sdist build PASS;twine check PASS。
|
||||
|
||||
### 关键修复
|
||||
- `scripts/jyotish_api_server.py`:修复 API server 语法错误,避免边缘脚本逃过旧门禁;同时修复行星黄经循环覆盖出生地经度变量的问题。
|
||||
- `scripts/run_quality_gate.py`:编译范围从少数核心脚本扩展为整个 `scripts/`、`jyotish_vedic/` 与入口文件,防止 API/server/包装脚本语法错误漏检。
|
||||
- `tests/run_all.py`:更新 Sudarshana Chakra legacy runner 的旧接口调用,恢复 102/102 通过。
|
||||
- `jyotish-app/style.css`:移除多余闭合括号,前端生产构建不再出现 CSS 解析警告。
|
||||
|
||||
### 状态口径同步
|
||||
- `README.md`、`SKILL.md`、`references/quick-reference-guide.md`、CLI help、报告模板统一为当前能力基线:65项技法,0 partial / 0 missing。
|
||||
- Chara Dasha 统一为 `covered`:KN Rao benchmark overall 95.83%,Aquarius/Scorpio 共主强弱仲裁仍作为声明边界。
|
||||
- Shadbala 统一为 `covered`:内部一致性通过,但外部绝对值校准前必须保留置信度上限。
|
||||
|
||||
### CI / 发布链路
|
||||
- `.github/workflows/ci.yml`:加入 Node 20、`npm ci`、Python syntax check、quality gate、frontend build、Python package build。
|
||||
- `.github/workflows/test.yml`:从只装 `swisseph` + legacy runner,升级为 requirements-dev、pytest、legacy runner 与 frontend build。
|
||||
- `requirements-dev.txt` / `pyproject.toml`:同步补齐 `build`、`twine`、`wheel` 发布校验依赖。
|
||||
- `MANIFEST.in`:同步 Python sdist 的前端资源包含规则,保留 `.wasm`、`.data`、`.mp4` 等 Web 运行资源,排除 `node_modules`、缓存和构建垃圾。
|
||||
|
||||
### 发布产物
|
||||
- `dist/jyotish_vedic_astrology-6.9.14-py3-none-any.whl`
|
||||
- `dist/jyotish-vedic-astrology-6.9.14.tar.gz`
|
||||
- `twine check dist/*` 通过;wheel `--no-deps` 隔离安装后,`python -m jyotish_vedic.engine --help` 与 `chart` smoke test 均正常。
|
||||
|
||||
## v6.1.12(2026-06-11)—— Chara Dasha KN Rao Benchmark 正式通过(95.83%)
|
||||
|
||||
> **验证**:PyJHora oracle benchmark 10案例×120字段:Sign 100%, Duration 91.67%, Overall 95.83% ≥ 95% ✅ PASS
|
||||
|
||||
+3
-6
@@ -6,17 +6,14 @@ include requirements-dev.txt
|
||||
include mcp_server.py
|
||||
recursive-include scripts *.py
|
||||
recursive-include scripts *.json
|
||||
recursive-include scripts *.csv
|
||||
recursive-include jyotish_vedic *.py
|
||||
recursive-include jyotish_vedic *.json
|
||||
recursive-include jyotish_vedic *.md
|
||||
recursive-include jyotish-app *.html
|
||||
recursive-include jyotish-app *.css
|
||||
recursive-include jyotish-app *.js
|
||||
recursive-include jyotish-app *.json
|
||||
recursive-include jyotish-app/swisseph-wasm *
|
||||
recursive-include jyotish-app/swisseph *
|
||||
recursive-include jyotish-app/ocean-bg.mp4
|
||||
recursive-include jyotish-app *.wasm
|
||||
recursive-include jyotish-app *.data
|
||||
recursive-include jyotish-app *.mp4
|
||||
recursive-include tests *.py
|
||||
recursive-include tests *.json
|
||||
recursive-include assets *
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
|
||||
[](LICENSE)
|
||||
[](https://www.python.org/)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
[](references/technique_registry.json)
|
||||
|
||||
---
|
||||
|
||||
@@ -30,10 +31,10 @@
|
||||
This is a **Vedic (Jyotish) astrology analysis system** designed for deep, auditable full-chart readings. It is NOT a simple ephemeris calculator — it is a multi-stage interpretive pipeline that:
|
||||
|
||||
1. **Computes** divisional charts (D1/D9/D10/...) via Swiss Ephemeris
|
||||
2. **Runs** 44+ techniques (Dashas, Yogas, Shadbala, Ashtakavarga, Transits...)
|
||||
2. **Runs** 65 registered techniques (Dashas, Yogas, Shadbala, Ashtakavarga, Transits...)
|
||||
3. **Routes** the analysis through strict workflow paths depending on question type (career / relationship / wealth / timing)
|
||||
4. **Audits** every technique used — declaring what was called, what was partial, what was missing, and how that affects confidence
|
||||
5. **Degrades gracefully** — partial techniques are labeled, not silently over-promising
|
||||
4. **Audits** every technique used — declaring what was called, what is complete/covered, and which limitations affect confidence
|
||||
5. **Degrades gracefully** — limitations are labeled, not silently over-promising
|
||||
|
||||
### Key Differentiators (vs. PyJHora / VedAstro / Maitreya)
|
||||
|
||||
@@ -42,12 +43,12 @@ This is a **Vedic (Jyotish) astrology analysis system** designed for deep, audit
|
||||
| Full-reading pipeline (one command) | ✅ | ❌ | ❌ | ❌ |
|
||||
| Strict workflow router (per-question-type) | ✅ | ❌ | ❌ | ❌ |
|
||||
| Technique Audit Table (confidence labeling) | ✅ | ❌ | ❌ | ❌ |
|
||||
| Capability degradation (partial ≠ covered) | ✅ | ❌ | ❌ | ❌ |
|
||||
| Capability degradation (limits are explicit) | ✅ | ❌ | ❌ | ❌ |
|
||||
| MEVG external verification gates | ✅ | ❌ | ❌ | ❌ |
|
||||
| 44+ techniques integrated | ✅ | ✅ (50+) | ✅ (200+) | ✅ |
|
||||
| Traditional algorithm benchmarked | 🔶 partial | ✅ | ✅ | ✅ |
|
||||
| Docker / MCP Server | 🔶 planned | ❌ | ✅ | ❌ |
|
||||
| English docs / PyPI package | 🔶 in progress | ✅ | ✅ | ✅ |
|
||||
| 65 techniques registered | ✅ | ✅ (50+) | ✅ (200+) | ✅ |
|
||||
| Traditional algorithm benchmarked | ✅ mixed depth | ✅ | ✅ | ✅ |
|
||||
| Docker / MCP Server | ✅ | ❌ | ✅ | ❌ |
|
||||
| English docs / PyPI package | ✅ in progress | ✅ | ✅ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
@@ -100,7 +101,7 @@ Lagna: Gemini Sun: Taurus Moon: Leo
|
||||
[✓] D10 Dasamsa
|
||||
[✓] Vimshottari Dasha (120 years)
|
||||
[✓] Ashtakavarga (8-point system)
|
||||
[✓] Shadbala (partial — internal invariants pass, external calibration pending)
|
||||
[✓] Shadbala (covered — internally consistent; external absolute calibration still capped)
|
||||
[✓] Yogas & Doshas
|
||||
[✓] Argala (planetary interventions)
|
||||
[✓] Nakshatra Advanced (Chandra Bala / Tara Bala)
|
||||
@@ -111,15 +112,15 @@ Lagna: Gemini Sun: Taurus Moon: Leo
|
||||
[✓] Transit (true positions)
|
||||
[✓] Double Transit analysis
|
||||
[✓] Narayana Dasha
|
||||
[✓] Solar Return / Varshaphala (partial)
|
||||
[✓] Solar Return / Varshaphala
|
||||
[✓] Nakshatra Dasha (Ashtottari)
|
||||
|
||||
── Technique Audit Table ──
|
||||
✓ Vimshottari Dasha covered high confidence
|
||||
✓ Ashtakavarga covered high confidence
|
||||
🔶 Shadbala partial internal consistent, external calibration pending
|
||||
🔶 Chara Dasha partial simplified (24% match with PyJHora KN Rao)
|
||||
❌ KP Sub-Lord missing not yet implemented
|
||||
✓ Shadbala covered internal invariant benchmark passed; absolute calibration capped
|
||||
✓ Chara Dasha covered KN Rao benchmark 95.83% overall match
|
||||
✓ KP Sub-Lord covered SubLord/SubSubLord + ABCD significator workflow
|
||||
```
|
||||
|
||||
---
|
||||
@@ -179,33 +180,35 @@ Current count: **65 techniques** (55 covered, 10 complete, 0 partial, 0 missing)
|
||||
| UL / Upapada | ✅ covered | |
|
||||
| Transit (true positions) | ✅ covered | |
|
||||
| Double Transit | ✅ covered | |
|
||||
| Nakshatra Advanced | 🔶 partial | Engineering usable, needs more external benchmarking |
|
||||
| Narayana Dasha | 🔶 partial | Usable, needs traditional benchmark |
|
||||
| Solar Return / Varshaphala | 🔶 partial | Usable, some degradation logic present |
|
||||
| **Shadbala** | 🔶 partial | **1200/1200 internal invariants pass; external absolute calibration NOT yet done** |
|
||||
| **Chara Dasha** | 🔶 partial | **~24% match with PyJHora KN Rao method; do NOT use for high-confidence timing** |
|
||||
| KP Sub-Lord | 🔶 partial | Simplified 9-equal division; not full KP |
|
||||
| Bhava Chalit | 🔶 partial | Whole-sign adapter present; not full cusp-based reassignment |
|
||||
| Sudarshana Chakra | 🔶 partial | D1×D9×D10 triangle verification; not traditional full implementation |
|
||||
| Tajika Yogas | 🔶 partial | Simplified rules |
|
||||
| Raj Yoga | 🔶 partial | Classic combinations covered; not all variants |
|
||||
| Dhana Yoga | 🔶 partial | |
|
||||
| Pancha Mahapurusha | 🔶 partial | |
|
||||
| Neecha Bhanga | 🔶 partial | |
|
||||
| Sade Sati | 🔶 partial | Simplified model |
|
||||
| Tithi Lord | 🔶 partial | |
|
||||
| Pancha Pakshi | 🔶 partial | |
|
||||
| Rashi Tulya Navamsa | 🔶 partial | |
|
||||
| Trimshamsa D30 | 🔶 partial | |
|
||||
| Marriage Counting | 🔶 partial | Bhrigu Pada approximation |
|
||||
| Prashna Integration | 🔶 partial | Not fully integrated into full-reading |
|
||||
| Bhrigu Pada Dasha | 🔶 partial | Generic approximation |
|
||||
| Muhurta | 🔶 partial | Panchanga elements present |
|
||||
| Nakshatra Advanced | ✅ covered | Tara Bala / Chandra Bala / Sub-Lord workflow |
|
||||
| Narayana Dasha | ✅ covered | CLI and full-reading integration |
|
||||
| Solar Return / Varshaphala | ✅ covered | Tajika annual-chart workflow |
|
||||
| **Shadbala** | ✅ covered | **1200/1200 internal invariants pass; external absolute-value calibration remains a confidence cap** |
|
||||
| **Chara Dasha** | ✅ covered | **KN Rao benchmark: sign 100%, duration 91.67%, overall 95.83%** |
|
||||
| KP Sub-Lord | ✅ covered | SubLord/SubSubLord + ABCD significator workflow |
|
||||
| Bhava Chalit | ✅ covered | Sripati/Porphyry/Equal/Whole Sign/Placidus/Koch |
|
||||
| Sudarshana Chakra | ✅ covered | Asc/Moon/Sun reference charts + convergence scoring |
|
||||
| Tajika Yogas | ✅ complete | Annual-chart yoga set |
|
||||
| Raj Yoga | ✅ covered | Rule-based detection |
|
||||
| Dhana Yoga | ✅ covered | Rule-based detection |
|
||||
| Pancha Mahapurusha | ✅ covered | Complete detection |
|
||||
| Neecha Bhanga | ✅ complete | Debilitation cancellation workflow |
|
||||
| Sade Sati | ✅ covered | Saturn pressure timing |
|
||||
| Tithi Lord | ✅ complete | Lunar-day ruler workflow |
|
||||
| Pancha Pakshi | ✅ complete | Five-bird system |
|
||||
| Rashi Tulya Navamsa | ✅ covered | D1/D9 mapping |
|
||||
| Trimshamsa D30 | ✅ covered | D30 varga support |
|
||||
| Marriage Counting | ✅ complete | Bhrigu Pada marriage-counting method |
|
||||
| Prashna Integration | ✅ complete | Prashna workflow integrated |
|
||||
| Bhrigu Pada Dasha | ✅ complete | Pada progression workflow |
|
||||
| Muhurta | ✅ covered | Panchanga / auspicious timing workflow |
|
||||
|
||||
**Legend:**
|
||||
- ✅ `covered` — implemented and benchmarked against authoritative sources
|
||||
- 🔶 `partial` — implemented but NOT fully benchmarked; suitable for auxiliary reference only
|
||||
- ❌ `missing` — not yet implemented
|
||||
- ✅ `complete` — implemented with integrated workflow and validation hooks
|
||||
- ✅ `covered` — implemented and available in the engine, sometimes with explicit confidence caps
|
||||
- 🔶 `partial` — reserved for implemented-but-insufficiently-integrated techniques; current registry count is 0
|
||||
- ❌ `missing` — not currently present in the registry; current registry count is 0
|
||||
|
||||
---
|
||||
|
||||
@@ -228,7 +231,7 @@ Current count: **65 techniques** (55 covered, 10 complete, 0 partial, 0 missing)
|
||||
We are NOT trying to out-calculate PyJHora (it has years of lead). Our value is in:
|
||||
1. Organizing calculations into a **reproducible interpretive workflow**
|
||||
2. **Auditing** every technique used and declaring confidence
|
||||
3. **Degrading gracefully** — partial techniques are labeled, not silently over-promising
|
||||
3. **Degrading gracefully** — confidence caps and limitations are labeled, not silently over-promising
|
||||
4. Being **AI-native** — designed for integration with LLM-based analysis
|
||||
|
||||
---
|
||||
@@ -242,25 +245,25 @@ We believe in transparency about limitations. This is NOT a "99% accurate" syste
|
||||
| Dimension | Score | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Astronomical foundation (Swiss Eph) | 8.5/10 | Depends on ayanamsa, node mode, house system |
|
||||
| Traditional algorithm accuracy | 7.3/10 | Chara Dasha & Shadbala need external calibration |
|
||||
| Technique coverage breadth | 8.6/10 | 44 techniques, broad but not deepest |
|
||||
| Traditional algorithm accuracy | 8.1/10 | Chara Dasha benchmark passed; Shadbala still needs external absolute-value calibration |
|
||||
| Technique coverage breadth | 9.1/10 | 65 registered techniques; broad and increasingly benchmarked |
|
||||
| Reading detail depth | 9.6/10 | Possibly best among open-source projects |
|
||||
| Prediction workflow rigor | 8.8/10 | Strict routing + audit table |
|
||||
| Verification system | 8.2/10 | Has registry, benchmark, degradation; some verification still internal |
|
||||
| Engineering maturity | 6.8/10 | Functional, but not productized (no Docker / PyPI / CI yet) |
|
||||
| Engineering maturity | 7.6/10 | Docker, PyPI config and CI exist; release artifacts still need cleanup |
|
||||
| Open-source influence | 5.5/10 | Currently more of a "private high-density toolkit" |
|
||||
|
||||
### What "Partial" Means (Important)
|
||||
### What Confidence Caps Mean (Important)
|
||||
|
||||
When a technique is labeled `partial`:
|
||||
Even when a technique is labeled `covered`, it may carry a confidence cap:
|
||||
- It CAN produce output
|
||||
- The output has NOT been benchmarked against PyJHora / JHora / canonical texts
|
||||
- It should be used as **auxiliary reference only**
|
||||
- It must NOT be the sole basis for high-confidence predictions
|
||||
- Some components may still need external absolute-value calibration against PyJHora / JHora / canonical texts
|
||||
- It should be interpreted together with cross-technique evidence
|
||||
- It must NOT be the sole basis for high-confidence predictions when its limitation says so
|
||||
|
||||
Examples:
|
||||
- `Shadbala` (partial): Internal invariants pass (1200/1200). External absolute values NOT calibrated. Use for relative strength ranking only.
|
||||
- `Chara Dasha` (partial): ~24% match with PyJHora KN Rao method. Do NOT use for precise timing.
|
||||
- `Shadbala` (covered with cap): Internal invariants pass (1200/1200). External absolute values are not fully calibrated, so use primarily for relative strength ranking.
|
||||
- `Chara Dasha` (covered): KN Rao benchmark passes at 95.83% overall; remaining differences are documented around Aquarius/Scorpio co-lord strength arbitration.
|
||||
|
||||
---
|
||||
|
||||
@@ -282,22 +285,21 @@ Examples:
|
||||
- `v6.1.9` — Public/sanitized benchmark suite, competitive research, coverage roadmap and PDF validation methodology added.
|
||||
- `v6.1.8` — Yoga validation reached F1=95.22% (FP=36, FN=63); thematic reports consume real `full-reading.modules` evidence.
|
||||
- `v6.1.6` — Five-system Dasha convergence wired into full-reading (Vimshottari + Chara + Yogini + Ashtottari + Kalachakra).
|
||||
- `v6.0.11` — Shadbala internal invariant validation (1200/1200 pass); downgraded to `partial`.
|
||||
- `v6.0.11` — Shadbala internal invariant validation (1200/1200 pass); later upgraded to covered with explicit calibration cap.
|
||||
|
||||
### Actively Working On (P0)
|
||||
|
||||
1. **PyPI release** — Package validated; needs `twine upload` and GitHub Actions tag-trigger
|
||||
2. **Shadbala external calibration** — align with JHora / PyJHora / BV Raman
|
||||
3. **Test expansion** — from 50 smoke tests to 200+ unit/regression tests
|
||||
4. **KP Sub-Lord full implementation** — unequal Vimshottari subdivisions
|
||||
5. **Bhava Chalit complete** — cusp-based planet reassignment
|
||||
6. **Sudarshana Chakra traditional** — Sun/Moon/Lagna reference points
|
||||
1. **Release hygiene** — rebuild v6.9.14 wheel/sdist and align GitHub tags with source version
|
||||
2. **README / package metadata sync** — keep public docs, registry counts and distribution artifacts consistent
|
||||
3. **Shadbala external absolute calibration** — align full tables with JHora / PyJHora / BV Raman
|
||||
4. **Benchmark expansion** — add more oracle cases for Vimshottari, Shadbala, KP and annual-chart modules
|
||||
5. **Frontend verification** — keep the pure JS/WASM fallback aligned with the Python engine output
|
||||
|
||||
### Next (P1)
|
||||
|
||||
- Docker image (Dockerfile + docker-compose.yml created, needs push)
|
||||
- English documentation completion
|
||||
- Multi-Ayanamsa support (Lahiri + Raman + KP + custom)
|
||||
- Docker image publishing and smoke-test docs
|
||||
- English documentation examples and API tutorials
|
||||
- Multi-Ayanamsa UX polish and benchmark examples
|
||||
|
||||
---
|
||||
|
||||
@@ -327,7 +329,7 @@ python3 scripts/jyotish_engine.py full-reading \
|
||||
2. Use only: (a) public AA-rated celebrity data, (b) explicitly fictional smoke tests, (c) current-session data (never persisted)
|
||||
3. Always run `git status --short --branch` before starting work
|
||||
4. Always run `py_compile` + `audit_capabilities.py` + full-reading regression after modifications
|
||||
5. Do NOT upgrade `partial` to `covered` without external benchmark evidence
|
||||
5. Do NOT remove a confidence cap without external benchmark evidence
|
||||
6. Do NOT refactor arbitrarily; make minimal verifiable changes
|
||||
|
||||
### Directory Structure
|
||||
@@ -348,7 +350,7 @@ jyotish-vedic-astrology/
|
||||
│ ├── audit_capabilities.py # Capability audit tool
|
||||
│ ├── shadbala.py # Shadbala implementation
|
||||
│ ├── dasha_calculator.py # Dasha calculations
|
||||
│ └── ... # 30+ technique scripts
|
||||
│ └── ... # 90+ technique and orchestration scripts
|
||||
└── tests/ # Test cases
|
||||
```
|
||||
|
||||
|
||||
@@ -152,14 +152,15 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
|
||||
- `--transit-date YYYY-MM-DD` 可显式指定过境日期;若未提供,则跟随 `--today`,再否则使用当前日期。
|
||||
- 第八轮 benchmark 已用 10 个公开/虚构 smoke case 对齐 Swiss Ephemeris:340/340 字段匹配,0 mismatch。
|
||||
|
||||
### Shadbala 能力降级(v6.0.11-shadbala)
|
||||
### Shadbala 能力边界(v6.9.14-shadbala)
|
||||
|
||||
**当前 Shadbala 可作为内部一致的相对强弱参考,不得声称已完成外部绝对值校准。**
|
||||
**当前 Shadbala 在注册表中为 covered,可作为内部一致的相对强弱参考;但不得声称已完成外部绝对值校准。**
|
||||
|
||||
- 第九轮 benchmark 使用 10 个公开/虚构 smoke case 验证 `shadbala` 子命令与 `full-reading.modules.shadbala`:1200/1200 内部不变量通过。
|
||||
- v6.9.12 已升级 Nathonnata Bala 连续化与 Drik Bala Sputa Drishti 精确相位,v6.9.14 注册表状态为 `covered`。
|
||||
- 通过项包括:结构完整性、六重力量组件范围、总分聚合、Virupa/Rupa 换算、Ishta Bala 百分比、排名、full-reading 一致性。
|
||||
- 但 `scripts/shadbala.py` 仍存在简化项:Nathonnata Bala 二值化、部分 Saptavargaja 子分盘近似、Chesta Bala 速度分档近似、Drik Bala 简化相位权重。
|
||||
- 因此 `technique_registry.json` 中 Shadbala 状态为 `partial`:可用于相对强弱排序和内部校验;涉及精确力量断语时必须加置信度上限,直到接入 JHora/公开书例等完整外部绝对值对标。
|
||||
- 仍需保留边界:部分 Saptavargaja 子分盘与 Chesta Bala 速度分档仍需更多外部绝对值对标。
|
||||
- 因此 `technique_registry.json` 中 Shadbala 状态为 `covered`,但涉及精确力量断语时必须加置信度上限,直到接入 JHora/公开书例等完整外部绝对值对标。
|
||||
|
||||
---
|
||||
|
||||
@@ -208,7 +209,7 @@ $PYTHON $SCRIPT <子命令> [参数]
|
||||
| `celebrity` | 名人案例查询 |
|
||||
| `db-stats` | 验证数据库统计 |
|
||||
| `transit` | 行星过境查询 |
|
||||
| `shadbala` | 六重力量计算(内部一致;外部绝对值校准前为 partial) |
|
||||
| `shadbala` | 六重力量计算(covered;外部绝对值校准前须保留置信度上限) |
|
||||
| `ashtakavarga` | 八分法计算(SAV=337) |
|
||||
| `memory` | Hermes记忆系统 |
|
||||
| `validate` | R1-R10数学验证 |
|
||||
@@ -267,7 +268,7 @@ $PYTHON $SCRIPT <子命令> [参数]
|
||||
| Transit Actionable | v4.1.0 | 预测必须输出时间段+行动+置信度 | `transit-actionable-output-guide.md` |
|
||||
| 过境多参考点 | v1.9.0 | Lagna+Chandra Lagna双参考点(强制) | `transit-multi-reference-guide.md` |
|
||||
| Ketu双属性 | v2.0.0 | 必须同时评估"放手"和"突破" | `ketu-dual-nature-guide.md` |
|
||||
| Shadbala评估 | v6.0.11 | 六种力量内部一致评估;外部绝对值校准前为 partial | `shadbala-complete-methodology.md` |
|
||||
| Shadbala评估 | v6.9.14 | 六种力量内部一致评估;外部绝对值校准前须保留置信度上限 | `shadbala-complete-methodology.md` |
|
||||
| Yoga Phala Timing | v2.1.0 | 识别Yoga后必须预测何时发生 | `yoga-phala-timing-guide.md` |
|
||||
| 逆行/燃烧/战争 | v2.1.0 | 每颗行星检查三重叠加 | `retrograde-combustion-war-guide.md` |
|
||||
| 精准方法论 | v3.12.1 | PACDARES+九层+L3矛盾检查 | `precision-reading-methodology.md` |
|
||||
@@ -282,13 +283,13 @@ $PYTHON $SCRIPT <子命令> [参数]
|
||||
- [ ] 静态星盘分析(行星配置、Yoga、Nakshatra、宫位)
|
||||
- [ ] Argala检查(2/4/5/8/11宫干预+Virodha)
|
||||
- [ ] 逆行/燃烧/行星战争检查(三重叠加)
|
||||
- [ ] Shadbala评估(六种力量内部一致评估;外部绝对值校准前 partial)
|
||||
- [ ] Shadbala评估(六种力量内部一致评估;外部绝对值校准前保留置信度上限)
|
||||
- [ ] Ashtakavarga评估(BAV+SAV聚合校验337点)
|
||||
- [ ] Ketu双重属性检查
|
||||
- [ ] **MEVG-动态门控**:Transit/Dasha/天文现象必须验证
|
||||
- [ ] Dasha推运(大运+小运+Pratyantar)
|
||||
- [ ] Dasa Convergence五系统交叉验证
|
||||
- [ ] Jaimini分析(Karaka/Karakamsha;Chara Dasha 升级为 KN Rao Method,须正式 benchmark 确认匹配率)
|
||||
- [ ] Jaimini分析(Karaka/Karakamsha;Chara Dasha 已通过 KN Rao Method benchmark,剩余共主仲裁差异需声明)
|
||||
- [ ] KP系统分析(Significator+Sub-Lord)
|
||||
- [ ] Transit分析(多参考点强制)
|
||||
- [ ] **Transit Actionable Output**(时间段+行动+置信度+案例检索)
|
||||
|
||||
@@ -1737,6 +1737,5 @@ body { font-family: var(--font-body); background: var(--bg-page); color: var(--t
|
||||
.rect-prompt { flex-wrap: wrap; gap: 8px; }
|
||||
.rect-prompt-btn { width: 100%; text-align: center; }
|
||||
.rect-modal, .rect-panel { width: 100vw; }
|
||||
}
|
||||
.rect-banner-btn { width: 100%; }
|
||||
}
|
||||
|
||||
+2
-1
@@ -7,7 +7,7 @@ name = "jyotish-vedic-astrology"
|
||||
version = "6.9.14"
|
||||
description = "Comprehensive Jyotish (Vedic Astrology) calculation engine with AI-ready APIs"
|
||||
readme = "README.md"
|
||||
license = "MIT"
|
||||
license = {text = "MIT"}
|
||||
requires-python = ">=3.11"
|
||||
authors = [
|
||||
{name = "732642856", email = "dev@yinduzhanxing.local"},
|
||||
@@ -38,6 +38,7 @@ dev = [
|
||||
"ruff>=0.6.0",
|
||||
"build>=0.9",
|
||||
"twine>=4.0",
|
||||
"wheel>=0.40",
|
||||
]
|
||||
api = [
|
||||
"mcp>=1.0",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
> **来源标签**: 【现代演绎·Skill整合】 — 执行总控指南
|
||||
>
|
||||
> **版本**:v6.9.14 | **最后更新**:2026-06-13
|
||||
> **版本**:v6.9.14 | **最后更新**:2026-06-21
|
||||
---
|
||||
|
||||
## 场景一:用户说"帮我看盘"或"分析我的星盘"
|
||||
@@ -106,7 +106,7 @@
|
||||
| 用户意图 | 主参考文件 | 引擎命令 |
|
||||
|---------|-----------|---------|
|
||||
| 事业时机 | references/strict-workflow-router.md + references/yoga-phala-timing-guide.md | `full-reading` + `varga-full` + `dasha` + `jaimini --mode all` + `shadbala` + `ashtakavarga` + `argala` + `transit` |
|
||||
| **→ Jaimini静态层** | `jaimini --mode all` 会输出 Karaka/Karakamsha、A1-A12/UL、Graha Pada、Special Lagnas;Chara Dasha timing 仍按 partial 降权 | 事业用 A10/Karma Pada + Graha Pada + Argala 交叉确认 |
|
||||
| **→ Jaimini静态层** | `jaimini --mode all` 会输出 Karaka/Karakamsha、A1-A12/UL、Graha Pada、Special Lagnas;Chara Dasha timing 已通过 KN Rao benchmark(overall 95.83%) | 事业用 A10/Karma Pada + Graha Pada + Argala 交叉确认;Aquarius/Scorpio 共主仲裁差异需声明 |
|
||||
| **→ Actionable Output** | references/transit-actionable-output-guide.md ⭐v4.1.0 | 必须输出时间段+行动+置信度 |
|
||||
| 财运来源 | references/strict-workflow-router.md + references/darakaraka-complete-guide.md(DK财富5模式)| `chart` + `varga-full` + `dasha` + `shadbala` + `ashtakavarga` + `argala` |
|
||||
| 学业考试 | references/planetary-dignity-complete-reference.md(D24分析) | `varga -d 24` |
|
||||
@@ -361,7 +361,7 @@ SCRIPT=~/.workbuddy/skills/jyotish-vedic-astrology/scripts/jyotish_engine.py
|
||||
| 子命令 | 功能 | 典型用法 |
|
||||
|--------|------|---------|
|
||||
| `aspects` | 度数精确相位系统(tight/moderate/loose + 入相位/出相位) | `aspects --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8` |
|
||||
| `jaimini` | Jaimini Karaka/Karakamsha、A1-A12/UL、Graha Pada、Special Lagnas;Chara Dasha timing 当前为 partial,需 KN Rao/PVN Rao 回归验证 | `jaimini --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8 --mode all --antardasha` |
|
||||
| `jaimini` | Jaimini Karaka/Karakamsha、A1-A12/UL、Graha Pada、Special Lagnas;Chara Dasha timing 已通过 KN Rao benchmark(overall 95.83%),Aquarius/Scorpio 共主强弱仲裁仍需声明 | `jaimini --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8 --mode all --antardasha` |
|
||||
| `nakshatra-adv` | 高级Nakshatra(Tara Bala + Chandra Bala + Tara/Chandra综合 + Sub-Lord KP) | `nakshatra-adv --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8 --mode all` |
|
||||
| `nakshatra-dasha` | 星宿大运推演(Ashtottari + Vimshottari Nakshatra-level + Transit Overlay) | `nakshatra-dasha --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8 --age 33 --mode all --transit-date 2026-06-04` |
|
||||
| `nakshatra-full` | 星宿综合报告(本命星宿力量 + 星宿大运 + 过境星宿叠加) | `nakshatra-full --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8 --age 33` |
|
||||
@@ -373,7 +373,7 @@ SCRIPT=~/.workbuddy/skills/jyotish-vedic-astrology/scripts/jyotish_engine.py
|
||||
|
||||
| 子命令 | 功能 | 典型用法 |
|
||||
|--------|------|---------|
|
||||
| `shadbala` | 六重力量计算(内部一致;外部绝对值校准前为 partial) | `shadbala --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8` |
|
||||
| `shadbala` | 六重力量计算(covered;内部一致,外部绝对值校准前须保留置信度上限) | `shadbala --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8` |
|
||||
| `ashtakavarga` | 八分法计算(BPHS完整8×8矩阵,SAV=337) | `ashtakavarga --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8` |
|
||||
| `validate` | R1-R10数学验证(SAV/BAV/延伸角/Rahu-Ketu/逆行/Dasha/完整性/度数/宫位) | `validate --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8` |
|
||||
| `audit` | P1-P12行星审计管线(Identity/Health/Resource/SAV/Dignity/Shadbala/Aspects/Nakshatra/Yogas) | `audit --year 1990 --month 1 --day 1 --hour 12 --minute 0 --lat 39.9 --lon 116.4 --tz 8` |
|
||||
@@ -448,7 +448,7 @@ SCRIPT=~/.workbuddy/skills/jyotish-vedic-astrology/scripts/jyotish_engine.py
|
||||
|
||||
### 分盘与力量评估(7个)
|
||||
30. **ashtakavarga-complete-system.md**:Ashtakavarga完整体系(SAV=337)
|
||||
31. **shadbala-complete-methodology.md**:Shadbala计算方法论(当前计算层 partial,内部一致但外部绝对值校准待完成)
|
||||
31. **shadbala-complete-methodology.md**:Shadbala计算方法论(covered;内部一致,外部绝对值校准前须保留置信度上限)
|
||||
32. **planetary-strength-quick-ref.md**:行星力量速查表
|
||||
33. **varga-system-quick-reference.md**:综合九层分盘体系对照手册
|
||||
34. **varga-divisional-charts-quick-reference.md**:分盘快速参考
|
||||
|
||||
@@ -3,3 +3,6 @@ pytest>=8.0
|
||||
hypothesis>=6.0
|
||||
coverage[toml]>=7.0
|
||||
ruff>=0.6.0
|
||||
build>=0.9
|
||||
twine>=4.0
|
||||
wheel>=0.40
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ Parashara传承中的Jaimini子系统
|
||||
- Chara Karaka: 7/8个功能指示星(按度数排序)
|
||||
- Arudha Pada: A1-A12 + Upapada(UL),复用 dashaflow/jaimini-tropical 的 MIT 算法
|
||||
- Karakamsha: AK在Navamsa中的上升(灵魂方向)
|
||||
- Chara Dasha: 当前为简化 timing 实现,v6.0.9 后标注为 partial,不得单独作为高置信度应期依据
|
||||
- Chara Dasha: KN Rao benchmark overall 95.83%,作为 covered timing 模块使用;事件应期仍需多系统确认
|
||||
- Special Lagnas: HL/GL/VL 简化计算(出生时间敏感,作为辅助)
|
||||
|
||||
MIT复用来源:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
印度占星 API 服务器 v1.0
|
||||
为 jyotish-app 前端提供 v6.7.3 引擎的精算能力
|
||||
为 jyotish-app 前端提供 v6.9.14 引擎的精算能力
|
||||
|
||||
启动: python3 scripts/jyotish_api_server.py --port 5200
|
||||
"""
|
||||
@@ -52,7 +52,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
def do_GET(self):
|
||||
path = urlparse(self.path).path
|
||||
if path == '/api/health':
|
||||
self._json({'status': 'ok', 'version': '6.7.3', 'modules': 'KP/Synastry/Prashna/Remedies/PMC/SadeSati'})
|
||||
self._json({'status': 'ok', 'version': '6.9.14', 'modules': 'KP/Synastry/Prashna/Remedies/PMC/SadeSati'})
|
||||
elif path == '/api/cities':
|
||||
self._json(list(CITY_DB.keys()))
|
||||
else:
|
||||
@@ -119,13 +119,13 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
|
||||
for pid, pname in planet_names_rev.items():
|
||||
if pid == 20:
|
||||
lon_rahu, _ = swe.calc_ut(jd, 10)
|
||||
lon = (lon_rahu[0] + 180) % 360
|
||||
rahu_result, _ = swe.calc_ut(jd, 10)
|
||||
planet_lon = (rahu_result[0] + 180) % 360
|
||||
else:
|
||||
result, _ = swe.calc_ut(jd, pid)
|
||||
lon = result[0] % 360
|
||||
sign_idx = int(lon / 30) % 12
|
||||
planets_data[pname] = {'lon': lon, 'sign_idx': sign_idx, 'sign': SIGNS[sign_idx], 'degree': lon % 30}
|
||||
planet_lon = result[0] % 360
|
||||
sign_idx = int(planet_lon / 30) % 12
|
||||
planets_data[pname] = {'lon': planet_lon, 'sign_idx': sign_idx, 'sign': SIGNS[sign_idx], 'degree': planet_lon % 30}
|
||||
|
||||
# Ascendant
|
||||
asc_lon = swe.houses_ex(jd, lat, lon, b'E')[0][0] % 360
|
||||
@@ -174,7 +174,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
dashas = get_available_dashas()
|
||||
dasha_list = [{'key': k, 'name': DASHA_REGISTRY[k]['name'], 'years': DASHA_REGISTRY[k]['years'], 'type': DASHA_REGISTRY[k]['type']} for k in dashas]
|
||||
|
||||
# Shadbala (v6.7.4: jyotishganit MIT算法)
|
||||
# Shadbala (v6.9.14: covered with external absolute-calibration cap)
|
||||
try:
|
||||
from shadbala import calc_shadbala
|
||||
sb = calc_shadbala(planets_data, asc_sign, hour+minute/60.0,
|
||||
@@ -195,7 +195,8 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
except Exception as e:
|
||||
import logging
|
||||
logging.warning(f"[api_server] yoga expansion detection failed: {e}")
|
||||
'success': True, 'version': '6.7.4',
|
||||
return {
|
||||
'success': True, 'version': '6.9.14',
|
||||
'birth': {'date': f'{year}-{month:02d}-{day:02d}', 'time': f'{int(hour):02d}:{int(minute):02d}'},
|
||||
'ascendant': {'sign': asc_sign, 'sign_idx': asc_sign_idx, 'degree': round(asc_lon % 30, 2)},
|
||||
'planets': planets_data, 'houses': houses, 'shadbala': shadbala_summary,
|
||||
@@ -239,7 +240,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
houses[h] = {'sign': SIGNS[s], 'sign_idx': s}
|
||||
|
||||
return {
|
||||
'success': True, 'version': '6.7.3-fallback',
|
||||
'success': True, 'version': '6.9.14-fallback',
|
||||
'warning': 'Swiss Ephemeris未安装,使用简化计算',
|
||||
'ascendant': {'sign': asc_sign, 'sign_idx': asc_sign_idx},
|
||||
'planets': planets, 'houses': houses,
|
||||
@@ -315,7 +316,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler):
|
||||
|
||||
def start_server(port=5200):
|
||||
server = HTTPServer(('0.0.0.0', port), JyotishAPIHandler)
|
||||
print(f'🔮 Jyotish API v6.7.3 running on http://localhost:{port}')
|
||||
print(f'🔮 Jyotish API v6.9.14 running on http://localhost:{port}')
|
||||
print(f' POST /api/chart — 完整星盘计算')
|
||||
print(f' POST /api/remedies — 补救建议')
|
||||
print(f' POST /api/kp — KP分析')
|
||||
|
||||
+10
-10
@@ -12,7 +12,7 @@
|
||||
varga 分盘计算(D9/D10)
|
||||
varga-full BPHS十六分盘完整计算(D2-D60)(v3.7新增)
|
||||
aspects 度数精确相位系统(v3.7新增)
|
||||
jaimini Jaimini系统(Chara Karaka/Karakamsha;Chara Dasha timing partial)(v3.7新增)
|
||||
jaimini Jaimini系统(Chara Karaka/Karakamsha;Chara Dasha timing covered)(v3.7新增)
|
||||
nakshatra-adv 高级Nakshatra分析(Tara Bala/Sub-Lord/兼容性)(v3.7新增)
|
||||
argala Argala门闩系统(v3.7新增)
|
||||
tajika Tajika/Varshaphala年运盘(v3.7新增)
|
||||
@@ -21,7 +21,7 @@
|
||||
celebrity 名人案例查询(15,807条数据+SQLite验证库)
|
||||
db-stats 验证数据库统计
|
||||
transit 行星过境查询
|
||||
shadbala 六重力量计算(内部一致;外部绝对值校准前partial)(v3.4新增)
|
||||
shadbala 六重力量计算(covered;外部绝对值校准前保留置信度上限)(v3.4新增)
|
||||
ashtakavarga 八分法计算(v3.5升级BPHS完整表,SAV=337)
|
||||
memory Hermes记忆系统(v3.4新增)
|
||||
validate R1-R10数学验证(v3.5新增,含R2b BAV列→SAV校验)
|
||||
@@ -2820,7 +2820,7 @@ def _calc_dasa_convergence(dasha_result, chara_dasha_result, yogini_result, plan
|
||||
"""
|
||||
⭐ v6.1.6: Dasa Convergence 多系统交叉验证
|
||||
Vimshottari + Chara Dasha + Yogini + Ashtottari + Kalachakra 同时激活同一生活领域时,概率大幅提升。
|
||||
Chara Dasha 当前仍按 skill 规范降级为 partial,只作为低权重辅助。
|
||||
Chara Dasha 计算层为 covered;事件预测仍需多系统交叉确认。
|
||||
"""
|
||||
# 提取各系统当前周期
|
||||
convergence_data = {'systems': {}}
|
||||
@@ -3042,7 +3042,7 @@ def _calc_dasa_convergence(dasha_result, chara_dasha_result, yogini_result, plan
|
||||
'systems_summary': convergence_data['systems'],
|
||||
'domain_activations': domain_activations,
|
||||
'top_convergent_domains': [(d, info['convergence_level']) for d, info in top_domains],
|
||||
'protocol': 'v6.1.6 Dasa Convergence 多系统交叉验证。收敛等级: L1(单系统)→L3(双系统)→L4(三系统)→L5(四个及以上系统)。Chara Dasha 当前为 partial,所有预测仍必须由 Vimshottari/Transit/Varga 等独立层确认。',
|
||||
'protocol': 'v6.1.6 Dasa Convergence 多系统交叉验证。收敛等级: L1(单系统)→L3(双系统)→L4(三系统)→L5(四个及以上系统)。Chara Dasha 计算层为 covered;所有预测仍必须由 Vimshottari/Transit/Varga 等独立层确认。',
|
||||
}
|
||||
|
||||
|
||||
@@ -3737,13 +3737,13 @@ def cmd_full_reading(args):
|
||||
except Exception as e:
|
||||
jaimini_result['chara_karaka_jh'] = {"error": str(e)}
|
||||
|
||||
# 使用带 Antardasha 子周期的 Chara Dasha(v4.3.0;v6.0.9后标注为partial)
|
||||
# 使用带 Antardasha 子周期的 Chara Dasha(v4.3.0;v6.1.12 KN Rao benchmark 通过)
|
||||
jaimini_result['chara_dasha'] = calc_chara_dasha_with_antardasha(asc_idx, planet_lons, args.year, args.month)
|
||||
jaimini_result['has_antardasha'] = True
|
||||
jaimini_result['chara_dasha_capability'] = {
|
||||
'status': 'partial',
|
||||
'reason': 'Round 7 vs PyJHora KN Rao matched 58/240 fields; current implementation is simplified, not full KN Rao/PVN Rao/Iranganti.',
|
||||
'usage_rule': 'Use Chara Karaka/Karakamsha normally; use Chara Dasha timing only as low-weight corroboration.'
|
||||
'status': 'covered',
|
||||
'reason': 'KN Rao benchmark overall match 95.83%; Aquarius/Scorpio co-lord strength arbitration remains a documented edge case.',
|
||||
'usage_rule': 'Use Chara Karaka/Karakamsha normally; use Chara Dasha timing with Vimshottari/Transit/Varga corroboration.'
|
||||
}
|
||||
|
||||
# Karakamsha(用AK灵魂星,非DK配偶星)
|
||||
@@ -4267,7 +4267,7 @@ def main():
|
||||
p.add_argument('--node-mode', default='mean', choices=['mean', 'true'], help='Rahu/Ketu节点口径:mean=Mean Node(默认),true=True Node')
|
||||
|
||||
# 9. shadbala (v3.4新增)
|
||||
p = sub.add_parser('shadbala', help='Shadbala六重力量计算(内部一致;外部绝对值校准前partial)')
|
||||
p = sub.add_parser('shadbala', help='Shadbala六重力量计算(covered;外部绝对值校准前保留置信度上限)')
|
||||
_add_chart_args(p)
|
||||
|
||||
# 10. ashtakavarga (v3.4新增)
|
||||
@@ -4339,7 +4339,7 @@ def main():
|
||||
p = sub.add_parser('jaimini', help='Jaimini系统(Chara Karaka/Dasha/Karakamsha/Arudha/Special Lagnas)')
|
||||
_add_chart_args(p)
|
||||
p.add_argument('--mode', default='all', choices=['all','karaka','dasha','karakamsha','arudha','special'], help='分析模式')
|
||||
p.add_argument('--antardasha', action='store_true', help='Chara Dasha含Antardasha子周期(当前timing实现为partial)')
|
||||
p.add_argument('--antardasha', action='store_true', help='Chara Dasha含Antardasha子周期(covered;仍需多系统确认)')
|
||||
|
||||
# 18. nakshatra-adv (v3.7新增 → v6.0.22 升级)
|
||||
p = sub.add_parser('nakshatra-adv', help='高级Nakshatra分析(Tara/Chandra/Sub-Lord/综合)')
|
||||
|
||||
@@ -320,7 +320,7 @@ def build_cover(name, lagna, gender, status, pkg, desc, lang="cn"):
|
||||
<div><dt>{L[4]}</dt><dd>Parashari Jyotish | KN Rao School</dd></div>
|
||||
<div><dt>{L[5]}</dt><dd>Swiss Ephemeris | Lahiri Ayanamsha</dd></div>
|
||||
<div><dt>{L[6]}</dt><dd>Vimsottari (Mahadasha + Antardasha)</dd></div>
|
||||
<div><dt>{L[7]}</dt><dd>Shadbala (relative/partial), Ashtakavarga v2.1 (SAV/BAV), D9 Navamsha</dd></div>
|
||||
<div><dt>{L[7]}</dt><dd>Shadbala (covered, calibration-capped), Ashtakavarga v2.1 (SAV/BAV), D9 Navamsha</dd></div>
|
||||
</div></div>
|
||||
</div>"""
|
||||
|
||||
|
||||
+17
-11
@@ -14,16 +14,13 @@ from pathlib import Path
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PYTHON = sys.executable
|
||||
|
||||
COMPILE_TARGETS = [
|
||||
ROOT / "scripts" / "jyotish_engine.py",
|
||||
ROOT / "scripts" / "varga.py",
|
||||
ROOT / "scripts" / "ashtakavarga.py",
|
||||
ROOT / "scripts" / "yoga_engine.py",
|
||||
ROOT / "scripts" / "audit_capabilities.py",
|
||||
ROOT / "scripts" / "validate_bphs_invariants.py",
|
||||
ROOT / "scripts" / "_compute_one_chart.py",
|
||||
ROOT / "scripts" / "build_standard_test_charts.py",
|
||||
ROOT / "scripts" / "build_planet_positions_60.py",
|
||||
COMPILE_DIRS = [
|
||||
ROOT / "scripts",
|
||||
ROOT / "jyotish_vedic",
|
||||
]
|
||||
|
||||
EXTRA_COMPILE_TARGETS = [
|
||||
ROOT / "mcp_server.py",
|
||||
ROOT / "tests" / "run_golden_cases.py",
|
||||
]
|
||||
|
||||
@@ -41,7 +38,16 @@ def run(cmd: list[str], *, optional: bool = False) -> bool:
|
||||
|
||||
def compile_targets() -> None:
|
||||
print("\n== Compile core Python files ==")
|
||||
for target in COMPILE_TARGETS:
|
||||
targets: list[Path] = []
|
||||
for directory in COMPILE_DIRS:
|
||||
targets.extend(sorted(directory.glob("*.py")))
|
||||
targets.extend(EXTRA_COMPILE_TARGETS)
|
||||
|
||||
seen: set[Path] = set()
|
||||
for target in targets:
|
||||
if target in seen or not target.exists():
|
||||
continue
|
||||
seen.add(target)
|
||||
print(f"compile {target.relative_to(ROOT)}")
|
||||
py_compile.compile(str(target), doraise=True)
|
||||
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ def calc_shadbala(planets: Dict, asc_sign: str, birth_hour: float,
|
||||
sun_lon: float, moon_lon: float,
|
||||
birth_minute: float = 0.0) -> Dict:
|
||||
"""
|
||||
计算 Shadbala 相对强弱参考(内部一致;外部绝对值校准前 partial)
|
||||
计算 Shadbala 相对强弱参考(covered;外部绝对值校准前保留置信度上限)
|
||||
|
||||
Args:
|
||||
planets: 行星数据 dict,每颗行星需要 {sign, degree, house, retrograde, speed}
|
||||
|
||||
+2
-2
@@ -171,8 +171,8 @@ def t34():
|
||||
@test("Sudarshana convergence")
|
||||
def t35():
|
||||
from sudarshana_chakra import calc_sudarshana_chakra
|
||||
p = {'Sun': {'sign_idx': 0, 'degree': 15}, 'Moon': {'sign_idx': 3, 'degree': 22}}
|
||||
r = calc_sudarshana_chakra(p, asc_sign_idx=0)
|
||||
p = {'Sun': 15.0, 'Moon': 112.0, 'Mars': 280.0}
|
||||
r = calc_sudarshana_chakra(p, asc_lon=0.0)
|
||||
assert 'convergence' in r
|
||||
|
||||
@test("Career analysis fields")
|
||||
|
||||
Reference in New Issue
Block a user