fix(models): 全面替換 datetime.UTC → timezone.utc 相容 Python 3.10
terminal.py, incident.py, utils/timezone.py 同樣問題。 CI runner Python 3.10 無 UTC 常數,導致所有模型靜默 import 失敗。 # 2026-04-06 ogt: 完整修復,不再有漏網之魚 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user