47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
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
|