From fc2e054832cec4c0c49e6f4edf03603f96334950 Mon Sep 17 00:00:00 2001 From: thomastomy5 <69713148+thomastomy5@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:08:29 +0530 Subject: [PATCH 1/4] fixed null handling for pos parentloadid --- .../gold_module/gold_module/models/gold_image_request.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py index 5c69479c..bf0e48c4 100644 --- a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py +++ b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py @@ -34,9 +34,9 @@ class ImageMetadata(BaseModel): gold_loan_category: str = None loan_tenure: int = None loan_amount: float = None - loan_type: Literal['new', 'top_up'] = None - pos: float = None - parent_loan_id: str = None + loan_type: Optional[Literal['new', 'top_up']] = None + pos: Optional[float] = None + parent_loan_id: Optional[str] = None gross_weight: float = None stone_weight: float = None From 52f0357dec07f36d36aa381f8c87b32c554cc851 Mon Sep 17 00:00:00 2001 From: thomastomy5 <69713148+thomastomy5@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:15:53 +0530 Subject: [PATCH 2/4] added import --- .../gold_module/gold_module/models/gold_image_request.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py index bf0e48c4..6ee7fc22 100644 --- a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py +++ b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py @@ -1,5 +1,5 @@ from datetime import datetime -from typing import List, Literal +from typing import List, Literal, Optional from pydantic import BaseModel, ConfigDict, model_validator From 5664abc2a975ed4602b19ad22c53509cc0c4611a Mon Sep 17 00:00:00 2001 From: thomastomy5 <69713148+thomastomy5@users.noreply.github.com> Date: Thu, 9 Jul 2026 16:58:15 +0530 Subject: [PATCH 3/4] added optional to handle null --- .../gold_module/models/gold_image_request.py | 80 +++++++++---------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py index 6ee7fc22..28231f3f 100644 --- a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py +++ b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py @@ -5,58 +5,58 @@ class Item(BaseModel): - item_id: str = None - item_type: str = None - item_count: int = None - item_description: str = None - item_gross_weight: float = None - item_stone_weight: float = None - item_net_weight: float = None - item_purity: float = None + item_id: Optional[str] = None + item_type: Optional[str] = None + item_count: Optional[int] = None + item_description: Optional[str] = None + item_gross_weight: Optional[float] = None + item_stone_weight: Optional[float] = None + item_net_weight: Optional[float] = None + item_purity: Optional[float] = None model_config = ConfigDict(extra='ignore') class ImageMetadata(BaseModel): - customer_id: str = None - loan_id: str = None + customer_id: Optional[str] = None + loan_id: Optional[str] = None - branch: str = None - city: str = None - region: str = None - zone: str = None - category: str = None + branch: Optional[str] = None + city: Optional[str] = None + region: Optional[str] = None + zone: Optional[str] = None + category: Optional[str] = None - agent_id: str = None - item_id: str = None # Unique indentifier for gold image + agent_id: Optional[str] = None + item_id: Optional[str] = None # Unique indentifier for gold image - timestamp: datetime = None + timestamp: Optional[datetime] = None loan_date: datetime - gold_loan_category: str = None - loan_tenure: int = None - loan_amount: float = None + gold_loan_category: Optional[str] = None + loan_tenure: Optional[int] = None + loan_amount: Optional[float] = None loan_type: Optional[Literal['new', 'top_up']] = None pos: Optional[float] = None parent_loan_id: Optional[str] = None - gross_weight: float = None - stone_weight: float = None - net_weight: float = None - jewellery_items_count: int = None - gold_purity: float = None - - items: List[Item] = None - - metadata_1: dict = None - metadata_2: dict = None - metadata_3: dict = None - metadata_4: dict = None - metadata_5: dict = None - - filter_1: str = None - filter_2: str = None - filter_3: str = None - filter_4: str = None - filter_5: str = None + gross_weight: Optional[float] = None + stone_weight: Optional[float] = None + net_weight: Optional[float] = None + jewellery_items_count: Optional[int] = None + gold_purity: Optional[float] = None + + items: Optional[List[Item]] = None + + metadata_1: Optional[dict] = None + metadata_2: Optional[dict] = None + metadata_3: Optional[dict] = None + metadata_4: Optional[dict] = None + metadata_5: Optional[dict] = None + + filter_1: Optional[str] = None + filter_2: Optional[str] = None + filter_3: Optional[str] = None + filter_4: Optional[str] = None + filter_5: Optional[str] = None model_config = ConfigDict(extra='allow') From 339c87ebb27a5e9a8ced362c96b4459efc77abdd Mon Sep 17 00:00:00 2001 From: thomastomy5 <69713148+thomastomy5@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:10:29 +0530 Subject: [PATCH 4/4] made loanid field mandatory --- .../gold_module/models/gold_image_request.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py index 28231f3f..9a216a13 100644 --- a/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py +++ b/wavefront/server/modules/gold_module/gold_module/models/gold_image_request.py @@ -1,7 +1,7 @@ from datetime import datetime from typing import List, Literal, Optional -from pydantic import BaseModel, ConfigDict, model_validator +from pydantic import BaseModel, ConfigDict, field_validator, model_validator class Item(BaseModel): @@ -18,7 +18,7 @@ class Item(BaseModel): class ImageMetadata(BaseModel): customer_id: Optional[str] = None - loan_id: Optional[str] = None + loan_id: str branch: Optional[str] = None city: Optional[str] = None @@ -60,6 +60,13 @@ class ImageMetadata(BaseModel): model_config = ConfigDict(extra='allow') + @field_validator('loan_id') + @classmethod + def loan_id_must_not_be_empty(cls, v: str) -> str: + if not v.strip(): + raise ValueError('loan_id must not be empty') + return v + @model_validator(mode='after') def validate_loan_type_fields(self): if self.loan_type == 'top_up' and not self.parent_loan_id: @@ -104,3 +111,10 @@ class ImageAnalysisRequest(BaseModel): class AdhocImageUploadRequest(BaseModel): image: str loan_id: str + + @field_validator('loan_id') + @classmethod + def loan_id_must_not_be_empty(cls, v: str) -> str: + if not v.strip(): + raise ValueError('loan_id must not be empty') + return v