from datetime import datetime from pydantic import AwareDatetime, Field, HttpUrl from app.schemas.catalog import Body, Category, Input, Patch, PositiveId, Read, Status, Title class KnowledgeCreate(Input): title: Title category: Category = "未分类" content: Body source_url: HttpUrl | None = Field(default=None, max_length=1000) source_id: PositiveId | None = None document_id: PositiveId | None = None collected_at: AwareDatetime | None = None class KnowledgeUpdate(Patch): title: Title | None = None category: Category | None = None content: Body | None = None source_url: HttpUrl | None = Field(default=None, max_length=1000) source_id: PositiveId | None = None document_id: PositiveId | None = None collected_at: AwareDatetime | None = None class KnowledgeReview(Input): expected_version: PositiveId verification_status: Status reviewer: str = Field(min_length=1, max_length=100) verification_notes: str = Field(min_length=1, max_length=10_000) class KnowledgeRead(Read): title: str category: str content: str source_url: str | None verification_status: Status source_id: int | None document_id: int | None collected_at: datetime | None reviewer: str | None reviewed_at: datetime | None verification_notes: str | None