fix(deps+startup): drain3/statsmodels 補入 pyproject + warmup skip 舊資料
All checks were successful
CD Pipeline / build-and-deploy (push) Successful in 17m23s
All checks were successful
CD Pipeline / build-and-deploy (push) Successful in 17m23s
- pyproject.toml: 補 drain3>=0.9.11, statsmodels>=0.14.0, sse-starlette → Docker build 從 pyproject 裝,requirements.txt 的套件之前沒裝進 image → P4 LogAnomalyDetector 400次 drain3_not_available 告警排除 - main.py: working_memory warmup per-record try/except → 舊 incident 含非法 source (node-exporter) → 跳過,不 crash 整個 warmup 2026-04-15 ogt + Claude Sonnet 4.6(亞太) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,10 @@ dependencies = [
|
||||
"claude-agent-sdk>=0.1.50",
|
||||
# Sprint 5.1 2026-04-08 Claude Sonnet 4.6: Service Registry YAML 讀取
|
||||
"pyyaml>=6.0.0",
|
||||
# Phase 4 ADR-084: 動態異常偵測 (2026-04-15 ogt: 補齊缺失依賴)
|
||||
"statsmodels>=0.14.0",
|
||||
"drain3>=0.9.11",
|
||||
"sse-starlette>=1.8.0",
|
||||
]
|
||||
|
||||
# [tool.uv.sources]
|
||||
|
||||
@@ -259,25 +259,29 @@ async def lifespan(_app: FastAPI) -> AsyncGenerator[None, None]:
|
||||
|
||||
restored = 0
|
||||
for record in records:
|
||||
from src.models.incident import Incident
|
||||
incident = Incident(
|
||||
incident_id=record.incident_id,
|
||||
status=record.status,
|
||||
severity=record.severity,
|
||||
signals=record.signals or [],
|
||||
affected_services=record.affected_services or [],
|
||||
decision_chain=record.decision_chain,
|
||||
proposal_ids=record.proposal_ids or [],
|
||||
outcome=record.outcome,
|
||||
created_at=record.created_at,
|
||||
updated_at=record.updated_at,
|
||||
resolved_at=record.resolved_at,
|
||||
closed_at=record.closed_at,
|
||||
ttl_days=record.ttl_days,
|
||||
vectorized=record.vectorized,
|
||||
)
|
||||
if await incident_service.save_to_working_memory(incident):
|
||||
restored += 1
|
||||
try:
|
||||
from src.models.incident import Incident
|
||||
incident = Incident(
|
||||
incident_id=record.incident_id,
|
||||
status=record.status,
|
||||
severity=record.severity,
|
||||
signals=record.signals or [],
|
||||
affected_services=record.affected_services or [],
|
||||
decision_chain=record.decision_chain,
|
||||
proposal_ids=record.proposal_ids or [],
|
||||
outcome=record.outcome,
|
||||
created_at=record.created_at,
|
||||
updated_at=record.updated_at,
|
||||
resolved_at=record.resolved_at,
|
||||
closed_at=record.closed_at,
|
||||
ttl_days=record.ttl_days,
|
||||
vectorized=record.vectorized,
|
||||
)
|
||||
if await incident_service.save_to_working_memory(incident):
|
||||
restored += 1
|
||||
except Exception:
|
||||
# 舊資料 source 值不合法(node-exporter 等)→ 跳過
|
||||
pass
|
||||
|
||||
logger.info("working_memory_warmed_up", restored=restored, total=len(records))
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user