fix(lint): 修復 import 排序與未使用 import

- __init__.py: 按字母順序排列 imports
- incident_approval_service.py: 移除未使用 UUID, ApprovalRequest, Incident, IncidentStatus

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-26 19:25:52 +08:00
parent 35aa690bf1
commit df04254b57
2 changed files with 52 additions and 8 deletions

View File

@@ -44,6 +44,13 @@ from .graph_rag import (
create_mock_topology,
topology_graph,
)
# ADR-027: Incident-Approval 同步架構 (2026-03-26)
from .incident_approval_service import (
IncidentApprovalService,
IncidentApprovalSyncError,
get_incident_approval_service,
reset_incident_approval_service,
)
from .model_registry import (
IModelRegistry,
ModelRegistry,
@@ -52,11 +59,6 @@ from .model_registry import (
get_model_registry,
reset_model_registry,
)
# ADR-027: Incident-Approval 同步架構 (2026-03-26)
from .incident_approval_service import (
IncidentApprovalService,
IncidentApprovalSyncError,
)
from .trust_engine import (
RiskAdjustment,
RiskLevel,
@@ -122,4 +124,6 @@ __all__ = [
# Incident-Approval Sync (ADR-027)
"IncidentApprovalService",
"IncidentApprovalSyncError",
"get_incident_approval_service",
"reset_incident_approval_service",
]

View File

@@ -18,7 +18,7 @@ ADR-027: Incident-Approval 同步架構
from datetime import UTC, datetime
from typing import TYPE_CHECKING
from uuid import UUID, uuid4
from uuid import uuid4
import structlog
from redis.exceptions import RedisError
@@ -34,8 +34,7 @@ from src.core.constants import (
)
from src.core.unit_of_work import UnitOfWork
from src.db.models import ApprovalRecord, IncidentRecord
from src.models.approval import ApprovalRequest, ApprovalRequestCreate, ApprovalStatus
from src.models.incident import Incident, IncidentStatus
from src.models.approval import ApprovalRequestCreate, ApprovalStatus
if TYPE_CHECKING:
from redis.asyncio import Redis
@@ -423,3 +422,44 @@ class IncidentApprovalService:
select(IncidentRecord).where(IncidentRecord.id == incident_id)
)
return result.scalar_one_or_none()
# =============================================================================
# Factory Function (Dependency Injection)
# =============================================================================
_incident_approval_service: IncidentApprovalService | None = None
def get_incident_approval_service() -> IncidentApprovalService:
"""
取得 IncidentApprovalService 單例
使用方式:
service = get_incident_approval_service()
await service.on_approval_status_change(approval_id, "approved")
Note:
- 使用全域 session factory 和 redis client
- 首次呼叫時初始化,後續重用
"""
global _incident_approval_service
if _incident_approval_service is None:
from src.core.redis_client import get_redis
from src.db.base import get_session_factory
_incident_approval_service = IncidentApprovalService(
session_factory=get_session_factory(),
redis_client=get_redis(),
)
return _incident_approval_service
def reset_incident_approval_service() -> None:
"""
重置 IncidentApprovalService 單例 (用於測試)
"""
global _incident_approval_service
_incident_approval_service = None