Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, Field | |
| from typing import List, Optional, Dict, Any, Union | |
| class SkillDto(BaseModel): | |
| id: Optional[int] = None | |
| name: str | |
| class DomainDto(BaseModel): | |
| id: Optional[int] = None | |
| name: str | |
| class CareerDto(BaseModel): | |
| id: Optional[int] = None | |
| name: str | |
| class ExperienceDto(BaseModel): | |
| company: Optional[str] = None | |
| position: Optional[str] = None | |
| start_date: Optional[str] = None | |
| end_date: Optional[str] = None | |
| description: Optional[str] = None | |
| class EducationDto(BaseModel): | |
| school: Optional[str] = None | |
| degree: Optional[str] = None | |
| start_date: Optional[str] = None | |
| end_date: Optional[str] = None | |
| description: Optional[str] = None | |
| class MentorUpsertRequest(BaseModel): | |
| mentor_id: int | |
| full_name: Optional[str] = None | |
| bio: Optional[str] = None | |
| career: Optional[Union[CareerDto, Dict[str, Any], str]] = None | |
| skills: Optional[List[Union[SkillDto, Dict[str, Any], str]]] = None | |
| domains: Optional[List[Union[DomainDto, Dict[str, Any], str]]] = None | |
| experiences: Optional[List[Union[ExperienceDto, Dict[str, Any]]]] = None | |
| educations: Optional[List[Union[EducationDto, Dict[str, Any]]]] = None | |
| rating: Optional[float] = Field(None, ge=0.0, le=5.0) | |
| total_ratings: Optional[int] = Field(None, ge=0) | |
| session_count: Optional[int] = Field(None, ge=0) | |
| career_id: Optional[int] = None | |
| skill_ids: Optional[List[int]] = None | |
| domain_ids: Optional[List[int]] = None | |
| status: Optional[str] = "ACTIVATED" | |
| class MentorUpsertResponse(BaseModel): | |
| success: bool | |
| message: str | |
| mentor_id: int | |
| class RecommendationRequest(BaseModel): | |
| goals: Optional[str] = None | |
| skill_ids: Optional[List[int]] = None | |
| domain_ids: Optional[List[int]] = None | |
| mentor_domain_ids: Optional[List[int]] = None | |
| career_id: Optional[int] = None | |
| career_name: Optional[str] = None | |
| domain_names: Optional[List[str]] = None | |
| mentor_domain_names: Optional[List[str]] = None | |
| skill_names: Optional[List[str]] = None | |
| top_k: Optional[int] = Field(None, ge=1, le=100) | |
| final_count: Optional[int] = Field(None, ge=1, le=20) | |
| class RecommendedMentor(BaseModel): | |
| mentor_id: str | |
| score: float | |
| semantic_similarity: float | |
| reason: str | |
| metadata: Dict[str, Any] | |
| class RecommendationResponse(BaseModel): | |
| mentors: List[RecommendedMentor] | |
| count: int | |
| query_text: Optional[str] = None | |
| class HealthResponse(BaseModel): | |
| status: str | |
| embedding_model: Dict[str, Any] | |
| pinecone_index: Dict[str, Any] | |
| class BatchUpsertRequest(BaseModel): | |
| mentors: List[MentorUpsertRequest] | |
| class BatchUpsertResponse(BaseModel): | |
| success: bool | |
| message: str | |
| upserted_count: int | |
| failed_count: int | |