"""Data models for rule engine - pure Python implementation.""" from dataclasses import dataclass, field from datetime import datetime from typing import Optional, Dict, Any @dataclass class CreateRuleRequest: """创建规则的请求模型。""" name: str condition_template: str description: Optional[str] = None priority: int = 0 facts_schema: Optional[Dict] = None @dataclass class Rule: """规则模型。""" id: str name: str condition_template: str code: str description: Optional[str] = None priority: int = 0 version: int = 1 created_at: Optional[datetime] = None updated_at: Optional[datetime] = None is_active: bool = True def to_dict(self) -> Dict[str, Any]: return { "id": self.id, "name": self.name, "description": self.description, "condition_template": self.condition_template, "code": self.code, "priority": self.priority, "version": self.version, "created_at": self.created_at.isoformat() if self.created_at else None, "updated_at": self.updated_at.isoformat() if self.updated_at else None, "is_active": self.is_active } @dataclass class RuleExecution: """规则执行记录模型。""" id: str rule_id: str facts: Dict result: Optional[Dict] = None matched: bool = False executed_at: Optional[datetime] = None @dataclass class EvaluateRequest: """校验事实的请求模型。""" facts: Dict rule_id: Optional[str] = None # 指定规则ID,为空则匹配所有 @dataclass class EvaluateResponse: """校验事实的响应模型。""" matched: bool rule_id: Optional[str] = None result: Optional[Dict] = None conflict_warning: Optional[str] = None