mirror of
https://github.com/sortedcord/alemno-payments.git
synced 2026-07-22 04:02:49 +05:30
refactor: Add JobSummary and Transaction models, client to get currency exchange rate
This commit is contained in:
@@ -3,6 +3,8 @@ from app.schemas.job import (
|
||||
JobResponse,
|
||||
JobStatusResponse,
|
||||
JobResultResponse,
|
||||
TransactionResponse,
|
||||
JobSummaryResponse,
|
||||
)
|
||||
|
||||
__all__ = [
|
||||
@@ -10,4 +12,6 @@ __all__ = [
|
||||
"JobResponse",
|
||||
"JobStatusResponse",
|
||||
"JobResultResponse",
|
||||
"TransactionResponse",
|
||||
"JobSummaryResponse",
|
||||
]
|
||||
|
||||
@@ -1,8 +1,41 @@
|
||||
from datetime import datetime
|
||||
from typing import Any, Dict, Optional
|
||||
from datetime import date, datetime
|
||||
from typing import Any, Dict, List, Optional
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class TransactionResponse(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: str
|
||||
job_id: str
|
||||
txn_id: str
|
||||
date: date
|
||||
merchant: str
|
||||
amount: float
|
||||
currency: str
|
||||
status: Optional[str] = None
|
||||
category: Optional[str] = None
|
||||
account_id: Optional[str] = None
|
||||
is_anomaly: bool
|
||||
anomaly_reason: Optional[str] = None
|
||||
llm_category: Optional[str] = None
|
||||
llm_raw_response: Optional[str] = None
|
||||
llm_failed: Optional[bool] = False
|
||||
|
||||
|
||||
class JobSummaryResponse(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: str
|
||||
job_id: str
|
||||
total_spend_inr: float
|
||||
total_spend_usd: float
|
||||
top_merchants: Dict[str, Any]
|
||||
anomaly_count: int
|
||||
narrative: Optional[str] = None
|
||||
risk_level: Optional[str] = None
|
||||
|
||||
|
||||
class JobBase(BaseModel):
|
||||
filename: str
|
||||
|
||||
@@ -16,9 +49,11 @@ class JobResponse(JobBase):
|
||||
|
||||
id: str
|
||||
status: str
|
||||
row_count: Optional[int] = None
|
||||
row_count_raw: Optional[int] = None
|
||||
row_count_clean: Optional[int] = None
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
completed_at: Optional[datetime] = None
|
||||
error_message: Optional[str] = None
|
||||
|
||||
|
||||
class JobStatusResponse(BaseModel):
|
||||
@@ -26,7 +61,7 @@ class JobStatusResponse(BaseModel):
|
||||
|
||||
id: str
|
||||
status: str
|
||||
summary: Optional[Dict[str, Any]] = None
|
||||
summary: Optional[JobSummaryResponse] = None
|
||||
|
||||
|
||||
class JobResultResponse(BaseModel):
|
||||
@@ -34,4 +69,5 @@ class JobResultResponse(BaseModel):
|
||||
|
||||
id: str
|
||||
status: str
|
||||
results: Optional[Dict[str, Any]] = None
|
||||
summary: Optional[JobSummaryResponse] = None
|
||||
transactions: List[TransactionResponse] = []
|
||||
|
||||
Reference in New Issue
Block a user