Add user location support and tax analysis enhancements
- Introduced user location extraction from user tax info for improved matching. - Normalized user location to province codes for tax calculations. - Updated MatchResponse schema to include tax analysis data. - Enhanced LLMTaxAnalyzer to handle various location formats and provide fallback logic.
This commit is contained in:
+62
-1
@@ -131,6 +131,7 @@ class MatchResponse(BaseModel):
|
||||
receipt_tax_amount: float
|
||||
transaction_vendor: str
|
||||
transaction_amount: float
|
||||
tax_analysis: Optional[dict] = None
|
||||
|
||||
|
||||
class MatchingResponse(BaseModel):
|
||||
@@ -205,7 +206,67 @@ class DepreciationResponse(BaseModel):
|
||||
error: Optional[str] = None
|
||||
|
||||
|
||||
class CityInfo(BaseModel):
|
||||
"""City information from user tax info"""
|
||||
|
||||
id: int
|
||||
name: str
|
||||
state_id: int
|
||||
state_code: str
|
||||
country_id: int
|
||||
country_code: str
|
||||
latitude: Optional[str] = None
|
||||
longitude: Optional[str] = None
|
||||
|
||||
|
||||
class StateInfo(BaseModel):
|
||||
"""State/Province information from user tax info"""
|
||||
|
||||
id: int
|
||||
name: str
|
||||
country_id: int
|
||||
country_code: str
|
||||
state_code: str
|
||||
|
||||
|
||||
class CountryInfo(BaseModel):
|
||||
"""Country information from user tax info"""
|
||||
|
||||
id: int
|
||||
name: str
|
||||
iso3: str
|
||||
iso2: str
|
||||
phone_code: str
|
||||
capital: str
|
||||
currency: str
|
||||
native: Optional[str] = None
|
||||
region: Optional[str] = None
|
||||
subregion: Optional[str] = None
|
||||
emoji: Optional[str] = None
|
||||
emojiU: Optional[str] = None
|
||||
|
||||
|
||||
class UserTaxInfo(BaseModel):
|
||||
"""User tax information for location-based tax calculations"""
|
||||
|
||||
id: int
|
||||
user_id: int
|
||||
company_name: str
|
||||
tax_id: Optional[str] = ""
|
||||
tax_id_type: Optional[str] = "EIN"
|
||||
address_line_1: Optional[str] = ""
|
||||
address_line_2: Optional[str] = ""
|
||||
city: CityInfo
|
||||
state: StateInfo
|
||||
zip_postal_code: Optional[str] = ""
|
||||
country: CountryInfo
|
||||
include_on_invoices: Optional[int] = 1
|
||||
created_at: Optional[str] = None
|
||||
updated_at: Optional[str] = None
|
||||
|
||||
|
||||
class MatchSpecificRequest(BaseModel):
|
||||
file_ids: List[str]
|
||||
categorization_id: str
|
||||
user_location: Optional[str] = "Canada"
|
||||
user_location: Optional[str] = "Canada" # Kept for backward compatibility
|
||||
user_tax_info: Optional[UserTaxInfo] = None
|
||||
|
||||
Reference in New Issue
Block a user