Spaces:
Sleeping
Sleeping
File size: 2,600 Bytes
72d2ab9 | 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 | """
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 = ""
|