diff --git a/apps/api/src/models/incident.py b/apps/api/src/models/incident.py index 98352400..98e5dbd6 100644 --- a/apps/api/src/models/incident.py +++ b/apps/api/src/models/incident.py @@ -20,7 +20,7 @@ C-Suite 戰略會議決議 (2026-03-22): - Semantic Memory (Vector DB): 向量化後的知識,供 RAG 檢索 """ -from datetime import UTC, datetime +from datetime import datetime, timezone from enum import Enum from typing import Literal from uuid import UUID, uuid4 @@ -338,7 +338,7 @@ class Incident(BaseModel): # === 識別 === incident_id: str = Field( - default_factory=lambda: f"INC-{datetime.now(UTC).strftime('%Y%m%d')}-{str(uuid4())[:6].upper()}", + default_factory=lambda: f"INC-{datetime.now(timezone.utc).strftime('%Y%m%d')}-{str(uuid4())[:6].upper()}", description="事件唯一識別碼 (如 INC-20260322-A1B2C3)", ) @@ -387,11 +387,11 @@ class Incident(BaseModel): # === 時間軸 === created_at: datetime = Field( - default_factory=lambda: datetime.now(UTC), + default_factory=lambda: datetime.now(timezone.utc), description="事件建立時間", ) updated_at: datetime = Field( - default_factory=lambda: datetime.now(UTC), + default_factory=lambda: datetime.now(timezone.utc), description="最後更新時間", ) resolved_at: datetime | None = Field( diff --git a/apps/api/src/models/terminal.py b/apps/api/src/models/terminal.py index be5c6ab7..18bbb54c 100644 --- a/apps/api/src/models/terminal.py +++ b/apps/api/src/models/terminal.py @@ -11,7 +11,7 @@ Pydantic models for Terminal SSE communication. @date 2026-03-28 (台北時間) """ -from datetime import UTC, datetime +from datetime import datetime, timezone from enum import Enum from typing import Any @@ -110,7 +110,7 @@ class TerminalIntentResponse(BaseModel): description="SSE 串流訂閱 URL", ) created_at: datetime = Field( - default_factory=lambda: datetime.now(UTC), + default_factory=lambda: datetime.now(timezone.utc), ) @@ -248,7 +248,7 @@ class TerminalSession(BaseModel): intent: str context: SpatialContext status: TerminalSessionStatus = TerminalSessionStatus.PENDING - created_at: datetime = Field(default_factory=lambda: datetime.now(UTC)) + created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) last_event_id: int = 0 message_count: int = 0 diff --git a/apps/api/src/utils/timezone.py b/apps/api/src/utils/timezone.py index f4bdade4..35f2b5e3 100644 --- a/apps/api/src/utils/timezone.py +++ b/apps/api/src/utils/timezone.py @@ -6,7 +6,7 @@ AWOOOI - 時區工具 🔴 HARD RULE: 全系統使用台北時區,禁止 UTC """ -from datetime import UTC, datetime, timedelta, timezone +from datetime import datetime, timedelta, timezone # 台北時區 (UTC+8) TAIPEI_TZ = timezone(timedelta(hours=8)) @@ -38,7 +38,7 @@ def to_taipei(dt: datetime) -> datetime: """ if dt.tzinfo is None: # naive datetime,假設是 UTC - dt = dt.replace(tzinfo=UTC) + dt = dt.replace(tzinfo=timezone.utc) return dt.astimezone(TAIPEI_TZ)