fix(aiops): preserve alert identity in degraded diagnosis
Some checks failed
CD Pipeline / tests (push) Successful in 1m26s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-04 11:32:31 +08:00
parent d41360d8e7
commit 0bb4773b9e
4 changed files with 220 additions and 7 deletions

View File

@@ -16,7 +16,7 @@ from typing import Any
from uuid import UUID
import structlog
from sqlalchemy import select
from sqlalchemy import select, update
from src.db.base import get_db_context
from src.db.models import ApprovalRecord
@@ -106,8 +106,6 @@ def _record_to_request(record: ApprovalRecord) -> ApprovalRequest:
# B4 fix 2026-04-24 ogt + Claude Sonnet 4.6: 補回 DB 欄位(人工審核路徑讀回必要)
incident_id=getattr(record, "incident_id", None),
matched_playbook_id=getattr(record, "matched_playbook_id", None),
telegram_message_id=getattr(record, "telegram_message_id", None),
telegram_chat_id=getattr(record, "telegram_chat_id", None),
)
@@ -153,7 +151,15 @@ class ApprovalDBRepository(IApprovalRepository):
async def get_pending(self) -> list[ApprovalRequest]:
"""取得所有待審核的 Approval"""
now = datetime.now(UTC)
async with get_db_context() as db:
await db.execute(
update(ApprovalRecord)
.where(ApprovalRecord.status == ApprovalStatus.PENDING)
.where(ApprovalRecord.expires_at < now)
.values(status=ApprovalStatus.EXPIRED, resolved_at=now)
)
result = await db.execute(
select(ApprovalRecord)
.where(ApprovalRecord.status == ApprovalStatus.PENDING)