"""Domain errors for exploratory evaluation (不依赖 fastapi).

领域违规用类型化异常表达，router 统一映射 HTTP 状态码：
NotFound → 404，Guardrail → 409（reason 即给常驻代理的反馈），
Channel → 502。
"""


class ExplorationNotFoundError(Exception):
    """探索域实体（活动 / 评测对象 / 会话）不存在。"""


class ExplorationGuardrailError(Exception):
    """平台账本规则违规（状态机 / 预算），拒绝本身即反馈。"""

    def __init__(self, reason: str):
        self.reason = reason
        super().__init__(reason)


class ExplorationChannelError(Exception):
    """评测对象通道收发失败。"""

    def __init__(self, reason: str):
        self.reason = reason
        super().__init__(reason)
