| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # 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
|