Files
julius_baer_onboarding/validation/from_profile.py

67 lines
3.0 KiB
Python
Raw Permalink Normal View History

2025-04-13 08:45:47 +02:00
from typing import Optional # Keep Optional, remove others
from pydantic import BaseModel, ConfigDict # Removed Field
class FromProfile(BaseModel):
"""
2025-04-13 08:45:47 +02:00
Fields which can be extracted from description.txt - All fields optional and simplified to string where possible.
"""
2025-04-13 08:45:47 +02:00
model_config = ConfigDict(validate_assignment=True, str_strip_whitespace=True) # Keep config if needed
2025-04-13 08:45:47 +02:00
first_name: Optional[str] = None
last_name: Optional[str] = None
date_of_birth: Optional[str] = None # Simplified from date
nationality: Optional[str] = None
country_of_domicile: Optional[str] = None
gender: Optional[str] = None # Simplified from Literal
# ID information
2025-04-13 08:45:47 +02:00
passport_number: Optional[str] = None # Simplified, removed Field constraints
id_type: Optional[str] = None # Simplified from Literal
id_issue_date: Optional[str] = None # Simplified from date
id_expiry_date: Optional[str] = None # Simplified from date
# Contact
2025-04-13 08:45:47 +02:00
phone: Optional[str] = None # Simplified, removed Field constraints
email: Optional[str] = None # Simplified, removed Field constraints
address: Optional[str] = None
# Personal info
2025-04-13 08:45:47 +02:00
politically_exposed_person: Optional[str] = None # Simplified from bool
marital_status: Optional[str] = None # Simplified from Literal
highest_education: Optional[str] = None # Simplified from Literal
education_history: Optional[str] = None
# Employment
2025-04-13 08:45:47 +02:00
employment_status: Optional[str] = None # Simplified from Literal
employment_since: Optional[str] = None # Simplified from int
employer: Optional[str] = None
position: Optional[str] = None
2025-04-13 08:45:47 +02:00
annual_salary_eur: Optional[str] = None # Simplified from float
# Wealth background
2025-04-13 08:45:47 +02:00
total_wealth_range: Optional[str] = None # Simplified from Literal
# List types are often handled differently; simplifying to a single string might lose info.
# Keeping as Optional[str] based on request, but consider if Optional[List[str]] = None is better long-term.
origin_of_wealth: Optional[str] = None # Simplified from List[Literal]
inheritance_details: Optional[str] = None
# Assets
2025-04-13 08:45:47 +02:00
business_assets_eur: Optional[str] = None # Simplified from float, removed Field constraint
# Income
2025-04-13 08:45:47 +02:00
estimated_annual_income: Optional[str] = None # Was already Optional[str]
income_country: Optional[str] = None
# Account preferences
2025-04-13 08:45:47 +02:00
commercial_account: Optional[str] = None # Simplified from bool
investment_risk_profile: Optional[str] = None # Simplified from Literal
mandate_type: Optional[str] = None # Simplified from Literal
investment_experience: Optional[str] = None # Simplified from Literal
investment_horizon: Optional[str] = None # Simplified from Literal
# Keeping as Optional[str] based on request, but consider if Optional[List[str]] = None is better long-term.
preferred_markets: Optional[str] = None # Simplified from List[str]
# Assets under management
2025-04-13 08:45:47 +02:00
total_aum: Optional[str] = None # Simplified from float
aum_to_transfer: Optional[str] = None # Simplified from float