fix: add UTC timezone indicator to all datetime serialization
Database stores times in UTC but serialized without timezone info, causing frontend to misinterpret as local time. Now all datetime fields include 'Z' suffix to indicate UTC, enabling proper timezone conversion in the browser. - Add UTCDatetimeBaseModel base class for Pydantic schemas - Update model to_dict() methods to append 'Z' suffix - Affects: tasks, users, sessions, audit logs, translations 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,8 @@ from pydantic import BaseModel, Field
|
||||
from enum import Enum
|
||||
from dataclasses import dataclass
|
||||
|
||||
from app.schemas.base import UTCDatetimeBaseModel
|
||||
|
||||
|
||||
class TranslationStatusEnum(str, Enum):
|
||||
"""Translation job status enumeration"""
|
||||
@@ -54,7 +56,7 @@ class TranslationProgress(BaseModel):
|
||||
percentage: float = Field(default=0.0, description="Progress percentage (0-100)")
|
||||
|
||||
|
||||
class TranslationStatusResponse(BaseModel):
|
||||
class TranslationStatusResponse(UTCDatetimeBaseModel):
|
||||
"""Response model for translation status query"""
|
||||
task_id: str = Field(..., description="Task ID")
|
||||
status: TranslationStatusEnum = Field(..., description="Current translation status")
|
||||
@@ -89,7 +91,7 @@ class TranslationStatistics(BaseModel):
|
||||
total_tokens: int = Field(default=0, description="Total API tokens used")
|
||||
|
||||
|
||||
class TranslationResultResponse(BaseModel):
|
||||
class TranslationResultResponse(UTCDatetimeBaseModel):
|
||||
"""Response model for translation result"""
|
||||
schema_version: str = Field(default="1.0.0", description="Schema version")
|
||||
source_document: str = Field(..., description="Source document filename")
|
||||
@@ -104,7 +106,7 @@ class TranslationResultResponse(BaseModel):
|
||||
)
|
||||
|
||||
|
||||
class TranslationListItem(BaseModel):
|
||||
class TranslationListItem(UTCDatetimeBaseModel):
|
||||
"""Item in translation list response"""
|
||||
target_lang: str = Field(..., description="Target language")
|
||||
translated_at: datetime = Field(..., description="Translation timestamp")
|
||||
|
||||
Reference in New Issue
Block a user