Spaces:
Running
Running
| from pydantic import BaseModel | |
| from typing import List, Optional, Any | |
| from datetime import datetime | |
| class ChatRequest(BaseModel): | |
| query: str | |
| session_id: Optional[str] = None | |
| top_k: int = 7 # increased from 5 — gives multilingual diversity room | |
| source_filter: Optional[str] = None | |
| language_filter: Optional[str] = None | |
| class SourceDocument(BaseModel): | |
| content: str | |
| metadata: dict | |
| score: float | |
| snippet: Optional[str] = None | |
| image_url: Optional[str] = None | |
| citation_index: Optional[int] = None | |
| class ChatResponse(BaseModel): | |
| answer: str | |
| sources: List[SourceDocument] | |
| follow_up_questions: List[str] = [] | |
| session_id: str = "anonymous" | |
| class FeedbackRequest(BaseModel): | |
| session_id: str | |
| message_id: int | |
| rating: int | |
| comment: Optional[str] = None | |
| class SentimentData(BaseModel): | |
| entity: str | |
| avg_sentiment: float | |
| mention_count: int | |
| class TrendData(BaseModel): | |
| topic: str | |
| volume: int | |
| momentum: float | |
| class NewsArticle(BaseModel): | |
| doc_id: str | |
| url: Optional[str] = None | |
| title: Optional[str] = None | |
| content: str | |
| source: Optional[str] = None | |
| published_at: Optional[str] = None | |
| score: Optional[float] = None | |
| metadata: dict = {} | |
| class BrowseResponse(BaseModel): | |
| total_returned: int | |
| articles: List[NewsArticle] | |
| next_offset: Optional[int] = None | |
| class SearchResponse(BaseModel): | |
| results: List[NewsArticle] | |
| class SourceStat(BaseModel): | |
| source: str | |
| article_count: int | |
| avg_sentiment: float | |
| class PipelineStats(BaseModel): | |
| total_articles_in_vector_db: int | |
| total_sentiment_results: int | |
| class ChatSession(BaseModel): | |
| session_id: str | |
| message_count: int | |
| last_active: Optional[datetime] = None | |
| class UserCreate(BaseModel): | |
| username: str | |
| email: str | |
| password: str | |
| full_name: Optional[str] = None | |
| class UserResponse(BaseModel): | |
| id: int | |
| username: str | |
| email: str | |
| full_name: Optional[str] = None | |
| role: str | |
| is_active: bool | |
| created_at: Optional[datetime] = None | |
| class Config: | |
| from_attributes = True | |
| class UserUpdate(BaseModel): | |
| username: Optional[str] = None | |
| full_name: Optional[str] = None | |
| email: Optional[str] = None | |
| class PasswordChange(BaseModel): | |
| current_password: str | |
| new_password: str | |
| class TokenResponse(BaseModel): | |
| access_token: str | |
| refresh_token: str | |
| token_type: str = "bearer" | |
| class RefreshRequest(BaseModel): | |
| refresh_token: str | |
| class AdminUserUpdate(BaseModel): | |
| is_active: Optional[bool] = None | |
| role: Optional[str] = None | |