77 lines
1.6 KiB
Python
77 lines
1.6 KiB
Python
|
|
from pydantic import BaseModel
|
||
|
|
from datetime import datetime
|
||
|
|
from typing import List, Optional
|
||
|
|
from enum import Enum
|
||
|
|
|
||
|
|
|
||
|
|
class InvestmentStage(str, Enum):
|
||
|
|
SEED = "seed"
|
||
|
|
SERIES_A = "series_a"
|
||
|
|
SERIES_B = "series_b"
|
||
|
|
SERIES_C = "series_c"
|
||
|
|
GROWTH = "growth"
|
||
|
|
LATE_STAGE = "late_stage"
|
||
|
|
|
||
|
|
|
||
|
|
class SectorSchema(BaseModel):
|
||
|
|
id: int
|
||
|
|
name: str
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
from_attributes = True
|
||
|
|
|
||
|
|
|
||
|
|
class CompanySchema(BaseModel):
|
||
|
|
id: int
|
||
|
|
name: str
|
||
|
|
industry: str
|
||
|
|
location: str
|
||
|
|
founded_year: Optional[int]
|
||
|
|
website: Optional[str]
|
||
|
|
created_at: Optional[datetime]
|
||
|
|
updated_at: Optional[datetime]
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
from_attributes = True
|
||
|
|
|
||
|
|
|
||
|
|
class InvestorTeamMemberSchema(BaseModel):
|
||
|
|
id: int
|
||
|
|
name: str
|
||
|
|
role: str
|
||
|
|
email: str
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
from_attributes = True
|
||
|
|
|
||
|
|
|
||
|
|
class InvestorSchema(BaseModel):
|
||
|
|
id: int
|
||
|
|
name: str
|
||
|
|
description: Optional[str]
|
||
|
|
aum: int
|
||
|
|
check_size_lower: int
|
||
|
|
check_size_upper: int
|
||
|
|
geographic_focus: str
|
||
|
|
stage_focus: InvestmentStage
|
||
|
|
number_of_investments: int
|
||
|
|
created_at: Optional[datetime]
|
||
|
|
updated_at: Optional[datetime]
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
from_attributes = True
|
||
|
|
|
||
|
|
|
||
|
|
class InvestorData(BaseModel):
|
||
|
|
"""Comprehensive investor data schema for LLM processing"""
|
||
|
|
investor: InvestorSchema
|
||
|
|
portfolio_companies: List[CompanySchema] = []
|
||
|
|
team_members: List[InvestorTeamMemberSchema] = []
|
||
|
|
sectors: List[SectorSchema] = []
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
from_attributes = True
|
||
|
|
|
||
|
|
|
||
|
|
class InvestorList(BaseModel):
|
||
|
|
investors: List[InvestorData]
|