Spaces:
Sleeping
Sleeping
| """ | |
| Pydantic models ูุฌุฏุงูู Supabase. | |
| ุชุณุชุฎุฏู ููุชุญูู ู ู ุงูุจูุงูุงุช ุฏุงุฎู ุงูู API endpoints ูุงูู workers. | |
| ุงูุฃุณู ุงุก ูุฃููุงุน ุงูุญููู ู ุทุงุจูุฉ ุชู ุงู ุงู ููู schema ูู Supabase. | |
| """ | |
| from __future__ import annotations | |
| from datetime import date, datetime | |
| from typing import Any, List, Optional | |
| from uuid import UUID | |
| from pydantic import BaseModel, Field | |
| class AnalysisRequest(BaseModel): | |
| """ุตู ู ู ุฌุฏูู analysis_requests.""" | |
| id: UUID | |
| user_id: UUID | |
| title: str | |
| keywords: List[str] | |
| platforms: List[str] = Field(default_factory=lambda: ["twitter"]) | |
| analysis_type: str # reputation | campaign | audience | influencer | strategic | |
| date_from: date | |
| date_to: date | |
| status: str = "pending" | |
| progress: int = 0 | |
| error_message: Optional[str] = None | |
| created_at: Optional[datetime] = None | |
| completed_at: Optional[datetime] = None | |
| updated_at: Optional[datetime] = None | |
| # ุญูู ุงุฎุชูุงุฑู ูุถููู ูุญู: ูุงุฆู ุฉ dataset ids ููุชุญููู | |
| dataset_ids: Optional[List[str]] = None | |
| class AnalysisResults(BaseModel): | |
| """ุตู ู ู ุฌุฏูู analysis_results - ุงูุดูู ุงูู ุชููุน ู ู ุงูู Frontend.""" | |
| request_id: UUID | |
| total_posts: int = 0 | |
| total_users: int = 0 | |
| total_reach: int = 0 | |
| sentiment_positive: float = 0.0 | |
| sentiment_neutral: float = 0.0 | |
| sentiment_negative: float = 0.0 | |
| top_topics: List[dict] = Field(default_factory=list) | |
| top_influencers: List[dict] = Field(default_factory=list) | |
| sentiment_timeline: List[dict] = Field(default_factory=list) | |
| network_nodes: List[dict] = Field(default_factory=list) | |
| network_edges: List[dict] = Field(default_factory=list) | |
| summary: Optional[str] = None | |
| recommendations: List[str] = Field(default_factory=list) | |
| class TriggerRequest(BaseModel): | |
| request_id: UUID | |
| user_id: Optional[UUID] = None | |
| class StatusResponse(BaseModel): | |
| request_id: UUID | |
| status: str | |
| progress: int | |
| error_message: Optional[str] = None | |
| updated_at: Optional[datetime] = None | |
| class HealthResponse(BaseModel): | |
| status: str = "healthy" | |
| version: str = "1.0.0" | |
| spark_available: bool = False | |
| supabase_configured: bool = False | |
| class DatasetInfo(BaseModel): | |
| """ู ุนููู ุงุช dataset ูุฅุฑุฌุงุนูุง ููู Frontend.""" | |
| id: str | |
| name: str | |
| name_ar: str | |
| domain: str | |
| source: str | |
| size_estimate_rows: int | |
| has_timestamp: bool | |
| has_user_metadata: bool | |
| has_engagement: bool | |
| description_ar: str = "" | |
| homepage: str = "" | |