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:
@@ -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",
|
||||
]
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user