Add some validation rules
This commit is contained in:
@ -50,10 +50,20 @@ def xval_email_account_profile(data: ExtractedData) -> Optional[XValFailure]:
|
||||
doc2_val=f"{data.profile.email=}"
|
||||
)
|
||||
|
||||
def xval_passport_no_account_passport(data: ExtractedData) -> Optional[XValFailure]:
|
||||
if data.account.passport_number != data.passport.passport_number:
|
||||
return XValFailure(
|
||||
doc1_type=DocType.account,
|
||||
doc1_val=f"{data.account.passport_number=}",
|
||||
doc2_type=DocType.passport,
|
||||
doc2_val=f"{data.passport.passport_number=}"
|
||||
)
|
||||
|
||||
def xref_all(data: ExtractedData) -> list[XValFailure]:
|
||||
def xval_all(data: ExtractedData) -> list[XValFailure]:
|
||||
xref_validators: list[Callable[[ExtractedData], Optional[XValFailure]]] = [
|
||||
xval_name_account_description
|
||||
xval_name_account_description,
|
||||
xval_email_account_profile,
|
||||
xval_passport_no_account_passport
|
||||
]
|
||||
|
||||
validation_failures = []
|
||||
|
@ -1,6 +1,6 @@
|
||||
from datetime import date
|
||||
from typing import Literal
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from typing import Literal, Self
|
||||
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
||||
|
||||
|
||||
class FromPassport(BaseModel):
|
||||
@ -22,6 +22,12 @@ class FromPassport(BaseModel):
|
||||
issue_date: date
|
||||
expiry_date: date
|
||||
|
||||
@model_validator(mode='after')
|
||||
def check_expiry_date_after_issue_date(self) -> Self:
|
||||
if self.issue_date >= self.expiry_date:
|
||||
raise ValueError(f'Expiry date is not after issue date')
|
||||
return self
|
||||
|
||||
signature_present: bool
|
||||
|
||||
machine_readable_zone: str = Field(..., min_length=44)
|
2
validation/llm_validate.py
Normal file
2
validation/llm_validate.py
Normal file
@ -0,0 +1,2 @@
|
||||
# TODO
|
||||
# account.reference_currency corresponds to passport.country
|
Reference in New Issue
Block a user