zombee11/scorecardapi
1
1from datetime import datetime2from decimal import Decimal3 4from pydantic import BaseModel, ConfigDict, Field5 6from app.core.enums import DecisionAction, RuleType7 8 9class RuleBase(BaseModel):10 tenant_id: str = "default"11 product_type: str = "TWO_WHEELER_LOAN"12 dealer_id: str | None = None13 rule_code: str = Field(min_length=2, max_length=100)14 rule_name: str = Field(min_length=2, max_length=255)15 rule_type: RuleType16 field_name: str = Field(min_length=1, max_length=100)17 operator: str = Field(min_length=1, max_length=20)18 field_value: str = Field(min_length=1, max_length=255)19 score_value: Decimal | None = None20 score_component: str | None = None21 decision_action: DecisionAction | None = None22 reason_code: str = Field(min_length=2, max_length=100)23 priority: int = 10024 is_active: bool = True25 26 27class RuleCreate(RuleBase):28 created_by: str | None = "system"29 30 31class RuleUpdate(BaseModel):32 rule_name: str | None = None33 field_name: str | None = None34 operator: str | None = None35 field_value: str | None = None36 score_value: Decimal | None = None37 score_component: str | None = None38 decision_action: DecisionAction | None = None39 reason_code: str | None = None40 priority: int | None = None41 is_active: bool | None = None42 actor: str | None = "system"43 44 45class RuleStatusUpdate(BaseModel):46 is_active: bool47 actor: str | None = "system"48 49 50class RuleResponse(RuleBase):51 id: int52 version: int53 created_by: str | None54 created_at: datetime55 updated_at: datetime56 57 model_config = ConfigDict(from_attributes=True)58 59 