# toolkit/rule_engine.py import json from datetime import datetime from typing import List class RuleEngine: def __init__(self, rules_json_str: str): self.rules = {} if rules_json_str: try: self.rules = json.loads(rules_json_str) except: pass self.start_date = None self.end_date = None def set_date_range_start(self, date_str: str): # Format: YYYY-MM-DD if date_str: try: self.start_date = datetime.strptime(date_str, "%Y-%m-%d") except: pass def set_date_range_end(self, date_str: str): # Format: YYYY-MM-DD if date_str: try: self.end_date = datetime.strptime(date_str, "%Y-%m-%d") except: pass # 修正:将 list[str] 改为 List[str] def select_date(self, available_dates: List[str], fmt: str = "%d/%m/%Y") -> List[str]: """ 从可用日期中筛选符合规则的日期 """ valid_dates = [] for d_str in available_dates: try: dt = datetime.strptime(d_str, fmt) # 检查日期范围 if self.start_date and dt < self.start_date: continue if self.end_date and dt > self.end_date: continue # 这里可以添加星期几排除等逻辑 valid_dates.append(d_str) except: continue return valid_dates