fix(api): 修復時區 import 排序與未使用變數 lint 錯誤

- 修正 import 順序 (standard → third-party → local)
- 修復 datetime/timedelta 未定義錯誤
- 移除未使用的 imports

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-25 09:26:58 +08:00
parent 5c95b194b9
commit 749b8bc554
12 changed files with 70 additions and 33 deletions

View File

@@ -14,8 +14,6 @@ Endpoints:
from datetime import timedelta
from typing import Any
from src.utils.timezone import now_taipei
from fastapi import APIRouter, HTTPException, Query, status
from pydantic import BaseModel
from sqlalchemy import func, select
@@ -23,6 +21,7 @@ from sqlalchemy import func, select
from src.core.logging import get_logger
from src.db.base import get_db_context
from src.db.models import AuditLog
from src.utils.timezone import now_taipei
router = APIRouter(prefix="/audit-logs", tags=["Audit Logs"])
logger = get_logger("awoooi.audit")
@@ -191,7 +190,6 @@ async def get_audit_stats() -> AuditStatsResponse:
Returns:
AuditStatsResponse: 統計資訊
"""
from datetime import timedelta
async with get_db_context() as db:
# Total count

View File

@@ -19,8 +19,6 @@ Phase 6.4 核心功能:
from typing import Any
from src.utils.timezone import now_taipei
from fastapi import APIRouter, HTTPException, status
from pydantic import BaseModel, Field
@@ -30,6 +28,7 @@ from src.models.approval import ApprovalRequestResponse
from src.models.incident import Incident, IncidentStatus, Severity
from src.services.decision_manager import get_decision_manager
from src.services.proposal_service import get_proposal_service
from src.utils.timezone import now_taipei
router = APIRouter(prefix="/incidents", tags=["Incidents"])
logger = get_logger("awoooi.incidents")
@@ -417,7 +416,6 @@ async def submit_feedback(
Raises:
HTTPException: 404 事件不存在
"""
from datetime import datetime
from sqlalchemy import select
@@ -531,7 +529,6 @@ async def debug_resolve_incident(incident_id: str) -> dict[str, Any]:
DEBUG: 直接更新 Incident 狀態為 RESOLVED
用於測試 resolve_incident_after_approval 邏輯
"""
from datetime import datetime
from sqlalchemy import select
@@ -653,7 +650,6 @@ async def sync_incidents_from_approvals() -> SyncResult:
"""
掃描所有 pending Approvals為缺少 Incident 的補建
"""
from datetime import datetime
from uuid import UUID
from src.models.incident import Signal

View File

@@ -18,20 +18,19 @@ import uuid
import httpx
import structlog
from fastapi import APIRouter, BackgroundTasks, HTTPException, Request
from pydantic import BaseModel
from src.utils.timezone import now_taipei_iso
from src.services.telegram_gateway import get_telegram_gateway
from src.services.approval_db import get_approval_service
from src.models.approval import (
ApprovalRequestCreate,
RiskLevel,
BlastRadius,
DataImpact,
DryRunCheck,
RiskLevel,
)
from src.services.approval_db import get_approval_service
from src.services.telegram_gateway import get_telegram_gateway
from src.utils.timezone import now_taipei_iso
logger = structlog.get_logger(__name__)

View File

@@ -26,8 +26,6 @@ import hashlib
import hmac
from typing import Literal
from src.utils.timezone import now_taipei
from fastapi import APIRouter, BackgroundTasks, Header, HTTPException, Request, status
from pydantic import BaseModel, Field
@@ -51,6 +49,7 @@ from src.services.openclaw import get_openclaw
# Phase 5: Telegram Gateway (行動戰情室)
from src.services.telegram_gateway import TelegramGatewayError, get_telegram_gateway
from src.utils.timezone import now_taipei
router = APIRouter(prefix="/webhooks", tags=["Webhooks"])
logger = get_logger("awoooi.webhooks")

View File

@@ -14,12 +14,12 @@ Phase 3.3: 商業變現能力 - Day-1 ROI
import logging
from dataclasses import dataclass, field
from datetime import timedelta
from src.utils.timezone import now_taipei
from datetime import datetime, timedelta
from enum import Enum
from typing import Literal
from src.utils.timezone import now_taipei
logger = logging.getLogger(__name__)

View File

@@ -18,13 +18,13 @@ import re
import uuid
from dataclasses import dataclass, field
from datetime import datetime
from src.utils.timezone import now_taipei
from enum import Enum
from typing import Any
import httpx
from src.utils.timezone import now_taipei
logger = logging.getLogger(__name__)

View File

@@ -21,7 +21,6 @@ Supported Operations:
import asyncio
import time
from dataclasses import dataclass
from src.utils.timezone import now_taipei, now_taipei_iso
from enum import Enum
from pathlib import Path
from typing import Any
@@ -32,6 +31,7 @@ from src.core.config import settings
from src.db.base import get_db_context
from src.db.models import AuditLog
from src.models.approval import ApprovalRequest
from src.utils.timezone import now_taipei
logger = structlog.get_logger(__name__)

View File

@@ -12,11 +12,11 @@ Phase 6: leWOOOgo Output Plugins
from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from datetime import datetime
from src.utils.timezone import now_taipei
from enum import Enum
from typing import Any
from src.utils.timezone import now_taipei
class NotificationStatus(str, Enum):
"""通知狀態"""

View File

@@ -23,9 +23,9 @@ import json
import random
import re
import time
import httpx
from datetime import datetime
from src.utils.timezone import now_taipei_iso
import httpx
import structlog
from src.core.config import settings
@@ -34,6 +34,7 @@ from src.models.ai import (
OpenClawDecision,
)
from src.services.signoz_client import GoldMetrics, get_signoz_client
from src.utils.timezone import now_taipei_iso
logger = structlog.get_logger(__name__)

View File

@@ -6,7 +6,7 @@ AWOOOI - 時區工具
🔴 HARD RULE: 全系統使用台北時區,禁止 UTC
"""
from datetime import datetime, timezone, timedelta
from datetime import UTC, 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=timezone.utc)
dt = dt.replace(tzinfo=UTC)
return dt.astimezone(TAIPEI_TZ)