"""资料导入 API schema(api-spec §8)。""" from typing import Any from pydantic import BaseModel, Field class CreateImportRequest(BaseModel): """JSON 提交导入(粘贴文本 / 结构化消息 / 手动设定)。""" material_type: str = Field(description="资料类型,取值见契约字典 §10.1。") format: str = Field(default="text", description="格式:text / json / markdown 等。") content: str = Field(min_length=1, description="资料正文。") title: str | None = Field(default=None, description="可选标题。") source_note: str | None = Field(default=None, description="资料来源说明。") class ImportItemResponse(BaseModel): id: str = Field(description="条目 ID,前缀 import_item_。") import_job_id: str = Field(description="所属导入任务 ID。") item_type: str = Field(description="条目类型,契约字典 §10.4。") role: str = Field(description="条目角色,契约字典 §10.5。") sequence: int = Field(description="条目序号。") content: str = Field(description="条目正文。") metadata: dict[str, Any] = Field(default_factory=dict, description="条目附加元数据。") created_at: str = Field(description="创建时间,UTC ISO 8601 字符串。") class ImportJobResponse(BaseModel): id: str = Field(description="导入任务 ID,前缀 import_。") character_id: str = Field(description="所属人物 ID。") material_type: str = Field(description="资料类型。") source_type: str = Field(description="导入来源类型,契约字典 §10.2。") title: str | None = Field(default=None) status: str = Field(description="任务状态,契约字典 §10.3。") format: str = Field(description="资料格式。") media_type: str | None = Field(default=None) mime_type: str | None = Field(default=None) item_count: int = Field(description="解析出的条目数。") consent_status: str = Field(description="授权状态。") usage_scope: str = Field(description="用途范围。") error_code: str | None = Field(default=None) error_message: str | None = Field(default=None) created_at: str = Field(description="创建时间,UTC ISO 8601 字符串。") updated_at: str = Field(description="更新时间,UTC ISO 8601 字符串。")