th commited on
Commit
5cdab55
·
1 Parent(s): e43f000

🔧 v3.10.0 紧急修复 - 添加缺失的辅助函数

Browse files

问题:
- star_combination_rules.py缺少6个辅助函数
- 导致ImportError: cannot import name 'get_rule_by_id'
- HuggingFace部署失败

修复:
- ✅ 添加 get_rule_by_id() - 根据ID获取规则
- ✅ 添加 get_rules_by_category() - 根据分类获取规则
- ✅ 添加 get_rules_by_stars() - 根据星曜搜索规则
- ✅ 添加 get_all_rule_ids() - 获取所有规则ID
- ✅ 添加 get_rules_count() - 获取规则总数
- ✅ 添加 get_rules_by_palace() - 根据宫位获取规则
- ✅ 添加测试代码

测试:
- ✅ 本地导入测试通过
- ✅ 所有220条规则正常访问
- ✅ 函数调用测试成功

🦊 Generated with Sisi

Files changed (1) hide show
  1. star_combination_rules.py +80 -0
star_combination_rules.py CHANGED
@@ -5568,3 +5568,83 @@ STAR_COMBINATION_RULES = [
5568
  # - 性格特质: 22条 (10.0%)
5569
  # - 人际交往: 19条 (8.6%)
5570
  # - 健康状况: 15条 (6.8%)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5568
  # - 性格特质: 22条 (10.0%)
5569
  # - 人际交往: 19条 (8.6%)
5570
  # - 健康状况: 15条 (6.8%)
5571
+
5572
+
5573
+ # ============================================================================
5574
+ # 辅助函数
5575
+ # ============================================================================
5576
+
5577
+ def get_rule_by_id(rule_id: str) -> Optional[Dict[str, Any]]:
5578
+ """根据ID获取规则"""
5579
+ for rule in STAR_COMBINATION_RULES:
5580
+ if rule['id'] == rule_id:
5581
+ return rule
5582
+ return None
5583
+
5584
+
5585
+ def get_rules_by_category(category: RuleCategory) -> List[Dict[str, Any]]:
5586
+ """根据分类获取规则"""
5587
+ return [rule for rule in STAR_COMBINATION_RULES if rule['category'] == category]
5588
+
5589
+
5590
+ def get_rules_by_stars(stars: List[str]) -> List[Dict[str, Any]]:
5591
+ """根据星曜名称搜索规则"""
5592
+ matched_rules = []
5593
+ for rule in STAR_COMBINATION_RULES:
5594
+ required_stars = set(rule['stars_required'])
5595
+ input_stars = set(stars)
5596
+ if required_stars.issubset(input_stars):
5597
+ matched_rules.append(rule)
5598
+ return matched_rules
5599
+
5600
+
5601
+ def get_all_rule_ids() -> List[str]:
5602
+ """获取所有规则ID"""
5603
+ return [rule['id'] for rule in STAR_COMBINATION_RULES]
5604
+
5605
+
5606
+ def get_rules_count() -> int:
5607
+ """获取规则总数"""
5608
+ return len(STAR_COMBINATION_RULES)
5609
+
5610
+
5611
+ def get_rules_by_palace(palace_type: str) -> List[Dict[str, Any]]:
5612
+ """根据宫位类型获取规则"""
5613
+ return [rule for rule in STAR_COMBINATION_RULES if palace_type in rule['palace_types']]
5614
+
5615
+
5616
+ # ============================================================================
5617
+ # 测试代码
5618
+ # ============================================================================
5619
+
5620
+ if __name__ == '__main__':
5621
+ print("=" * 70)
5622
+ print("星曜组合断语库测试")
5623
+ print("=" * 70)
5624
+
5625
+ print(f"\n总规则数: {get_rules_count()}")
5626
+
5627
+ print("\n【按分类统计】:")
5628
+ for category in RuleCategory:
5629
+ rules = get_rules_by_category(category)
5630
+ print(f" {category.value}: {len(rules)}条")
5631
+
5632
+ print("\n【测试规则查询】:")
5633
+ print("\n1. 查询紫微天府组合:")
5634
+ rules = get_rules_by_stars(["紫微", "天府"])
5635
+ for rule in rules:
5636
+ print(f" - {rule['name']} ({rule['id']})")
5637
+ print(f" {rule['interpretations']['core_meaning']}")
5638
+
5639
+ print("\n2. 查询命宫相关规则:")
5640
+ rules = get_rules_by_palace("命宫")
5641
+ print(f" 命宫相关规则: {len(rules)}条")
5642
+
5643
+ print("\n3. 查询火贪格:")
5644
+ rule = get_rule_by_id("SC081")
5645
+ if rule:
5646
+ print(f" 名称: {rule['name']}")
5647
+ print(f" 评分: {rule['compatibility_score']}")
5648
+ print(f" 核心: {rule['interpretations']['core_meaning']}")
5649
+
5650
+ print("\n星曜组合断语库测试完成!🔮✨")