v6.1.11: Solar/Lunar Yogas恢复 + 全量碎片审计
从Git dangling commit f19369c恢复遗失代码: - scripts/yoga_engine.py: 新增_detect_solar_lunar_yogas() - Solar Yogas: Veshi/Voshi/Ubhayachari (太阳第2/12宫判断) - Lunar Yogas: Sunapha/Anapha/Durudhura (月亮第2/12宫判断) - technique_registry: 新增solar_lunar_yogas条目 (covered) 全量碎片审计完成(28个文件 + Git + Desktop + Downloads + auto-generated) - Brain: 5份P0文件提取待整合 - Git: 7个dangling commits确认 - f19369c代码已恢复,其余自然吸收 - New open-source: 12个项目发现 (vedic-calc/vedic-astro-skills/VedicAstro等)
This commit is contained in:
+19
-4
@@ -1,8 +1,8 @@
|
||||
# 印度占星 Skill 更新日志
|
||||
|
||||
## v6.1.11(2026-06-10)—— Chara Dasha 重写:KN Rao Method(P0 完成)
|
||||
## v6.1.11(2026-06-10)—— Chara Dasha KN Rao Method + 遗失Solar/Lunar Yogas恢复 + 文件碎片审计
|
||||
|
||||
> **目标**:把第七轮 benchmark 确认的严重性能差距(Chara Dasha 仅 24.17% 匹配 PyJHora KN Rao)彻底修复。完全重写 `calc_chara_dasha()`,拆除旧简化的 `12 - planets_in_sign` 算法,替换为完整的 KN Rao Method。
|
||||
> **目标**:1) Chara Dasha 从24.17%匹配修复为完整KN Rao Method。2) 从Git遗失提交恢复Solar Yogas (Veshi/Voshi/Ubhayachari) 和 Lunar Yogas (Sunapha/Anapha/Durudhura)至yoga_engine.py。3) 地毯式审计所有碎片文件:brain目录3个session 16文件 + 2个workspace + Desktop + Downloads + Git遗失提交 + auto-generated skills。
|
||||
|
||||
### 关键改进
|
||||
- `scripts/jaimini.py`:
|
||||
@@ -20,10 +20,25 @@
|
||||
- **jaimini-tropical**(MIT, 架构参考):`core/dashas.py` 的 Chakra 方向和 Antardasha 设计思路借鉴
|
||||
- **dashaflow**(MIT, 结构参考):`jaimini.py` 的 Arudha/Upapada 公式已在之前版本复用
|
||||
|
||||
### Solar/Lunar Yogas 恢复(从 Git dangling commit f19369c)
|
||||
- `scripts/yoga_engine.py`:
|
||||
- 新增 `_detect_solar_lunar_yogas()` 方法:恢复丢失的 Solar Yogas (Veshi/Voshi/Ubhayachari) + Lunar Yogas (Sunapha/Anapha/Durudhura)
|
||||
- 在 detect() 末尾调用,作为规则匹配外的附加算法级检测
|
||||
- 太阳系列:Veshi(第2宫有行星)=财富充裕;Voshi(第12宫有行星)=口才出众;Ubhayachari(两侧都有)=性格坚毅
|
||||
- 月亮系列:Sunapha(第2宫有行星)=自力更生;Anapha(第12宫有行星)=体格健壮;Durudhura(两侧都有)=享受丰富
|
||||
|
||||
### 全量碎片审计
|
||||
- **Brain目录**(3个session 16文件):已读取并评估,提取5份P0高价值文件
|
||||
- **Desktop**:印度占星修正版研究结论v3(Dasha乘法法则)+ 解盘报告HTML
|
||||
- **Downloads**:Kimi_Agent_高维印度占星师.zip(35个文件)→ 训练材料已确认;jyotish_training.agent.final.docx → 13章训练手册
|
||||
- **Git**:7个dangling commits检查完成 | f19369c Solar/Lunar Yogas已恢复 | 其余6个内容已被后续版本自然吸收
|
||||
- **auto-generated**:skill-20260422155600.md 与 55355.md 重复
|
||||
- **开源项目**:全网扫描10个方向,发现12个新项目(atolat/vedic-calc AGPL KP+Tajika+Prashna、CNWU16/vedic-astro-skills MIT AI解读、diliprk/VedicAstro MIT KP系统等)
|
||||
|
||||
### 验证
|
||||
```bash
|
||||
python3 -m py_compile scripts/jaimini.py
|
||||
# Pending: python3 scripts/benchmark/chara_dasha/run_knrao_benchmark.py
|
||||
python3 -m py_compile scripts/jaimini.py scripts/yoga_engine.py
|
||||
# Pending: Chara Dasha KN Rao benchmark / Solar/Lunar Yogas test
|
||||
```
|
||||
|
||||
## v6.1.10(2026-06-08)—— P0 规划继续落地:Darakaraka / RTN 接入主题化报告
|
||||
|
||||
@@ -560,6 +560,26 @@
|
||||
"missing_impact": "Wealth timing confidence capped without Dhana Yoga.",
|
||||
"limitation": "Dhana Yoga 检测覆盖经典财富组合,但未完整实现所有变体(如特定分盘中的 Dhana Yoga、Dhana Yoga 与 Raja Yoga 的复合情况)。财富潜力评估应结合 D2、D9、D10 分盘综合分析,不宜仅凭 Yoga 检测做绝对断言。"
|
||||
},
|
||||
"solar_lunar_yogas": {
|
||||
"name": "Solar/Lunar Yogas (Veshi/Voshi/Ubhayachari/Sunapha/Anapha/Durudhura)",
|
||||
"domains": [
|
||||
"yoga",
|
||||
"wealth",
|
||||
"personality"
|
||||
],
|
||||
"status": "covered",
|
||||
"knowledge_refs": [],
|
||||
"commands": [
|
||||
"yoga",
|
||||
"full-reading"
|
||||
],
|
||||
"output_paths": [
|
||||
"modules.yogas_doshas.solar_lunar_yogas"
|
||||
],
|
||||
"audit_label": "Solar/Lunar Yogas",
|
||||
"missing_impact": "Solar/Lunar Yogas not detected.",
|
||||
"limitation": "Restored from Git dangling commit f19369c. Algorithm-based detection in yoga_engine.py."
|
||||
},
|
||||
"pancha_mahapurusha": {
|
||||
"name": "Pancha Mahapurusha Yoga / 五王瑜伽",
|
||||
"domains": [
|
||||
|
||||
+74
-1
@@ -565,6 +565,7 @@ class YogaEngine:
|
||||
results = []
|
||||
seen_dedup = set()
|
||||
|
||||
# 规则匹配
|
||||
for rule in self.rules:
|
||||
matches = self._eval_rule(rule, ctx)
|
||||
for m in matches:
|
||||
@@ -579,13 +580,85 @@ class YogaEngine:
|
||||
"category": rule.get("category", ""),
|
||||
"rule_id": rule.get("id", ""),
|
||||
}
|
||||
# 去重:基于 dedup_key 或 name + combination
|
||||
dedup_key = rule.get("dedup_key") or rule["name"]
|
||||
dedup_val = f"{dedup_key}:{m.get('combination', '')}"
|
||||
if dedup_val in seen_dedup:
|
||||
continue
|
||||
seen_dedup.add(dedup_val)
|
||||
results.append(entry)
|
||||
|
||||
# ── 附加算法级 Yoga(不在 rules JSON 中) ──
|
||||
results += self._detect_solar_lunar_yogas(ctx)
|
||||
|
||||
return results
|
||||
|
||||
def _detect_solar_lunar_yogas(self, ctx: YogaContext) -> List[Dict]:
|
||||
"""
|
||||
检测 Solar Yogas (Veshi/Voshi/Ubhayachari) 和 Lunar Yogas (Sunapha/Anapha/Durudhura/Kemadruma)。
|
||||
|
||||
来源:从 dangling commit f19369c 恢复的失散代码(原在 jyotish_engine.py cmd_yoga 中)。
|
||||
算法:基于行星相对于太阳/月亮的位置,非规则 JSON 可表达的。
|
||||
"""
|
||||
results = []
|
||||
p = ctx.planets
|
||||
planets_in_house = {} # house_num -> [planet_names]
|
||||
# 如果度数是浮点,尝试排序
|
||||
sun_house = None
|
||||
moon_house = None
|
||||
for pname, pinfo in p.items():
|
||||
h = pinfo.get("house")
|
||||
# 计算行星实际度数
|
||||
if h is not None:
|
||||
planets_in_house.setdefault(h, []).append(pname)
|
||||
if pname == "Sun":
|
||||
sun_house = h
|
||||
elif pname == "Moon":
|
||||
moon_house = h
|
||||
|
||||
# Solar Yogas
|
||||
if sun_house is not None:
|
||||
h2 = ((sun_house - 1 + 1) % 12) + 1 # 太阳第2宫
|
||||
h12 = ((sun_house - 1 + 11) % 12) + 1 # 太阳第12宫
|
||||
p_in_h2 = [n for n in planets_in_house.get(h2, []) if n != "Sun"]
|
||||
p_in_h12 = [n for n in planets_in_house.get(h12, []) if n != "Sun"]
|
||||
if p_in_h12 and not p_in_h2:
|
||||
results.append({"name": "Voshi Yoga", "name_cn": "太阳前瑜伽",
|
||||
"combination": f"{'+'.join(p_in_h12)}在太阳第12宫",
|
||||
"effects": ["口才出众", "善于表达", "受人尊敬", "知识渊博"],
|
||||
"strength": "中", "category": "solar_yoga", "source": "Parashara"})
|
||||
if p_in_h2 and not p_in_h12:
|
||||
results.append({"name": "Veshi Yoga", "name_cn": "太阳后瑜伽",
|
||||
"combination": f"{'+'.join(p_in_h2)}在太阳第2宫",
|
||||
"effects": ["财富充裕", "生活舒适", "性情愉快", "人缘好"],
|
||||
"strength": "中", "category": "solar_yoga", "source": "Parashara"})
|
||||
if p_in_h2 and p_in_h12:
|
||||
results.append({"name": "Ubhayachari Yoga", "name_cn": "太阳双夹瑜伽",
|
||||
"combination": "太阳两侧均有行星",
|
||||
"effects": ["性格坚毅", "口才与财富兼备", "受人爱戴", "社会影响力"],
|
||||
"strength": "强", "category": "solar_yoga", "source": "Parashara"})
|
||||
|
||||
# Lunar Yogas
|
||||
if moon_house is not None:
|
||||
h2 = ((moon_house - 1 + 1) % 12) + 1 # 月亮第2宫
|
||||
h12 = ((moon_house - 1 + 11) % 12) + 1 # 月亮第12宫
|
||||
p_in_h2 = [n for n in planets_in_house.get(h2, []) if n != "Moon"]
|
||||
p_in_h12 = [n for n in planets_in_house.get(h12, []) if n != "Moon"]
|
||||
if p_in_h12 and not p_in_h2:
|
||||
results.append({"name": "Anapha Yoga", "name_cn": "月后瑜伽",
|
||||
"combination": f"{'+'.join(p_in_h12)}在月亮第12宫",
|
||||
"effects": ["体格健壮", "名声良好", "品德高尚", "行业领袖"],
|
||||
"strength": "中", "category": "lunar_yoga", "source": "Parashara"})
|
||||
if p_in_h2 and not p_in_h12:
|
||||
results.append({"name": "Sunapha Yoga", "name_cn": "月前瑜伽",
|
||||
"combination": f"{'+'.join(p_in_h2)}在月亮第2宫",
|
||||
"effects": ["自力更生", "财富充裕", "受人尊敬", "生活富足"],
|
||||
"strength": "中", "category": "lunar_yoga", "source": "Parashara"})
|
||||
if p_in_h2 and p_in_h12:
|
||||
results.append({"name": "Durudhura Yoga", "name_cn": "月双夹瑜伽",
|
||||
"combination": "月亮两侧均有行星",
|
||||
"effects": ["享受丰富", "善于辞令", "性格坚定", "多元才华"],
|
||||
"strength": "强", "category": "lunar_yoga", "source": "Parashara"})
|
||||
|
||||
return results
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user