oliver-metadata-tool/app/models/responses.py
SamoilenkoVadym 3deaa5ef40 Initial commit: Oliver Metadata Tool (FastAPI)
Complete Flask → FastAPI migration with:
- FastAPI app with session auth, Azure AD SSO, rate limiting
- SQLite-backed session store (survives restarts)
- Bulk AI metadata generation with SSE progress
- Admin panel (user management, audit log, AI usage)
- Subpath deployment support (ROOT_PATH config)
- Docker + deploy.sh for production deployment
- Test suite (auth, upload, templates, imports, admin, sessions)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 21:23:42 +00:00

70 lines
1.9 KiB
Python

"""Pydantic response models."""
from typing import Optional, Dict, List, Any
from pydantic import BaseModel
class FileResult(BaseModel):
"""Result for a single processed file."""
success: bool = True
filename: str
file_type: Optional[str] = None
current_metadata: Optional[Dict[str, str]] = None
suggested_metadata: Optional[Dict[str, str]] = None
metadata_source: Optional[str] = None
excel_found: bool = False
error: Optional[str] = None
class UploadResponse(BaseModel):
"""Response from file upload endpoint."""
success: bool
session_id: Optional[str] = None
files: List[FileResult] = []
error: Optional[str] = None
class UpdateResponse(BaseModel):
"""Response from metadata update endpoint."""
success: bool = True
message: str = ""
verified: bool = False
metadata: Optional[Dict[str, str]] = None
error: Optional[str] = None
class ExcelUploadResponse(BaseModel):
"""Response from Excel file upload."""
success: bool
excel_session_id: Optional[str] = None
filename: Optional[str] = None
sheets: Optional[List[str]] = None
preview: Optional[Dict[str, Any]] = None
message: Optional[str] = None
error: Optional[str] = None
class ImportUploadResponse(BaseModel):
"""Response from import file upload."""
success: bool
import_session_id: Optional[str] = None
filename: Optional[str] = None
columns: Optional[List[str]] = None
sample_data: Optional[List[Dict[str, Any]]] = None
message: Optional[str] = None
error: Optional[str] = None
class MappingConfigResponse(BaseModel):
"""Response from mapping configuration."""
success: bool
excel_session_id: Optional[str] = None
import_session_id: Optional[str] = None
stats: Optional[Dict[str, int]] = None
message: Optional[str] = None
error: Optional[str] = None
class ErrorResponse(BaseModel):
"""Standard error response."""
error: str