v3.7.1: 全自动综合解盘 + 三条入口路径路由
- 新增 full-reading 子命令:一条命令串起13个模块(0.01秒出结果) - 工作流升级v3.0:三条路径自动路由 - 路径A:精准出生信息 → full-reading 全自动计算 - 路径B:PDF/文字星盘 → 提取数据直接推算 - 路径C:时间不明确 → 互动式出生时间矫正 - SKILL.md更新:22个子命令 + 三条路径说明
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: jyotish-vedic-astrology
|
||||
version: 3.7.0
|
||||
version: 3.7.1
|
||||
description: 印度占星(Jyotish)专业解盘与推运系统。核心能力:PDF星盘输入→严谨解盘→精确推运应期输出。覆盖行星配置、Yoga格局、Nakshatra解读、宫位分析、现代生活场景映射、现代措辞解读、案例对比分析、自动出生时间矫正、常见误判纠错、Dasha+Transit推运、精确预测、PDF星盘读取、Swiss Ephemeris计算引擎、星盘计算、分盘计算、名人案例查询、Shadbala六重力量、Ashtakavarga八分法(BPHS完整表SAV=337)、Hermes记忆系统、事件预测、R1-R10数学验证(含R2b BAV列→SAV列校验)、P1-P12行星审计(含P3仓库耦合+P8年龄状态+冲突仲裁3条规则)、验前事、MD→HTML报告生成(羊皮纸主题)、BPHS十六分盘精确计算(D2-D60)、度数精确相位系统(Drishti)、Jaimini完整系统(Chara Karaka 7/8+Chara Dasha+Karakamsha)、高级Nakshatra分析(Tara Bala+Sub-Lord KP系统)、Argala门闩系统(Virodha反干预)、Tajika年运盘(Muntha+YearLord+Mudda Dasha+Tri-Pataka三旗)、合盘分析(Ashta Koota 36分制+Mangal Dosha+Papasamya+Dasha兼容性)。触发词:印度占星、吠陀占星、Jyotish、解盘、推运、星盘分析、Dasha、Transit、Nakshatra、Yoga、出生时间矫正、吠陀占星、印占、PDF星盘、读取PDF、分析PDF星盘、矫正出生时间、出生时间验证、生时矫正、现代解读、现代措辞、误判纠错、错题本、Varga分盘、全球占星师方法论、三合盘、综合分析、过境分析、Double Transit、Sade Sati、合盘、婚姻匹配、关系分析、Koota、Mangal Dosha、年运盘、Varshaphala、太阳返照、Tajika、星宿速查、综合解盘工作流、应期预测、推运应期、事件时机、什么时候结婚、什么时候升职、什么时候发财、Argala、门闩、行星干预、Dasa收敛、Yogini大运、Chara Dasha、AI解盘、算星盘、排盘、计算星盘、查名人、Shadbala、六重力量、Ashtakavarga、八分法、行星力量、记忆系统、事件预测、验证、校验、审计、验前事、R1-R10、P1-P12、仓库耦合、冲突仲裁、报告生成、HTML报告、精确相位、Drishti、Jaimini、Chara Karaka、Atmakaraka、Darakaraka、Karakamsha、Tara Bala、Sub-Lord、KP系统、Navamsa、D9、D60、Shashtyamsa、十六分盘、门闩分析、Muntha、年主星、三旗系统、合盘评分、Nadi Koota、Gana、Yoni、Papasamya、Dasha兼容。
|
||||
---
|
||||
|
||||
@@ -8,18 +8,27 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
|
||||
|
||||
## ⚠️ 核心定位
|
||||
|
||||
**PDF输入 → 严谨解盘 → 精确推运应期输出**
|
||||
**三种输入 → 严谨解盘 → 精确推运应期输出**
|
||||
|
||||
本Skill是一个**解读引擎**,不负责排盘计算。使命是:根据用户提供的PDF星盘数据,进行准确、严谨的星盘解读和推运应期预测。
|
||||
本Skill支持三种输入方式,AI自动识别并路由:
|
||||
|
||||
**强制工作流**(→ 完整规范见 `references/ai-reading-workflow-prompt.md`):
|
||||
1. 阶段一:PDF/图片输入 → 提取数据 + Quality Gate(→ `references/pdf-chart-reading-guide.md`)
|
||||
2. 阶段二:用户意图识别 → 路由到目标宫位(→ `references/promise-assessment-templates.md`)
|
||||
3. 阶段三:静态分析10步(宫位→承诺→Yoga→**Argala**→逆行→NK→Shadbala→AV→Ketu→分盘)
|
||||
4. 阶段四:动态推运7步(Dasha→**Dasa Convergence轻量三系统**→Transit→Double Transit→Jaimini→KP→Varshaphala)
|
||||
5. 阶段五:应期输出(五层验证法→精确时间窗口,→ `assets/timing-prediction-template.md`)
|
||||
6. 阶段六:补救措施(可选)
|
||||
7. 阶段七:现代措辞包装
|
||||
### 三条入口路径(自动判断,无需用户触发)
|
||||
|
||||
| 路径 | 用户输入 | AI行为 |
|
||||
|------|---------|--------|
|
||||
| **路径A:精准出生信息** | 出生日期+时间+地点 | 直接调用 `full-reading` 引擎全链路计算(13模块一键出) |
|
||||
| **路径B:PDF/文字星盘** | 上传PDF星盘 或 详细的文字星盘描述 | 提取文档中的星象数据(落宫、度数、Dasha等),直接基于文档数据推算 |
|
||||
| **路径C:时间不明确** | "不知道几点出生" / "大概下午" | 启动互动式出生时间矫正(外表体质→事件验证→D9/D10校正)→ 确认后走路径A |
|
||||
|
||||
**强制工作流**(→ 完整规范见 `references/ai-reading-workflow-prompt.md` v3.0):
|
||||
1. **阶段零**:入口路由(路径A/B/C自动判断)
|
||||
2. **阶段一**(仅路径B):PDF/图片输入 → 提取数据 + Quality Gate(→ `references/pdf-chart-reading-guide.md`)
|
||||
3. **阶段二**:用户意图识别 → 路由到目标宫位(无明确意图→综合解盘Level 2)
|
||||
4. **阶段三**:静态分析10步(宫位→承诺→Yoga→Argala→逆行→NK→Shadbala→AV→Ketu→分盘)
|
||||
5. **阶段四**:动态推运7步(Dasha→Dasa Convergence轻量三系统→Transit→Double Transit→Jaimini→KP→Varshaphala)
|
||||
6. **阶段五**:应期输出(五层验证法→精确时间窗口)
|
||||
7. **阶段六**:补救措施(可选)
|
||||
8. **阶段七**:现代措辞包装
|
||||
|
||||
---
|
||||
|
||||
@@ -193,7 +202,7 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力
|
||||
|
||||
### 13. 计算引擎集成(Swiss Ephemeris + 数据库)⭐ v3.4.0
|
||||
|
||||
**统一引擎入口**:`scripts/jyotish_engine.py` v3.7.0(基于 Swiss Ephemeris 天文计算库)
|
||||
**统一引擎入口**:`scripts/jyotish_engine.py` v3.7.1(基于 Swiss Ephemeris 天文计算库)
|
||||
|
||||
**调用方式**:AI 通过 `execute_command` 调用以下子命令(所有输出为 JSON):
|
||||
|
||||
@@ -204,10 +213,11 @@ SCRIPT=~/.workbuddy/skills/jyotish-vedic-astrology/scripts/jyotish_engine.py
|
||||
$PYTHON $SCRIPT <子命令> [参数]
|
||||
```
|
||||
|
||||
**13大子命令** → **21大子命令**(v3.7 升级):
|
||||
**13大子命令** → **22大子命令**(v3.7.1 升级):
|
||||
|
||||
| 子命令 | 功能 | 典型用法 |
|
||||
|--------|------|----------|
|
||||
| **`full-reading`** | **⭐ v3.7.1 全自动综合解盘(一条命令串起13个模块)** | `full-reading --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `chart` | 完整星盘计算(含Ayanamsa修正)+ `--validate` 附加R1-R10验证 | `chart --validate --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `dasha` | Vimshottari大运时间线+小运展开 | `dasha --moon-lon 326.5 --birthdate REDACTED_DATE --today 2026-04-24` |
|
||||
| `yoga` | Yoga格局识别(5种Yoga) | `yoga --ascendant Leo --planets 'Sun:Aries:9,Moon:Aquarius:7,...'` |
|
||||
@@ -216,32 +226,46 @@ $PYTHON $SCRIPT <子命令> [参数]
|
||||
| `celebrity` | 名人案例查询(SQLite + 15,807条CSV) | `celebrity --name Einstein` |
|
||||
| `db-stats` | 验证数据库统计(15,840条+10种技法) | `db-stats` |
|
||||
| `transit` | 行星过境查询(2026-2028) | `transit --year 2026 --month 7` |
|
||||
| `shadbala` | ⭐ 六重力量计算(Sthana/Dig/Kala/Chesta/Naisargika/Drik Bala) | `shadbala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `ashtakavarga` | ⭐ 八分法计算(BPHS完整8×8矩阵,SAV=337) | `ashtakavarga --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `memory` | ⭐ Hermes记忆系统(store/search/context/stats) | `memory --action store --content "..." --tags "chart" --importance 8` |
|
||||
| `validate` | ⭐ R1-R10数学验证(SAV/BAV/延伸角/Rahu-Ketu/逆行/Dasha/完整性/度数/宫位) | `validate --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `audit` | ⭐ P1-P12行星审计管线(Identity/Health/Resource/SAV/Dignity/Shadbala/Aspects/Nakshatra/Yogas) | `audit --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `varga-full` | ⭐ v3.7 BPHS十六分盘精确计算(D2-D60全部16分盘,精确度数输出) | `varga-full --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --divisions D9,D60` |
|
||||
| `aspects` | ⭐ v3.7 度数精确相位系统(tight/moderate/loose + 入相位/出相位) | `aspects --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `jaimini` | ⭐ v3.7 Jaimini完整系统(Chara Karaka 7/8 + Chara Dasha + Karakamsha) | `jaimini --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
|
||||
| `nakshatra-adv` | ⭐ v3.7 高级Nakshatra(Tara Bala + Sub-Lord KP + 兼容性) | `nakshatra-adv --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
|
||||
| `argala` | ⭐ v3.7 Argala门闩系统(主/副Argala + Virodha反干预 + 净评分) | `argala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `tajika` | ⭐ v3.7 Tajika年运盘(Muntha + YearLord + Mudda Dasha + Tri-Pataka) | `tajika --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --age 33` |
|
||||
| `synastry` | ⭐ v3.7 合盘分析(Ashta Koota 36分 + Mangal Dosha + Papasamya) | `synastry --moon1 310.89 --moon2 45.5 --mars1 90.43 --mars2 120.3` |
|
||||
| `shadbala` | 六重力量计算(Sthana/Dig/Kala/Chesta/Naisargika/Drik Bala) | `shadbala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `ashtakavarga` | 八分法计算(BPHS完整8×8矩阵,SAV=337) | `ashtakavarga --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `memory` | Hermes记忆系统(store/search/context/stats) | `memory --action store --content "..." --tags "chart" --importance 8` |
|
||||
| `validate` | R1-R10数学验证(SAV/BAV/延伸角/Rahu-Ketu/逆行/Dasha/完整性/度数/宫位) | `validate --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `audit` | P1-P12行星审计管线(Identity/Health/Resource/SAV/Dignity/Shadbala/Aspects/Nakshatra/Yogas) | `audit --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `varga-full` | v3.7 BPHS十六分盘精确计算(D2-D60全部16分盘,精确度数输出) | `varga-full --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --divisions D9,D60` |
|
||||
| `aspects` | v3.7 度数精确相位系统(tight/moderate/loose + 入相位/出相位) | `aspects --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `jaimini` | v3.7 Jaimini完整系统(Chara Karaka 7/8 + Chara Dasha + Karakamsha) | `jaimini --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
|
||||
| `nakshatra-adv` | v3.7 高级Nakshatra(Tara Bala + Sub-Lord KP + 兼容性) | `nakshatra-adv --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --mode all` |
|
||||
| `argala` | v3.7 Argala门闩系统(主/副Argala + Virodha反干预 + 净评分) | `argala --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8` |
|
||||
| `tajika` | v3.7 Tajika年运盘(Muntha + YearLord + Mudda Dasha + Tri-Pataka) | `tajika --year REDACTED_YEAR --month 4 --day 17 --hour 14 --minute 45 --lat 36.6 --lon 114.5 --tz 8 --age 33` |
|
||||
| `synastry` | v3.7 合盘分析(Ashta Koota 36分 + Mangal Dosha + Papasamya) | `synastry --moon1 310.89 --moon2 45.5 --mars1 90.43 --mars2 120.3` |
|
||||
| `report` | MD→HTML报告生成(羊皮纸主题) | `report ./report_folder --name 一楠 --lagna Leo` |
|
||||
|
||||
**外部数据源**(引擎自动读取):
|
||||
- 验证数据库:`~/WorkBuddy/Claw/vedic_astrology_validation.db`(15,840条案例,10种技法准确率)
|
||||
- 名人CSV:`~/WorkBuddy/Claw/vedastro_data/PersonList-15k.csv`(15,807条AA级数据)
|
||||
- 过境配置:`~/WorkBuddy/Claw/月运过境配置-2026-2028.json`(36个月行星位置)
|
||||
|
||||
**典型工作流**(v3.7 升级):
|
||||
1. 用户给出生信息 → `chart` 计算星盘 → 获取行星位置、宫位、Nakshatra
|
||||
2. 从 chart 结果取月亮经度 → `dasha` 计算当前大运
|
||||
3. 从 chart 结果取行星配置 → `yoga` 识别格局
|
||||
4. `shadbala` 计算六重力量 → 量化行星强度排名 ⭐ v3.4
|
||||
5. `ashtakavarga` 计算八分法 → SAV评分+宫位吉凶 ⭐ v3.4
|
||||
6. `varga-full --divisions D9,D60` 计算精确分盘(含度数+尊严) ⭐ v3.7
|
||||
7. `aspects` 计算精确相位(度数级Drishti) ⭐ v3.7
|
||||
**典型工作流**(v3.7.1 升级):
|
||||
|
||||
### 🟢 路径A:精准出生信息(推荐,一条命令搞定)
|
||||
```bash
|
||||
# 一键全链路计算(13模块自动串行)
|
||||
$PYTHON $SCRIPT full-reading --year YYYY --month MM --day DD --hour HH --minute MM --lat XX.XX --lon XX.XX --tz X
|
||||
# 输出:chart + dasha + yoga + varga_full + aspects + jaimini + nakshatra_adv + argala + tajika + shadbala + ashtakavarga + validation + audit
|
||||
# 完成后直接进入阶段二(意图识别)
|
||||
```
|
||||
|
||||
### 📄 路径B:PDF/文字星盘(用文档数据直接推算)
|
||||
1. 提取PDF/文字中的所有星象数据(行星落宫、度数、Dasha、Shadbala等)
|
||||
2. 数据完整性门 → Pass/Limited/Fail
|
||||
3. 如有出生时间+地点,额外调用 `full-reading` 补充计算v3.7新增模块
|
||||
4. 进入阶段二(意图识别)
|
||||
|
||||
### 🔧 路径C:时间不明确(互动式矫正)
|
||||
1. 收集外表体质+生活事件(3-5轮互动)
|
||||
2. 多候选时间对比验证(Dasha吻合率+Transit吻合率)
|
||||
3. D9/D10精确校正
|
||||
4. 矫正完成后走路径A
|
||||
8. `jaimini --mode all` 计算Chara Karaka + Dasha + Karakamsha ⭐ v3.7
|
||||
9. `nakshatra-adv --mode all` 计算Tara Bala + Sub-Lord ⭐ v3.7
|
||||
10. `argala` 计算门闩干预分析 ⭐ v3.7
|
||||
@@ -524,6 +548,6 @@ $PYTHON $SCRIPT <子命令> [参数]
|
||||
|
||||
---
|
||||
|
||||
**版本**:3.7.0
|
||||
**版本**:3.7.1
|
||||
**创建日期**:2026-04-20
|
||||
**最后更新**:2026-04-25(v3.7.0 新增7大计算模块:BPHS十六分盘精确计算+度数精确相位+Jaimini完整系统+高级Nakshatra分析+Argala门闩+Tajika年运盘+合盘分析,引擎子命令14→21)
|
||||
**最后更新**:2026-04-25(v3.7.1 新增 full-reading 全自动综合解盘子命令 + 三条入口路径路由 + 工作流v3.0;v3.7.0 新增7大计算模块:BPHS十六分盘精确计算+度数精确相位+Jaimini完整系统+高级Nakshatra分析+Argala门闩+Tajika年运盘+合盘分析,引擎子命令21→22)
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# AI解盘工作流Prompt工程(AI Reading Workflow)
|
||||
|
||||
> **适用场景**:AI收到PDF星盘后,如何一步步执行完整的解盘+推运分析
|
||||
> **版本**:v1.0.0 | **创建日期**:2026-04-24
|
||||
> **适用场景**:AI收到出生信息、PDF星盘或文字星盘后,如何一步步执行完整的解盘+推运分析
|
||||
> **版本**:v3.0.0 | **更新日期**:2026-04-25
|
||||
> **优先级**:⭐⭐⭐⭐⭐(AI解盘质量的决定性文件)
|
||||
> **定位**:本文件是AI在收到PDF后的**执行引擎**,将Skill中所有参考资料串联成可执行的工作流
|
||||
> **定位**:本文件是AI解盘的**执行引擎**,将Skill中所有参考资料串联成可执行的工作流
|
||||
> **v3.0重大变更**:三条入口路径明确分流,引擎全自动计算无需用户逐模块触发
|
||||
|
||||
---
|
||||
|
||||
@@ -13,31 +14,120 @@
|
||||
2. **不猜测**:数据缺失时标注"缺失",不编造数据
|
||||
3. **不锚定**:先输出星盘推导,再等用户反馈,不先知道用户生活再"找依据"
|
||||
4. **必标注**:每个结论标注来源系统、置信度、精度边界
|
||||
5. **全自动优先**:引擎有能力自动完成的计算,绝不要求用户手动触发
|
||||
6. **尊重用户数据**:用户提供的PDF/文字星盘数据即为事实来源,优先使用而非重新计算
|
||||
|
||||
---
|
||||
|
||||
## 阶段一:PDF数据提取(→ `pdf-chart-reading-guide.md`)
|
||||
## 🔴 阶段零:入口路由(三条路径)
|
||||
|
||||
### 1.1 执行指令
|
||||
|
||||
收到PDF/图片后,AI必须:
|
||||
### 用户消息到达后,AI立即判断走哪条路径:
|
||||
|
||||
```
|
||||
1. 识别PDF来源软件(JH / Parashara's Light / 其他)
|
||||
2. 按内容类型逐页提取(不依赖页码顺序)
|
||||
3. 填充完整JSON Schema(见pdf-chart-reading-guide.md 第三节)
|
||||
4. 执行数据完整性门(Quality Gate,见第四节)
|
||||
5. 执行交叉校验(见第五节)
|
||||
6. 输出提取报告(见第六节)
|
||||
用户消息到达
|
||||
│
|
||||
├─→ 【路径A】用户提供了精准出生信息(日期+时间+地点)
|
||||
│ → 直接调用 full-reading 引擎全链路计算
|
||||
│ → 跳到阶段二
|
||||
│
|
||||
├─→ 【路径B】用户提供了PDF/图片星盘 或 丰富的文字星盘描述
|
||||
│ → 提取文档中的所有星象数据(落宫、度数、Dasha等)
|
||||
│ → 直接基于提取的数据进行推算分析
|
||||
│ → 跳到阶段二
|
||||
│
|
||||
└─→ 【路径C】用户出生时间不明确 或 仅知道大概时间
|
||||
→ 启动互动式出生时间矫正
|
||||
→ 矫正完成后走路径A
|
||||
```
|
||||
|
||||
### 1.2 输出模板(阶段一必输出)
|
||||
---
|
||||
|
||||
### 路径A:精准出生信息 → full-reading 全自动计算
|
||||
|
||||
**触发条件**:用户提供了明确的出生日期+时间+地点(三者齐全)
|
||||
|
||||
**示例输入**:
|
||||
- "REDACTED_YEAR年4月17日 14:45 REDACTED_PLACE"
|
||||
- "我出生于 1990-08-15 早上6:30 北京"
|
||||
- "April 17, REDACTED_YEAR, 2:45 PM, REDACTED_PLACE, China (36.6N, 114.5E)"
|
||||
|
||||
**执行指令**(一条命令搞定所有计算):
|
||||
|
||||
```bash
|
||||
python3 scripts/jyotish_engine.py full-reading \
|
||||
--year YYYY --month MM --day DD --hour HH --minute MM \
|
||||
--lat XX.XX --lon XX.XX --tz X
|
||||
```
|
||||
|
||||
**此命令自动执行13个计算步骤**:
|
||||
1. chart — 核心星盘(上升、行星位置、宫位)
|
||||
2. dasha — Vimshottari大运时间线
|
||||
3. yoga — Yoga格局识别
|
||||
4. varga_full — BPHS十六分盘(D2-D60)
|
||||
5. aspects — 度数精确相位系统
|
||||
6. jaimini — Chara Karaka + Chara Dasha + Karakamsha
|
||||
7. nakshatra_adv — Tara Bala + Sub-Lord
|
||||
8. argala — Argala门闩系统
|
||||
9. tajika — Tajika年运盘
|
||||
10. shadbala — 六重力量
|
||||
11. ashtakavarga — 八分法
|
||||
12. validation — R1-R10数学验证
|
||||
13. audit — P1-P12行星审计
|
||||
|
||||
**输出结构**:
|
||||
- `chart`:完整星盘数据
|
||||
- `modules`:12个模块各自的结果
|
||||
- `summary`:计算耗时、模块数、错误数
|
||||
- `errors`/`warnings`:异常信息
|
||||
|
||||
**数据质量门**:
|
||||
|
||||
| 字段 | 检查项 | 判定 |
|
||||
|------|--------|------|
|
||||
| `summary.errors` | 是否为空 | 空则继续,非空需评估 |
|
||||
| `summary.modules_computed` | 是否≥10 | ≥10正常,<10说明多模块失败 |
|
||||
| `chart.ascendant` | 是否有上升星座 | 无则计算失败,需排查 |
|
||||
|
||||
**完成后**:直接跳到阶段二(意图识别)
|
||||
|
||||
---
|
||||
|
||||
### 路径B:PDF/文字星盘 → 数据提取 + 直接推算
|
||||
|
||||
**触发条件**:用户上传了PDF星盘、截图,或提供了详细的文字星盘描述
|
||||
|
||||
**示例输入**:
|
||||
- 上传11页JhoroWatch PDF
|
||||
- 上传Parashara's Light截图
|
||||
- 文字描述:"我的上升是狮子座,太阳在白羊座9宫,月亮在水瓶座7宫..."
|
||||
|
||||
**⚠️ 核心原则:用文档的数据,不重新排盘**
|
||||
|
||||
用户提供的PDF/文字星盘中的数据就是**事实来源**。AI不需要从出生时间重新计算星盘,而是直接使用文档中已有的:
|
||||
- 行星落宫落座
|
||||
- Dasha时间线
|
||||
- Shadbala分数
|
||||
- Ashtakavarga点数
|
||||
- Yoga列表
|
||||
- 分盘数据
|
||||
|
||||
**执行步骤**:
|
||||
|
||||
```
|
||||
1. 识别来源(JH / Parashara's Light / 其他软件)
|
||||
2. 逐页/逐段提取所有星象数据
|
||||
3. 填充标准JSON Schema(见下方模板)
|
||||
4. 执行数据完整性门(Quality Gate)
|
||||
5. 如有出生时间+地点,额外调用 full-reading 补充计算
|
||||
6. 输出提取报告
|
||||
```
|
||||
|
||||
**数据提取模板**:
|
||||
|
||||
```markdown
|
||||
## 📋 PDF数据提取报告
|
||||
## 📋 星盘数据提取报告
|
||||
|
||||
**来源**:[JH / PL / 其他] | **页数**:[N]页
|
||||
**完整度**:[XX%] | **分析级别**:[Level 1/2/3]
|
||||
**来源**:[JH / PL / 文字描述] | **完整度**:[XX%]
|
||||
|
||||
### 基本信息
|
||||
- 出生:[YYYY-MM-DD HH:MM] [地点] [性别]
|
||||
@@ -74,14 +164,9 @@
|
||||
|
||||
### Yoga清单
|
||||
- [Yoga1]:[行星]在[X宫]
|
||||
- [Yoga2]:...
|
||||
|
||||
### 数据完整性
|
||||
- ✅ P0全部齐全(N/11)或 ❌ 缺失:[列出]
|
||||
- ⚠️ P1缺失:[列出]
|
||||
```
|
||||
|
||||
### 1.3 质量门判定规则
|
||||
**数据完整性门**:
|
||||
|
||||
| 完整度 | 判定 | 允许的分析 |
|
||||
|--------|------|-----------|
|
||||
@@ -89,7 +174,113 @@
|
||||
| 70-89%(P0大部分) | ⚠️ Limited | Level 2,标注限制 |
|
||||
| <70%(P0缺关键项) | ❌ Fail | Level 1快速概览,要求用户补全 |
|
||||
|
||||
**如果Quality Gate未通过**:停止在阶段一,告知用户缺失哪些数据、为什么影响分析。
|
||||
**补充计算**(条件触发):
|
||||
|
||||
如果PDF中包含了出生日期+时间+地点信息,AI **应当额外调用** `full-reading` 来补充PDF中可能缺失的计算(如精确相位、Argala、Tajika等v3.7新增模块),将引擎计算结果与PDF提取数据合并,以引擎结果为补充、PDF数据为基准。
|
||||
|
||||
**完成后**:直接跳到阶段二(意图识别)
|
||||
|
||||
---
|
||||
|
||||
### 路径C:时间不明确 → 互动式出生时间矫正
|
||||
|
||||
**触发条件**:
|
||||
- 用户说"不知道出生时间" / "大概下午吧" / "不清楚几点"
|
||||
- 用户只知道日期不知道时间
|
||||
- 用户提供的出生证明时间与实际有出入
|
||||
|
||||
**⚠️ 核心理念:不猜时间,通过互动逐步锁定**
|
||||
|
||||
AI不应该凭空假设一个时间,而应该通过结构化互动帮助用户锁定精确时间。
|
||||
|
||||
**矫正流程**(→ `birth-time-rectification-advanced.md`):
|
||||
|
||||
#### C1. 初始信息收集(第一轮互动)
|
||||
|
||||
**AI必须收集的基础信息**(只问一轮,最多5个问题):
|
||||
|
||||
```
|
||||
"为了帮你精准确定出生时间,我需要了解一些信息:
|
||||
|
||||
1. 你目前知道的出生时间范围是什么?(比如'下午2点到5点'、'上午'、'完全不知道')
|
||||
2. 出生地点是哪里?(城市即可)
|
||||
3. 你的体型偏瘦/中等/偏壮?脸型偏圆/长/方?
|
||||
4. 容易出现健康问题的部位是?(比如经常头痛/肠胃不好/腰痛等)
|
||||
5. 有没有明显的胎记或疤痕?在身体什么位置?"
|
||||
```
|
||||
|
||||
#### C2. 外表体质初筛(AI自动分析)
|
||||
|
||||
根据用户回答,确定上升星座范围:
|
||||
- 体型+脸型+健康倾向 → 缩小到2-3个候选上升星座
|
||||
- 胎记/疤痕位置 → 进一步缩小范围
|
||||
- 参照 `birth-time-rectification-advanced.md` 中的外表体质对应表
|
||||
|
||||
#### C3. 生活事件验证(第二轮互动)
|
||||
|
||||
**AI请求用户提供人生重要事件**:
|
||||
|
||||
```
|
||||
"初步判断你的上升可能在[星座A]或[星座B]。
|
||||
为了进一步确认,请告诉我你人生中的一些重要转折事件,
|
||||
大概5-10个就行,包括大概的时间和事件类型。比如:
|
||||
- 搬家、转学、毕业
|
||||
- 工作/事业的重要变化
|
||||
- 开始或结束一段感情
|
||||
- 亲人离世或重病
|
||||
- 获奖或重大成就
|
||||
- 生病或手术"
|
||||
```
|
||||
|
||||
**AI对每个事件做Dasha+Transit验证**:
|
||||
- 用候选时间分别排盘
|
||||
- 检查事件时间点的Dasha周期是否激活相关宫位
|
||||
- 检查Transit是否支持该事件
|
||||
- 计算每个候选时间的吻合率
|
||||
|
||||
#### C4. D9/D10精确校正(第三轮互动,可选)
|
||||
|
||||
如果需要更精确(精确到±5分钟以内):
|
||||
|
||||
```
|
||||
"时间范围已经缩小到[XX:XX-XX:XX]。
|
||||
为了进一步精确,请告诉我:
|
||||
1. 你的感情模式是怎样的?(主动/被动、深刻/轻松、重视精神连接/重视现实基础)
|
||||
2. 你的工作风格是怎样的?(管理型/创意型/研究型/服务型)"
|
||||
```
|
||||
|
||||
- 感情模式 → 判定D9上升 → 缩小时间
|
||||
- 工作风格 → 判定D10上升 → 缩小时间
|
||||
|
||||
#### C5. 矫正结果输出
|
||||
|
||||
```markdown
|
||||
## 🔧 出生时间矫正报告
|
||||
|
||||
### 信息收集
|
||||
- 已知时间范围:[描述]
|
||||
- 外表体质:[描述]
|
||||
- 事件验证:[N]个事件
|
||||
|
||||
### 矫正过程
|
||||
- 上升候选:[星座A] / [星座B] → 判定:[星座X]
|
||||
- Dasha吻合率:[XX%]
|
||||
- Transit吻合率:[XX%]
|
||||
- D9上升判定:[星座](基于感情特质)
|
||||
- D10上升判定:[星座](基于事业特质)
|
||||
|
||||
### 矫正结果
|
||||
- **矫正后出生时间**:[HH:MM]
|
||||
- **置信度**:[高/中/低]([XX%]事件吻合)
|
||||
- **精度范围**:±[X]分钟
|
||||
|
||||
### ⚠️ 声明
|
||||
出生时间矫正是基于事件反向推导的概率性方法。
|
||||
矫正后的时间不能100%保证精确,但基于[X]个事件的验证,
|
||||
吻合率达到[XX%],可作为有效参考。
|
||||
```
|
||||
|
||||
**矫正完成后**:使用矫正后的时间走路径A,调用 `full-reading` 全链路计算。
|
||||
|
||||
---
|
||||
|
||||
@@ -107,17 +298,19 @@
|
||||
| 教育/学业 | 4宫+9宫 | — | §6 |
|
||||
| 出国/迁移 | 9宫+12宫 | — | §7 |
|
||||
| 灵性/修行 | 9宫+12宫 | — | §8 |
|
||||
| 合盘/关系匹配 | 7宫 | `synastry` + `relationship-astrology-guide.md` | §1 |
|
||||
| 综合解盘(全盘) | 全部 | `comprehensive-reading-workflow.md` | 全部 |
|
||||
|
||||
**(承诺模板→ `promise-assessment-templates.md`)**
|
||||
|
||||
### 2.2 用户未明确意图时的默认流程
|
||||
|
||||
如果用户只上传了PDF没有说具体问什么:
|
||||
如果用户没有说具体问什么(比如只给了出生信息或上传了PDF):
|
||||
1. 执行**综合解盘工作流Level 2**(`comprehensive-reading-workflow.md`)
|
||||
2. 先输出10宫位快速扫描
|
||||
3. 识别最强和最弱的领域
|
||||
4. 重点展开当前Dasha激活的领域
|
||||
5. 主动提示用户可以深入询问任何领域
|
||||
|
||||
---
|
||||
|
||||
@@ -140,7 +333,7 @@ Step 3.3 Yoga格局识别
|
||||
→ references/yoga-strength-scoring-system.md
|
||||
|
||||
Step 3.4 Argala检查(目标宫的2/4/5/8/11宫)
|
||||
→ references/argala-complete-guide.md ⭐ 新增
|
||||
→ references/argala-complete-guide.md
|
||||
→ 输出:目标宫是否被"开门"或"锁门"
|
||||
|
||||
Step 3.5 逆行/燃烧/行星战争检查
|
||||
@@ -223,7 +416,7 @@ Step 4.1 Dasha激活评估
|
||||
→ 当前Maha/Antar/Pratyantar与目标领域的关系
|
||||
|
||||
Step 4.2 Dasa Convergence(轻量三系统法)
|
||||
→ references/dasa-convergence-methodology.md §七 ⭐ 升级
|
||||
→ references/dasa-convergence-methodology.md §七
|
||||
→ Vimsottari + Yogini + Chara 三系统交叉验证
|
||||
→ 输出:Convergence等级(Level 0-3)
|
||||
|
||||
@@ -389,19 +582,22 @@ Step 4.7 Varshaphala年运盘确认(如需要)
|
||||
## 快速参考:完整工作流一页纸
|
||||
|
||||
```
|
||||
收到PDF
|
||||
用户消息到达
|
||||
│
|
||||
├─→ 阶段一:数据提取(pdf-chart-reading-guide.md)
|
||||
│ └─→ Quality Gate → Pass/Limited/Fail
|
||||
├─ 路径判断
|
||||
│ ├─→ 【路径A】精准出生信息 → full-reading 全自动计算
|
||||
│ ├─→ 【路径B】PDF/文字星盘 → 提取数据 + 直接推算
|
||||
│ └─→ 【路径C】时间不明确 → 互动矫正 → 走路径A
|
||||
│
|
||||
├─→ 阶段二:意图路由
|
||||
│ └─→ 用户问什么 → 目标宫位 → 对应承诺模板
|
||||
│ (无明确意图 → 综合解盘Level 2)
|
||||
│
|
||||
├─→ 阶段三:静态分析(10步)
|
||||
│ ├─→ 宫位-行星基础
|
||||
│ ├─→ 承诺评估(promise-assessment-templates.md)
|
||||
│ ├─→ 承诺评估
|
||||
│ ├─→ Yoga识别
|
||||
│ ├─→ Argala检查(argala-complete-guide.md)⭐
|
||||
│ ├─→ Argala检查
|
||||
│ ├─→ 逆行/燃烧/战争
|
||||
│ ├─→ Nakshatra深度
|
||||
│ ├─→ Shadbala
|
||||
@@ -411,7 +607,7 @@ Step 4.7 Varshaphala年运盘确认(如需要)
|
||||
│
|
||||
├─→ 阶段四:动态推运(7步)
|
||||
│ ├─→ Dasha激活
|
||||
│ ├─→ Dasa Convergence轻量三系统法 ⭐
|
||||
│ ├─→ Dasa Convergence三系统法
|
||||
│ ├─→ Transit四参考点
|
||||
│ ├─→ Double Transit
|
||||
│ ├─→ Jaimini确认
|
||||
@@ -420,16 +616,14 @@ Step 4.7 Varshaphala年运盘确认(如需要)
|
||||
│
|
||||
├─→ 阶段五:应期输出
|
||||
│ └─→ 严格遵循prediction-output-protocol.md
|
||||
│ 禁用措辞 + 强制标注 + 精度声明
|
||||
│
|
||||
├─→ 阶段六:补救措施(可选)
|
||||
│
|
||||
└─→ 阶段七:现代措辞包装
|
||||
└─→ modern-language-guide.md + misconceptions check
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**版本**:1.0.0
|
||||
**创建日期**:2026-04-24
|
||||
**配套文件**:`pdf-chart-reading-guide.md`(数据提取)、`timing-prediction-template.md`(应期模板)、`prediction-output-protocol.md`(输出规范)、`comprehensive-reading-workflow.md`(综合流程)、`promise-assessment-templates.md`(承诺模板)、`argala-complete-guide.md`(Argala检查)、`dasa-convergence-methodology.md`(Dasa Convergence)
|
||||
**版本**:3.0.0
|
||||
**更新日期**:2026-04-25
|
||||
**配套文件**:`pdf-chart-reading-guide.md`(PDF提取)、`birth-time-rectification-advanced.md`(出生时间矫正)、`timing-prediction-template.md`(应期模板)、`prediction-output-protocol.md`(输出规范)、`comprehensive-reading-workflow.md`(综合流程)、`promise-assessment-templates.md`(承诺模板)、`argala-complete-guide.md`(Argala检查)、`dasa-convergence-methodology.md`(Dasa Convergence)
|
||||
|
||||
+217
-1
@@ -17,6 +17,7 @@
|
||||
argala Argala门闩系统(v3.7新增)
|
||||
tajika Tajika/Varshaphala年运盘(v3.7新增)
|
||||
synastry 合盘分析(Ashta Koota 36分制+Mangal Dosha)(v3.7新增)
|
||||
full-reading 全自动综合解盘(出生信息→全链路计算→完整报告)(v3.7.1新增)
|
||||
celebrity 名人案例查询(15,807条数据+SQLite验证库)
|
||||
db-stats 验证数据库统计
|
||||
transit 行星过境查询
|
||||
@@ -1259,6 +1260,216 @@ def cmd_synastry(args):
|
||||
return calc_synastry(p1, p2)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# 22. 全自动综合解盘 full-reading(v3.7.1新增)
|
||||
# ============================================================================
|
||||
def cmd_full_reading(args):
|
||||
"""
|
||||
用户只需提供出生信息,引擎自动串起全链路分析:
|
||||
chart → dasha → yoga → varga-full → aspects → jaimini → nakshatra-adv
|
||||
→ argala → tajika → shadbala → ashtakavarga → validate → audit
|
||||
→ 综合报告输出
|
||||
"""
|
||||
import time
|
||||
t0 = time.time()
|
||||
|
||||
report = {
|
||||
'version': '3.7.1-full-reading',
|
||||
'birth_info': {
|
||||
'date': f"{args.year}-{args.month:02d}-{args.day:02d}",
|
||||
'time': f"{args.hour:02d}:{args.minute:02d}",
|
||||
'lat': args.lat, 'lon': args.lon,
|
||||
'tz': f"UTC{'+' if args.tz >= 0 else ''}{args.tz}",
|
||||
},
|
||||
'modules': {},
|
||||
'errors': [],
|
||||
'warnings': [],
|
||||
}
|
||||
|
||||
# ── Step 1: 核心星盘 ──
|
||||
chart, asc_idx, jd, ayanamsa = compute_chart_data(
|
||||
args.year, args.month, args.day, args.hour, args.minute,
|
||||
args.lat, args.lon, args.tz)
|
||||
if chart is None:
|
||||
return {"error": "swisseph未安装,无法计算星盘"}
|
||||
|
||||
report['chart'] = chart
|
||||
planets = chart.get('planets', {})
|
||||
asc_deg = chart.get('ascendant', {}).get('degree', 0)
|
||||
asc_sign = chart.get('ascendant', {}).get('sign', 'Unknown')
|
||||
planet_lons = {pn: pd['degree'] for pn, pd in planets.items() if isinstance(pd, dict) and 'degree' in pd}
|
||||
planet_sign_indices = {}
|
||||
for pn, pd in planets.items():
|
||||
if isinstance(pd, dict) and 'sign' in pd:
|
||||
planet_sign_indices[pn] = SIGNS.index(pd['sign']) if pd['sign'] in SIGNS else 0
|
||||
|
||||
# ── Step 2: Vimshottari Dasha ──
|
||||
try:
|
||||
moon_data = planets.get('Moon', {})
|
||||
moon_lon = moon_data.get('degree', 0)
|
||||
nak_idx = int(moon_lon / (360 / 27)) % 27
|
||||
nak_name = NAKSHATRA_LIST[nak_idx][0]
|
||||
nak_lord = NAKSHATRA_LIST[nak_idx][1]
|
||||
pada = int((moon_lon % (360/27)) / (360/108)) + 1
|
||||
|
||||
birthdate = f"{args.year}-{args.month:02d}-{args.day:02d}"
|
||||
today_str = datetime.now().strftime('%Y-%m-%d')
|
||||
dasha_result = cmd_dasha(type('Args', (), {
|
||||
'nakshatra': nak_name, 'pada': pada,
|
||||
'moon_lon': moon_lon, 'birthdate': birthdate, 'today': today_str
|
||||
})())
|
||||
report['modules']['dasha'] = dasha_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"dasha: {e}")
|
||||
|
||||
# ── Step 3: Yoga格局 ──
|
||||
try:
|
||||
yoga_planets = {}
|
||||
for pn, pd in planets.items():
|
||||
if isinstance(pd, dict) and 'sign' in pd and 'house' in pd:
|
||||
yoga_planets[pn] = {'sign': pd['sign'], 'house': pd['house']}
|
||||
yoga_result = cmd_yoga(type('Args', (), {
|
||||
'ascendant': asc_sign,
|
||||
'planets': ','.join([f"{k}:{v['sign']}:{v['house']}" for k, v in yoga_planets.items()])
|
||||
})())
|
||||
report['modules']['yoga'] = yoga_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"yoga: {e}")
|
||||
|
||||
# ── Step 4: BPHS十六分盘 ──
|
||||
try:
|
||||
sys.path.insert(0, SCRIPT_DIR)
|
||||
from varga import calc_all_vargas
|
||||
varga_result = calc_all_vargas(planet_lons, asc_deg, None) # None = 全部分盘
|
||||
report['modules']['varga_full'] = varga_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"varga-full: {e}")
|
||||
|
||||
# ── Step 5: 精确相位 ──
|
||||
try:
|
||||
from aspects import calc_all_aspects
|
||||
aspects_result = calc_all_aspects(planet_lons, asc_deg)
|
||||
report['modules']['aspects'] = aspects_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"aspects: {e}")
|
||||
|
||||
# ── Step 6: Jaimini系统 ──
|
||||
try:
|
||||
from jaimini import calc_chara_karaka_7, calc_chara_karaka_8, calc_chara_dasha, calc_karakamsha
|
||||
from varga import calc_varga
|
||||
|
||||
jaimini_result = {}
|
||||
jaimini_result['chara_karaka_7'] = calc_chara_karaka_7(planet_lons)
|
||||
jaimini_result['chara_karaka_8'] = calc_chara_karaka_8(planet_lons)
|
||||
jaimini_result['chara_dasha'] = calc_chara_dasha(asc_idx, planet_lons, args.year, args.month)
|
||||
|
||||
# Karakamsha
|
||||
ck7 = jaimini_result['chara_karaka_7']
|
||||
dk_name = ck7.get('DK', {}).get('planet', 'Moon')
|
||||
dk_lon = planet_lons.get(dk_name, 0)
|
||||
dk_d9 = calc_varga(dk_lon, 9)
|
||||
jaimini_result['karakamsha'] = calc_karakamsha(
|
||||
dk_d9.get('sign', 'Aries'), dk_d9.get('degree_in_sign', 0))
|
||||
report['modules']['jaimini'] = jaimini_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"jaimini: {e}")
|
||||
|
||||
# ── Step 7: 高级Nakshatra ──
|
||||
try:
|
||||
from nakshatra_advanced import find_nakshatra, calc_all_tara_balas, calc_sub_lord
|
||||
|
||||
nak_result = {'planets': {}}
|
||||
for pn, lon in planet_lons.items():
|
||||
nak_result['planets'][pn] = find_nakshatra(lon)
|
||||
moon_nak_idx = int(planet_lons.get('Moon', 0) / (360/27)) % 27
|
||||
nak_result['tara_bala'] = calc_all_tara_balas(moon_nak_idx, planet_lons)
|
||||
nak_result['sub_lords'] = {pn: calc_sub_lord(lon) for pn, lon in planet_lons.items()}
|
||||
report['modules']['nakshatra_advanced'] = nak_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"nakshatra-adv: {e}")
|
||||
|
||||
# ── Step 8: Argala门闩 ──
|
||||
try:
|
||||
from argala import calc_argala
|
||||
report['modules']['argala'] = calc_argala(planet_sign_indices, asc_idx)
|
||||
except Exception as e:
|
||||
report['errors'].append(f"argala: {e}")
|
||||
|
||||
# ── Step 9: Tajika年运盘(需要年龄) ──
|
||||
age = args.age
|
||||
if age is None:
|
||||
# 自动计算年龄
|
||||
try:
|
||||
birth_date = datetime(args.year, args.month, args.day)
|
||||
age = (datetime.now() - birth_date).days // 365
|
||||
report['warnings'].append(f"未提供年龄,自动计算为 {age} 岁")
|
||||
except:
|
||||
age = None
|
||||
|
||||
if age is not None:
|
||||
try:
|
||||
from tajika import calc_muntha, calc_year_lord, calc_mudda_dasha, calc_tri_pataka
|
||||
asc_si = int(asc_deg / 30) % 12
|
||||
tajika_result = {}
|
||||
tajika_result['muntha'] = calc_muntha(asc_si, age)
|
||||
yl = calc_year_lord(asc_si, age)
|
||||
tajika_result['year_lord'] = yl
|
||||
varsha_lord = yl.get('year_lord', 'Jupiter')
|
||||
tajika_result['mudda_dasha'] = calc_mudda_dasha(asc_si, varsha_lord, args.month)
|
||||
muntha_si = (asc_si + age) % 12
|
||||
tajika_result['tri_pataka'] = calc_tri_pataka(planet_lons, varsha_lord, muntha_si)
|
||||
report['modules']['tajika'] = tajika_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"tajika: {e}")
|
||||
|
||||
# ── Step 10: Shadbala六重力量 ──
|
||||
try:
|
||||
from shadbala import calc_shadbala
|
||||
birth_hour = args.hour + args.minute / 60.0
|
||||
sun_lon = planet_lons.get('Sun', 0)
|
||||
moon_lon = planet_lons.get('Moon', 0)
|
||||
report['modules']['shadbala'] = calc_shadbala(planets, asc_sign, birth_hour, sun_lon, moon_lon)
|
||||
except Exception as e:
|
||||
report['errors'].append(f"shadbala: {e}")
|
||||
|
||||
# ── Step 11: Ashtakavarga八分法 ──
|
||||
asht_data = None
|
||||
try:
|
||||
from ashtakavarga import calc_ashtakavarga
|
||||
asht_data = calc_ashtakavarga(planets, asc_idx)
|
||||
report['modules']['ashtakavarga'] = asht_data
|
||||
except Exception as e:
|
||||
report['errors'].append(f"ashtakavarga: {e}")
|
||||
|
||||
# ── Step 12: R1-R10数学验证 ──
|
||||
try:
|
||||
from validate import validate_chart
|
||||
report['modules']['validation'] = validate_chart(chart, asht_data)
|
||||
except Exception as e:
|
||||
report['errors'].append(f"validate: {e}")
|
||||
|
||||
# ── Step 13: P1-P12行星审计 ──
|
||||
try:
|
||||
audit_result = cmd_audit(args)
|
||||
report['modules']['audit'] = audit_result
|
||||
except Exception as e:
|
||||
report['errors'].append(f"audit: {e}")
|
||||
|
||||
# ── 汇总 ──
|
||||
elapsed = round(time.time() - t0, 2)
|
||||
module_count = len(report['modules'])
|
||||
error_count = len(report['errors'])
|
||||
report['summary'] = {
|
||||
'elapsed_seconds': elapsed,
|
||||
'modules_computed': module_count,
|
||||
'errors': error_count,
|
||||
'status': 'complete' if error_count == 0 else f'{error_count} errors',
|
||||
'next_step': 'AI可直接基于此数据执行阶段二(意图路由)→阶段三(静态分析)→阶段四(动态推运)→阶段五(应期输出)',
|
||||
}
|
||||
|
||||
return report
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# CLI入口
|
||||
# ============================================================================
|
||||
@@ -1388,6 +1599,11 @@ def main():
|
||||
p.add_argument('--gender1', default='M', help='Person1性别')
|
||||
p.add_argument('--gender2', default='F', help='Person2性别')
|
||||
|
||||
# 22. full-reading (v3.7.1新增)
|
||||
p = sub.add_parser('full-reading', help='全自动综合解盘(出生信息→全链路→完整报告)')
|
||||
_add_chart_args(p)
|
||||
p.add_argument('--age', type=int, default=None, help='当前年龄(不提供则自动计算)')
|
||||
|
||||
args = parser.parse_args()
|
||||
if not args.command:
|
||||
parser.print_help(); sys.exit(1)
|
||||
@@ -1398,7 +1614,7 @@ def main():
|
||||
'validate': cmd_validate, 'audit': cmd_audit, 'report': cmd_report,
|
||||
'varga-full': cmd_varga_full, 'aspects': cmd_aspects, 'jaimini': cmd_jaimini,
|
||||
'nakshatra-adv': cmd_nakshatra_adv, 'argala': cmd_argala, 'tajika': cmd_tajika,
|
||||
'synastry': cmd_synastry}
|
||||
'synastry': cmd_synastry, 'full-reading': cmd_full_reading}
|
||||
result = cmds[args.command](args)
|
||||
output_json(result)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user