rackham-meeting-analyzer/backend/app/models/analysis.py
2025-11-03 08:15:51 -06:00

50 lines
1.2 KiB
Python

"""
Analysis model for storing video analysis results.
"""
from pydantic import BaseModel, Field
from typing import Dict, Any, Optional
from datetime import datetime
class AnalysisCreate(BaseModel):
"""Create a new analysis record"""
job_id: str
user_id: str
data: Dict[str, Any] # The unified JSON from Gemini
class AnalysisInDB(BaseModel):
"""Analysis document in MongoDB"""
id: str = Field(alias="_id")
job_id: str
user_id: str
data: Dict[str, Any] # Unified JSON analysis data
created_at: datetime = Field(default_factory=datetime.utcnow)
expires_at: datetime # For TTL index
class Config:
populate_by_name = True
class AnalysisResponse(BaseModel):
"""Analysis response for API"""
id: str = Field(alias="_id")
job_id: str
data: Dict[str, Any]
created_at: datetime
class Config:
populate_by_name = True
class AnalysisSummary(BaseModel):
"""Summary of analysis for history list"""
id: str = Field(alias="_id")
job_id: str
filename: str
duration_sec: float
num_participants: int
created_at: datetime
class Config:
populate_by_name = True