Spaces:
Build error
Build error
File size: 5,062 Bytes
80ffa08 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | from pydantic import BaseModel, Field
from typing import List
class PersonalDetails(BaseModel):
name: str = Field(description="Full name of the applicant")
dob: str = Field(description="Date of birth in 'DD Month YYYY' format")
nationality: str = Field(description="Nationality")
occupation: str = Field(description="Current job title or occupation")
passport_number: str = Field(description="Passport number")
class GroupMember(BaseModel):
name: str
relationship: str
dob: str
occupation: str
nationality: str
passport_number: str
class SchengenVisaData(BaseModel):
personal_details: PersonalDetails
group_members: List[GroupMember] = Field(default_factory=list)
# Trip Details
country: str = Field(description="The specific Schengen country embassy (e.g. France, Italy)")
main_dest: str = Field(description="Main destination country")
other_destinations: str = Field(description="Comma separated list of other countries, if any", default="")
purpose: str = Field(description="Purpose of travel (Tourism, Business, Family Visit)")
event: str = Field(description="Specific event (e.g. 'holiday', 'business meeting')")
trip_highlight: str = Field(description="A short highlight (e.g., 'visiting the Eiffel Tower')")
# Dates & Duration
start: str = Field(description="Travel start date in 'DD Month YYYY'")
end: str = Field(description="Travel end date in 'DD Month YYYY'")
duration: str = Field(description="Total duration string (e.g., '10 days and 9 nights')")
# Contact & Financial
contact_email: str
contact_phone: str
job_commitment: str = Field(description="Professional sentence about returning to job")
financial_status: str = Field(description="Financial standing", default="sound")
class JapanVisaData(BaseModel):
name: str = Field(description="Full name of the applicant")
address: str = Field(description="Current residential address (street, number, unit)")
city: str = Field(description="City of residence")
postal_code: str = Field(description="Postal code of residence")
email: str = Field(description="Applicant's email address")
phone: str = Field(description="Applicant's phone number (format: +62...)")
class HousewifeStatementData(BaseModel):
applicant_name: str = Field(description="Full name of the housewife (applicant)")
applicant_dob: str = Field(description="Applicant's Place and Date of Birth (e.g. 'Jakarta, 12 January 1980')")
applicant_passport: str = Field(description="Applicant's Passport Number")
sponsor_name: str = Field(description="Name of the husband/sponsor")
sponsor_bank_details: str = Field(description="Sponsor's Bank Name and Account Number")
destination_country: str = Field(description="Country being visited")
visa_type: str = Field(description="Type of visa (e.g. 'Tourist', 'Visitor')")
visit_end_date: str = Field(description="Date the trip ends")
travel_companions: str = Field(description="Who the applicant is traveling with (e.g. 'my husband', 'my family')")
letter_location: str = Field(description="City where the letter is signed (usually applicant's residence)")
class SponsorshipLetterData(BaseModel):
# Sponsor Details
sponsor_name: str = Field(description="Full name of the sponsor")
sponsor_address: str = Field(description="Sponsor's full address")
sponsor_postal_code: str = Field(description="Sponsor's postal code")
sponsor_email: str = Field(description="Sponsor's email address")
sponsor_contact_number: str = Field(description="Sponsor's phone number")
# Applicant Details
applicant_name: str = Field(description="Full name of the applicant being sponsored")
applicant_dob: str = Field(description="Applicant's Date of Birth (e.g. '12 January 1990')")
applicant_passport_no: str = Field(description="Applicant's Passport Number")
# Embassy/Visa Details
officer_title: str = Field(description="Title of the officer (e.g. 'The Visa Officer')", default="The Visa Officer")
embassy_name: str = Field(description="Name of the Embassy (e.g. 'Embassy of United Kingdom')")
embassy_address: str = Field(description="Street Address of the Embassy")
embassy_city_state_postal: str = Field(description="City, State, and Postal Code of the Embassy")
# Visit Details
visa_name: str = Field(description="Name of the Visa (e.g. 'Tourist Visa', 'Visitor Visa')")
sponsor_relationship: str = Field(description="Relationship to applicant (e.g. 'Father', 'Friend', 'Employer')")
visit_reason: str = Field(description="Short reason for visit (e.g. 'tourism', 'attend graduation')")
destination_country: str = Field(description="Country being visited")
visit_start_date: str = Field(description="Start date of visit")
visit_end_date: str = Field(description="End date of visit")
visit_purpose_details: str = Field(description="Detailed purpose (e.g. 'to spend summer holidays together')") |