SCORECARDAPI2 / rule.py
zombee11's picture
Upload 32 files
ede4a2e verified
Raw
History Blame Contribute Delete
1.62 kB
from datetime import datetime
from decimal import Decimal
from pydantic import BaseModel, ConfigDict, Field
from app.core.enums import DecisionAction, RuleType
class RuleBase(BaseModel):
tenant_id: str = "default"
product_type: str = "TWO_WHEELER_LOAN"
dealer_id: str | None = None
rule_code: str = Field(min_length=2, max_length=100)
rule_name: str = Field(min_length=2, max_length=255)
rule_type: RuleType
field_name: str = Field(min_length=1, max_length=100)
operator: str = Field(min_length=1, max_length=20)
field_value: str = Field(min_length=1, max_length=255)
score_value: Decimal | None = None
score_component: str | None = None
decision_action: DecisionAction | None = None
reason_code: str = Field(min_length=2, max_length=100)
priority: int = 100
is_active: bool = True
class RuleCreate(RuleBase):
created_by: str | None = "system"
class RuleUpdate(BaseModel):
rule_name: str | None = None
field_name: str | None = None
operator: str | None = None
field_value: str | None = None
score_value: Decimal | None = None
score_component: str | None = None
decision_action: DecisionAction | None = None
reason_code: str | None = None
priority: int | None = None
is_active: bool | None = None
actor: str | None = "system"
class RuleStatusUpdate(BaseModel):
is_active: bool
actor: str | None = "system"
class RuleResponse(RuleBase):
id: int
version: int
created_by: str | None
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)