mirror of
https://github.com/langgenius/dify.git
synced 2026-05-28 12:53:23 +08:00
97 lines
2.2 KiB
Python
97 lines
2.2 KiB
Python
from datetime import datetime
|
|
from typing import Any
|
|
|
|
from pydantic import field_validator
|
|
|
|
from fields.base import ResponseModel
|
|
from libs.helper import to_timestamp
|
|
|
|
|
|
class HitTestingQuery(ResponseModel):
|
|
content: str
|
|
|
|
|
|
class HitTestingDocument(ResponseModel):
|
|
id: str
|
|
data_source_type: str
|
|
name: str
|
|
doc_type: str | None
|
|
doc_metadata: Any | None
|
|
|
|
@field_validator("data_source_type", "doc_type", mode="before")
|
|
@classmethod
|
|
def _normalize_enum_fields(cls, value: Any) -> Any:
|
|
return _normalize_enum(value)
|
|
|
|
|
|
class HitTestingSegment(ResponseModel):
|
|
id: str
|
|
position: int
|
|
document_id: str
|
|
content: str
|
|
sign_content: str | None
|
|
answer: str | None
|
|
word_count: int
|
|
tokens: int
|
|
keywords: list[str]
|
|
index_node_id: str | None
|
|
index_node_hash: str | None
|
|
hit_count: int
|
|
enabled: bool
|
|
disabled_at: int | None
|
|
disabled_by: str | None
|
|
status: str
|
|
created_by: str
|
|
created_at: int
|
|
indexing_at: int | None
|
|
completed_at: int | None
|
|
error: str | None
|
|
stopped_at: int | None
|
|
document: HitTestingDocument
|
|
|
|
@field_validator("disabled_at", "created_at", "indexing_at", "completed_at", "stopped_at", mode="before")
|
|
@classmethod
|
|
def _normalize_timestamp(cls, value: datetime | int | None) -> int | None:
|
|
return to_timestamp(value)
|
|
|
|
@field_validator("status", mode="before")
|
|
@classmethod
|
|
def _normalize_enum_fields(cls, value: Any) -> Any:
|
|
return _normalize_enum(value)
|
|
|
|
|
|
class HitTestingChildChunk(ResponseModel):
|
|
id: str
|
|
content: str
|
|
position: int
|
|
score: float
|
|
|
|
|
|
class HitTestingFile(ResponseModel):
|
|
id: str
|
|
name: str
|
|
size: int
|
|
extension: str
|
|
mime_type: str
|
|
source_url: str
|
|
|
|
|
|
class HitTestingRecord(ResponseModel):
|
|
segment: HitTestingSegment
|
|
child_chunks: list[HitTestingChildChunk]
|
|
score: float | None
|
|
tsne_position: Any | None
|
|
files: list[HitTestingFile]
|
|
summary: str | None
|
|
|
|
|
|
class HitTestingResponse(ResponseModel):
|
|
query: HitTestingQuery
|
|
records: list[HitTestingRecord]
|
|
|
|
|
|
def _normalize_enum(value: Any) -> Any:
|
|
if isinstance(value, str) or value is None:
|
|
return value
|
|
return getattr(value, "value", value)
|