婚恋评级改成证据档位,配偶星分数不再写成百分制(BUG-1318,上游 f891a2c1)

五档不再写稳定、离婚、再婚或婚前咨询,并写明这是结构指数。公开盘中英文各锁一条。配偶星证据行改成 0 到 1,不乘 100。pytest tests/test_d9_evidence_bands.py 3 通过。

Co-Authored-By: Grok (agent loop)
This commit is contained in:
jesse-ux
2026-10-14 00:48:25 +08:00
co-authored by Grok (agent loop)
parent 99ef1bbd12
commit d32ad7b7b1
4 changed files with 191 additions and 8 deletions
+1 -1
View File
@@ -7551,7 +7551,7 @@ class JyotishAPIHandler(BaseHTTPRequestHandler, VedastroEvidenceMixin, SynastryM
evidence.append({
'label': 'Darakaraka (DK)',
'value': f"{dk_planet} · H{darakaraka.get('dk_house', '-')}",
'note': f"{darakaraka.get('core_profile') or '配偶象征星'};婚姻质量 {darakaraka.get('marriage_quality_score', '-')}/100",
'note': f"{darakaraka.get('core_profile') or '配偶象征星'};婚姻质量指数 {darakaraka.get('marriage_quality_score', '-')}(0到1)",
})
except Exception as exc:
darakaraka = {'error': str(exc), 'dk_planet': dk_planet}
+41 -7
View File
@@ -21,6 +21,23 @@ from typing import Dict, Optional, List
SIGN_CN = ['白羊座','金牛座','双子座','巨蟹座','狮子座','处女座',
'天秤座','天蝎座','射手座','摩羯座','水瓶座','双鱼座']
# D9 结构证据档位(BUG-1318)。中文给报告正文,英文键与英文短句给英文版。
# 不写婚姻稳定、离婚、再婚、段数或婚前咨询。
D9_CLAIM_BOUNDARY = (
'D9 结构证据指数,不预测婚姻次数、稳定、离婚、伴侣好坏,也不提示需要婚前咨询'
)
D9_CLAIM_BOUNDARY_EN = (
'D9 structural evidence index. It does not predict marriage count, stability, '
'divorce, or partner quality, and it does not suggest premarital counseling.'
)
D9_EVIDENCE_BANDS = (
('supportive_evidence_stronger', '支持证据较强', 'Stronger supportive evidence'),
('supportive_evidence_mixed_positive', '支持证据偏正', 'Mixed supportive evidence'),
('mixed_evidence', '证据混杂', 'Mixed evidence'),
('pressure_evidence_mixed', '压力证据偏杂', 'Mixed pressure evidence'),
('pressure_evidence_stronger', '压力证据较强', 'Stronger pressure evidence'),
)
def sign_of(lon: float) -> int:
"""从黄道经度计算星座序号 (0-11)"""
@@ -348,25 +365,42 @@ def _assess_d9_marriage_quality(
quality_points -= 1
factors.append("D9 Ketu在7宫 → 关系中的分离倾向")
# 综合评级
# 证据档位,不是婚姻结局(BUG-1318,上游 f891a2c1)。
if quality_points >= 4:
rating = "高(关系质量好,伴侣支持强,婚姻稳定)"
band = D9_EVIDENCE_BANDS[0]
elif quality_points >= 1:
rating = "中上(关系质量尚可,需经营但基础好)"
band = D9_EVIDENCE_BANDS[1]
elif quality_points >= 0:
rating = "中(关系质量一般,需用心经营)"
band = D9_EVIDENCE_BANDS[2]
elif quality_points >= -2:
rating = "中下(关系有挑战,需提前沟通和调整期望)"
band = D9_EVIDENCE_BANDS[3]
else:
rating = "低(关系质量有重大挑战,强烈建议婚前咨询)"
band = D9_EVIDENCE_BANDS[4]
return {
'quality_rating': rating,
'quality_band': band[0],
'quality_rating': band[1],
'quality_rating_en': band[2],
'quality_points': quality_points,
'factors': factors,
'claim_boundary': D9_CLAIM_BOUNDARY,
'claim_boundary_en': D9_CLAIM_BOUNDARY_EN,
}
def render_d9_evidence_report(quality: Dict, language: str = 'zh') -> str:
"""中文报告用证据档位短句;英文版用英文短句。两边都带同一条边界。"""
if not isinstance(quality, dict):
quality = {}
if language == 'en':
band = quality.get('quality_rating_en') or quality.get('quality_band') or ''
boundary = quality.get('claim_boundary_en') or D9_CLAIM_BOUNDARY_EN
return f"D9 evidence band: {band}\n{boundary}"
band = quality.get('quality_rating') or ''
boundary = quality.get('claim_boundary') or D9_CLAIM_BOUNDARY
return f"D9 证据档位:{band}\n{boundary}"
def _marriage_recommendations(base: Dict, d9_quality: Dict) -> List[str]:
"""几何指数与伴侣数量、事件断语分开(BUG-1183);不随指数大小给不同结论。"""
return [