mirror of https://github.com/langgenius/dify.git
70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field, field_validator
|
|
|
|
|
|
def _to_timestamp(value: datetime | int | None) -> int | None:
|
|
if isinstance(value, datetime):
|
|
return int(value.timestamp())
|
|
return value
|
|
|
|
|
|
class ResponseModel(BaseModel):
|
|
model_config = ConfigDict(
|
|
from_attributes=True,
|
|
extra="ignore",
|
|
populate_by_name=True,
|
|
serialize_by_alias=True,
|
|
protected_namespaces=(),
|
|
)
|
|
|
|
|
|
class Annotation(ResponseModel):
|
|
id: str
|
|
question: str | None = None
|
|
answer: str | None = Field(default=None, validation_alias="content")
|
|
hit_count: int | None = None
|
|
created_at: int | None = None
|
|
|
|
@field_validator("created_at", mode="before")
|
|
@classmethod
|
|
def _normalize_created_at(cls, value: datetime | int | None) -> int | None:
|
|
return _to_timestamp(value)
|
|
|
|
|
|
class AnnotationList(ResponseModel):
|
|
data: list[Annotation]
|
|
has_more: bool
|
|
limit: int
|
|
total: int
|
|
page: int
|
|
|
|
|
|
class AnnotationExportList(ResponseModel):
|
|
data: list[Annotation]
|
|
|
|
|
|
class AnnotationHitHistory(ResponseModel):
|
|
id: str
|
|
source: str | None = None
|
|
score: float | None = None
|
|
question: str | None = None
|
|
created_at: int | None = None
|
|
match: str | None = Field(default=None, validation_alias="annotation_question")
|
|
response: str | None = Field(default=None, validation_alias="annotation_content")
|
|
|
|
@field_validator("created_at", mode="before")
|
|
@classmethod
|
|
def _normalize_created_at(cls, value: datetime | int | None) -> int | None:
|
|
return _to_timestamp(value)
|
|
|
|
|
|
class AnnotationHitHistoryList(ResponseModel):
|
|
data: list[AnnotationHitHistory]
|
|
has_more: bool
|
|
limit: int
|
|
total: int
|
|
page: int
|