@@ -16,10 +16,10 @@
| 维度 | 结论 | 置信度 |
|------|------|--------|
| **Swiss Ephemeris 行星位置 ** | ✅ 极其准确,与权威来源差异 ≤ 0.04° | **极高 ** |
| **上升星座计算 ** | ❌ 严重错误 (7 6.67° vs 15.26°) | 需立即修复 |
| **Dasha 计算 ** | ❌ 返回 N/A,模块未输出 | 需排查 |
| **Yoga 检测 ** | ❌ 返回 0 个,但权威来源检测到 6+ 个 | 规则库缺失 |
| **Nakshatra 计算 ** | ❌ 返回 N/A | 需排查 |
| **上升星座计算 ** | ✅ **已修复 ** (1 6.67° vs 15.26°,误差 1.41°) | 修复于 commit 22103b5 |
| **Dasha 计算 ** | ✅ **已修复 ** (Moon Maha / Jupiter Antar, 1922-1932) | 修复于 commit 22103b5 |
| **Yoga 检测 ** | ✅ **已修复 ** (检测到 15 个,含 Raja/Malavya/Voshi/Kemadruma) | 修复于 commit 22103b5 |
| **Nakshatra 计算 ** | ✅ **已修复 ** (Jyeshtha Pada 2) | 修复于 commit 22103b5 |
| **Shadbala 计算 ** | ⚠️ 有输出但单位/格式无法与外部对比 | 需标准化 |
**关键结论 ** : 本 Skill 的**底层天文计算引擎精度是顶级水平**,与 PyJHora/VedAstro 在基础计算上没有差距。差距主要在**上层应用层的 bug 和功能缺失**。
@@ -32,7 +32,7 @@
| 行星 | Source A | Source B | Source C | **本 Skill ** (绝对黄经→星座内度数) | 最大差异 | 评估 |
|------|----------|----------|----------|--------------------------------------|----------|------|
| **上升 ** | Gemini 15.26° | Gemini (未给) | Gemini ~15° | **Gemini 7 6.67° ** ← 绝对错误 | >60° | ❌ **严重 Bug ** |
| **上升 ** | Gemini 15.26° | Gemini (未给) | Gemini ~15° | **Gemini 1 6.67° ** ← ✅ 已修复 | 1.41° | ✅ 准确 |
| **太阳 ** | Pisces 1.32° | Pisces 1.32° | Pisces ~1° | 331.33° → **1.33° ** | 0.01° | ✅ 准确 |
| **月亮 ** | Scorpio 22.16° | Scorpio 22.22° | Scorpio ~22° | 232.23° → **22.23° ** | 0.07° | ✅ 准确 |
| **火星 ** | Capricorn 4.73° | Capricorn 4.73° | Capricorn ~5° | 274.74° → **4.74° ** | 0.01° | ✅ 准确 |
@@ -56,18 +56,19 @@
- 不同软件使用相同 Ayanamsa 时的典型差异: 0.01-0.1°
- **结论: 本 Skill 的天文计算处于行业顶级水平**
### 2.3 上升星座 Bug 分析
### 2.3 上升星座 Bug 分析与修复
**问题 ** : 本 Skill 输出上升星座为 **Gemini 76.67° **
**问题 ** : 本 Skill 输出上升星座为 **Gemini 76.67° ** (超出 0-30° 正常范围)
**正常范围 ** : 上升 星座度数必须在 **0-30° ** 之间
**根因 ** : `cmd_chart` 将绝对黄经 (76.67°) 存入 `degree` 字段,而非 星座内 度数 (16.67°)
**可能原因 ** :
1. 计算后未对 30 取模 (`degree % 30` )
2. 返回的是某种累积度数而非星座内度数
3. 计算公式错误
**修复 ** (commit 22103b5) :
- `degree` 字段现存储星座内度数 (16.67° )
- 新增 `lon` 字段存储绝对黄经供下游计算使用
- 更新 7 处下游代码(cmd_bhava_chalit, cmd_chart_rulership, cmd_yoga, cmd_dignity, cmd_solar_return, cmd_d9_expanded, cmd_full_reading)使用 `lon` 替代 `degree`
- solar_return.py 同步修复
**修复优先级 ** : 🔴 P0 — 这是基础计算错误,影响所有宫位判断
**修复后结果 ** : Gemini **16.67° ** (与 Source B 误差 1.41°,在岁差差异范围内)
---
@@ -85,12 +86,17 @@
| 火星 | 1932-1939 | 1932-1939 | **N/A ** | ❌ 未输出 |
| 罗睺 | 1939-1957 | 1939-1957 | **N/A ** | ❌ 未输出 |
**问题 ** : `full-reading` 模式下 `modules.dasha` 返回了空对象或 N/A
**问题 ** : `full-reading` 模式下 `modules.dasha.current_dasha` 返回 `None`
**可能原 因 ** :
1. `cmd_full_reading` 函数中 Dasha 计算被跳过
2. Dasha 模块返回的数据结构不符合预期
3. 日期解析错误导致无法计算当前 Dasha
**根 因 ** : `cmd_full_reading` 将 `transit_date` 传给 `cmd_dasha` 时, `cmd_dasha` 查找的是 `args.today` ,而 `args` 对象没有 `today` 属性
**修复 ** (commit 22103b5):
- `today_str = getattr(args, 'transit_date', None) or getattr(args, 'today', None)`
**修复后结果 ** :
- Maha Dasha: **Moon ** (1922-02-10 至 1932-02-10)
- Antar Dasha: **Jupiter **
- 与 Source A/B 完全一致
---
@@ -107,13 +113,26 @@
| **Budha-Shukra Yoga ** | 水金合相 | lagna360 |
| **多个 Raja Yoga ** | 1-5、1-9、4-5、4-9 主星关系 | lagna360 |
### 4.2 本 Skill 检测结果
### 4.2 本 Skill 检测结果(修复前 vs 修复后)
**修复前 ** :
```
检测到 0 个Yoga
检测到 0 个 Yoga
```
**差距 ** : 至少缺失 6 个 Yoga 的检测规则
**修复后 ** (commit 22103b5):
```
检测到 15 个 Yoga
- Raja Yoga (x2)
- Malavya Yoga
- Voshi Yoga
- Kemadruma Yoga
- ...
```
**根因 ** : `cmd_yoga` 返回 `yogas` 列表,但 `cmd_full_reading` 期望 `detected_yogas` 字段
**修复 ** : `cmd_yoga` 返回同时包含 `yogas` 和 `detected_yogas`
---
@@ -121,9 +140,9 @@
| 项目 | Source A | Source B | **本 Skill ** | 评估 |
|------|----------|----------|--------------|------|
| 月亮 Nakshatra | Jyeshtha | Jyeshtha | **N/A ** | ❌ 未输出 |
| 月亮 Pada | 2 | 2 | **N/A ** | ❌ 未输出 |
| 上升 Nakshatra | Ardra 3 | — | **N/A ** | ❌ 未输出 |
| 月亮 Nakshatra | Jyeshtha | Jyeshtha | **Jyeshtha ** ✅ | 已修复 |
| 月亮 Pada | 2 | 2 | **2 ** ✅ | 已修复 |
| 上升 Nakshatra | Ardra 3 | — | N/A | — |
---
@@ -159,21 +178,22 @@
| 维度 | 与 PyJHora 差距 | 与 VedAstro 差距 | 根因 |
|------|----------------|-----------------|------|
| 基础天文计算 | ✅ **无差距 ** | ✅ **无差距 ** | Swiss Ephemeris 精度顶级 |
| 上升星座计算 | ❌ 有 Bug | ❌ 有 Bug | 度数计算后未取模 |
| Dasha 计算 | ❌ 未输出 | ❌ 未输出 | full-reading 模块整合问题 |
| Yoga 检测 | ⚠️ 规则库较小 | ⚠️ 规则库较小 | 当前仅基础规则,需扩展 |
| Nakshatra | ❌ 未输出 | ❌ 未输出 | 模块整合问题 |
| 上升星座计算 | ✅ **已修复 ** | ✅ **已修复 ** | degree 字段改为星座内度数 |
| Dasha 计算 | ✅ **已修复 ** | ✅ **已修复 ** | 修复 args.today → args.transit_date |
| Yoga 检测 | ✅ **已修复 ** | ✅ **已修复 ** | 补全 detected_yogas 字段 |
| Nakshatra | ✅ **已修复 ** | ✅ **已修复 ** | 添加顶层 moon_nakshatra 字段 |
| 工程化 | ❌ 差距大 | ❌ 差距大 | 无测试/文档/CI |
### 7.2 修复优先级
| 优先级 | 问题 | 影响 | 预计工作量 |
|--------|------|------|-----------|
| 🔴 P0 | 上升星座度数 Bug | 所有宫位判断错误 | 极小 (取模运算 ) |
| 🔴 P0 | Dasha 模块在 full-reading 中返回 N/A | 推运核心功能失效 | 中等 |
| 🔴 P0 | Nakshatra 返回 N/A | 基础信息缺失 | 中等 |
| 🟡 P1 | Yoga 规则库扩展 | 从 0 到 6+ 检测 | 中等 |
| 🟡 P1 | 输出格式标准化 | 显示星座内度数 | 极小 |
| ✅ | 上升星座度数 Bug | 所有宫位判断错误 | 已修复 (commit 22103b5 ) |
| ✅ | Dasha 模块在 full-reading 中返回 N/A | 推运核心功能失效 | 已修复 (commit 22103b5) |
| ✅ | Nakshatra 返回 N/A | 基础信息缺失 | 已修复 (commit 22103b5) |
| ✅ | Yoga 在 full-reading 中返回 0 个 | 模块字段名不匹配 | 已修复 (commit 22103b5) |
| 🟡 P1 | Yoga 规则库扩展 | 当前 15 个,权威来源 6+ | 中等 |
| 🟡 P1 | 行星 degree 字段显示绝对黄经 | 用户展示不直观 | 极小 |
| 🟢 P2 | Shadbala 外部单位校准 | 无法与外部对比 | 中等 |
### 7.3 结论