| from __future__ import annotations | |
| from typing import Any | |
| from pydantic import BaseModel, Field | |
| class AnalyzeRequest(BaseModel): | |
| username: str = Field(min_length=1, max_length=39, pattern=r"^[A-Za-z0-9-]+$") | |
| class GraphQLSignals(BaseModel): | |
| total_commits: int | |
| merged_prs: int | |
| total_contributions: int | |
| class StreakData(BaseModel): | |
| current_streak: int | |
| longest_streak: int | |
| class PublicActivity(BaseModel): | |
| public_commits: int | |
| public_prs_created: int | |
| class AnalyzeResponse(BaseModel): | |
| username: str | |
| rating_score: int = Field(ge=0, le=100) | |
| developer_level: str | |
| confidence: float | |
| strongest_language: str | |
| language_breakdown: dict[str, int] | |
| hiring_readiness_score: int = Field(ge=0, le=100) | |
| consistency_score: int = Field(ge=0, le=100) | |
| public_activity: PublicActivity | |
| graphql_signals: GraphQLSignals | |
| streak_data: StreakData | |
| model_info: dict[str, Any] | |