refactor(api): Phase 17 metrics.py Router 層違規修復
移除 Router 層直接 DB 存取,遵循 leWOOOgo 積木化原則: - 新增 IMetricsRepository Protocol (interfaces.py) - 新增 MetricsDBRepository 封裝 DB 查詢 - 新增 MetricsService 封裝業務邏輯 - Router 層只做 HTTP 轉發 架構: Router → Service → Repository → PostgreSQL Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -125,3 +125,49 @@ class ITimelineRepository(Protocol):
|
||||
) -> list[dict]:
|
||||
"""取得最近的 Timeline 事件"""
|
||||
...
|
||||
|
||||
|
||||
@runtime_checkable
|
||||
class IMetricsRepository(Protocol):
|
||||
"""
|
||||
Metrics Repository Protocol
|
||||
|
||||
職責: Metrics 相關 DB 查詢 (AI Success Rate)
|
||||
實作: MetricsDBRepository (PostgreSQL)
|
||||
|
||||
版本: v1.0
|
||||
建立: 2026-03-26 (台北時區)
|
||||
建立者: Claude Code (Phase 17 技術債修復)
|
||||
"""
|
||||
|
||||
async def get_ai_success_rate(
|
||||
self,
|
||||
hours: int = 24,
|
||||
) -> tuple[float, int, int]:
|
||||
"""
|
||||
計算 AI 提案成功執行率
|
||||
|
||||
Args:
|
||||
hours: 統計時間範圍 (小時)
|
||||
|
||||
Returns:
|
||||
(success_rate_percent, executed_count, total_count)
|
||||
"""
|
||||
...
|
||||
|
||||
async def get_ai_success_trend(
|
||||
self,
|
||||
hours: int = 24,
|
||||
points: int = 10,
|
||||
) -> list[float]:
|
||||
"""
|
||||
取得 AI 成功率趨勢 (Sparkline 用)
|
||||
|
||||
Args:
|
||||
hours: 統計時間範圍 (小時)
|
||||
points: 趨勢點數量
|
||||
|
||||
Returns:
|
||||
list[float]: 每小時成功率列表 (由舊到新)
|
||||
"""
|
||||
...
|
||||
|
||||
Reference in New Issue
Block a user