"""
Repository Layer - 資料存取抽象層
==================================
Phase 16 R3: 抽取 Repository 層

設計原則:
- Protocol 介面定義 (DI 用)
- CRUD 操作封裝
- Service 層不直接碰 DB/Redis

版本: v1.0
建立: 2026-03-26 (台北時區)
建立者: Claude Code (Phase 16 架構重構)
"""

from src.repositories.approval_repository import (
    ApprovalDBRepository,
    get_approval_repository,
)
from src.repositories.incident_repository import (
    IncidentDBRepository,
    get_incident_repository,
)
from src.repositories.interfaces import (
    IApprovalRepository,
    IIncidentRepository,
    ILearningRepository,
    IMetricsRepository,
    ITimelineRepository,
)
from src.repositories.learning_repository import (
    LearningRepository,
    get_learning_repository,
)
from src.repositories.metrics_repository import (
    MetricsDBRepository,
    get_metrics_repository,
)

__all__ = [
    # Interfaces
    "IApprovalRepository",
    "IIncidentRepository",
    "ILearningRepository",
    "IMetricsRepository",
    "ITimelineRepository",
    # Implementations
    "ApprovalDBRepository",
    "IncidentDBRepository",
    "LearningRepository",
    "MetricsDBRepository",
    # Getters
    "get_approval_repository",
    "get_incident_repository",
    "get_learning_repository",
    "get_metrics_repository",
]
