#!/usr/bin/env python3 """ 测试1981年10月4日戌时女命盘 Test 1981-10-04 19:00-21:00 female chart """ import requests import json # API请求 url = "https://sisithefox-astrology-ziwei-api.hf.space/analyze-ziwei-knowledge-enhanced" payload = { "birth_date": "1981-10-04", "birth_time": "20:00", # 戌时中间时间 "gender": "女", "is_leap_month": False, "fix_leap": True } print("=" * 80) print("🔮 紫微斗数命盘解读 - 1981-10-04 戌时 女") print("=" * 80) try: response = requests.post(url, json=payload, timeout=30) if response.status_code != 200: print(f"❌ API调用失败: {response.status_code}") print(response.text) exit(1) data = response.json() if data.get('status') != 'success': print(f"❌ 错误: {data.get('error')}") exit(1) result = data['data'] knowledge = result.get('knowledge_interpretation', {}) # 命宫信息 print("\n【命宫信息】") ming_gong = None for palace in result.get('palaces', []): if palace['name'] == '命宫': ming_gong = palace break if ming_gong: print(f"位置: {ming_gong['position']}") print(f"强度评分: {ming_gong.get('strength_score', 'N/A')}/100") print("\n主星:") for star in ming_gong.get('major_stars', []): brightness = star.get('brightness', 'N/A') print(f" • {star['name']} ({brightness})") print("\n副星:") minor_stars = ming_gong.get('minor_stars', []) if minor_stars: for star in minor_stars: print(f" • {star['name']}") else: print(" 无") # 星曜组合匹配结果 star_combos = knowledge.get('star_combinations', {}) total_matched = star_combos.get('total_matched', 0) total_checked = star_combos.get('total_rules_checked', 0) print("\n" + "=" * 80) print("【星曜组合匹配结果】") print("=" * 80) print(f"匹配规则数: {total_matched}") print(f"检查规则总数: {total_checked}") print(f"匹配率: {total_matched / total_checked * 100:.1f}%") matched_rules = star_combos.get('matched_rules', []) if matched_rules: print(f"\n【匹配的组合详情】({len(matched_rules)}个):\n") for i, rule in enumerate(matched_rules, 1): print(f"{i}. {rule['rule_name']} (ID: {rule['rule_id']})") print(f" 宫位: {rule['palace']}") print(f" 分类: {rule['category']}") print(f" 评分: {rule['score']}/100") print(f" 置信度: {rule['confidence']:.1%}") print(f" 效果等级: {rule['effect_level']}") interp = rule.get('interpretations', {}) print(f" 核心含义: {interp.get('core_meaning', 'N/A')}") # 显示匹配的星曜 matched_stars = rule.get('matched_stars', []) if matched_stars: print(f" 匹配星曜: {', '.join(matched_stars)}") print() # 组合总结 summary = star_combos.get('summary', {}) if summary: print("=" * 80) print("【组合总结】") print("=" * 80) print(f"最高分: {summary.get('highest_score', 0)}/100") print(f"平均分: {summary.get('average_score', 0):.1f}/100") print(f"整体质量: {summary.get('overall_quality', 'N/A')}") categories = summary.get('categories', {}) if categories: print(f"\n分类统计:") for cat, count in sorted(categories.items(), key=lambda x: x[1], reverse=True): print(f" • {cat}: {count}条") # Top 3规则 top_3 = summary.get('top_3_rules', []) if top_3: print(f"\nTop 3规则:") for i, rule in enumerate(top_3, 1): print(f" {i}. {rule['name']} ({rule['score']}分, {rule['category']})") else: print("\n⚠️ 未匹配到任何星曜组合") print(" 这可能表示此命盘的星曜配置不在当前100条规则中") print("\n" + "=" * 80) print("✅ 测试完成!") print("=" * 80) # 保存详细结果 output_file = "/Volumes/sparksverse/huggingface-spaces/astrology-ziwei-api/test_api_1981_result.json" with open(output_file, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2) print(f"\n📝 详细结果已保存到: test_api_1981_result.json") except requests.exceptions.Timeout: print("❌ API调用超时") except requests.exceptions.RequestException as e: print(f"❌ 网络错误: {e}") except Exception as e: print(f"❌ 错误: {e}") import traceback traceback.print_exc()