"""Ex SDK 本地演示。无网络请求、无第三方依赖。MIT Example License."""
from dataclasses import dataclass
from uuid import uuid4


@dataclass(frozen=True)
class TaskResult:
    """统一的任务返回结构。"""
    text: str
    trace_id: str
    status: str = "demo_completed"


class ExClient:
    """演示客户端；正式 SDK 应在此实现鉴权与远程请求。"""

    def __init__(self, api_key: str = "demo-key") -> None:
        if not api_key:
            raise ValueError("api_key 不能为空")
        self.api_key = api_key

    def run(self, task: str) -> TaskResult:
        """返回本地模拟结果，不上传 task 或 api_key。"""
        if not task.strip():
            raise ValueError("task 不能为空")
        return TaskResult(
            text=f"[Ex 本地演示] 已接收任务：{task.strip()}",
            trace_id=f"demo-{uuid4().hex[:12]}",
        )


if __name__ == "__main__":
    client = ExClient()
    result = client.run("总结这份文档的三个要点")
    print(result.text)
    print(f"状态：{result.status} / 追踪号：{result.trace_id}")
