mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
from typing import List, Literal, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class PostcodeSplitterTriggerRequest(BaseModel):
|
|
task_id: str
|
|
sub_task_id: str
|
|
s3_uri: str
|
|
|
|
|
|
class CombinerTriggerRequest(BaseModel):
|
|
task_id: str
|
|
sub_task_id: str
|
|
|
|
|
|
class LandlordOverridesTriggerRequest(BaseModel):
|
|
task_id: str
|
|
sub_task_id: str
|
|
s3_uri: str
|
|
portfolio_id: int
|
|
# category -> source CSV header (the classifier subset of the upload mapping)
|
|
column_mapping: dict[str, str]
|
|
|
|
|
|
class FinaliserTriggerRequest(BaseModel):
|
|
task_id: str
|
|
sub_task_id: str
|
|
s3_uri: str # combiner output (combined_output_s3_uri)
|
|
portfolio_id: int
|
|
bulk_upload_id: str
|
|
|
|
|
|
class FlagsSummary(BaseModel):
|
|
duplicates: int
|
|
missing: int
|
|
matched: int
|
|
|
|
|
|
class CombinedResultRow(BaseModel):
|
|
row_index: int
|
|
input_address: str
|
|
internal_reference: Optional[str] = None
|
|
uprn: Optional[str] = None
|
|
matched_address: Optional[str] = None
|
|
lexiscore: Optional[float] = None
|
|
score_bucket: Optional[Literal["high", "med", "low"]] = None
|
|
flags: List[Literal["duplicate", "missing"]] = []
|
|
|
|
|
|
class CombinedResultsResponse(BaseModel):
|
|
task_id: str
|
|
total: int
|
|
offset: int
|
|
limit: int
|
|
flags_summary: FlagsSummary
|
|
rows: List[CombinedResultRow]
|