feat(server): 扩展知识库服务,添加knowledge API端点和schema定义,前端新增knowledge服务模块
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Any
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
@@ -28,17 +29,18 @@ class KnowledgePreviewPageRead(BaseModel):
|
||||
blocks: list[KnowledgePreviewBlockRead] = Field(default_factory=list)
|
||||
|
||||
|
||||
class KnowledgeDocumentRead(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
folder: str
|
||||
tag: str
|
||||
time: str
|
||||
version: str
|
||||
state: str
|
||||
stateTone: str
|
||||
owner: str
|
||||
icon: str
|
||||
class KnowledgeDocumentRead(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
folder: str
|
||||
tag: str
|
||||
time: str
|
||||
version: str
|
||||
stateCode: int = 1
|
||||
state: str
|
||||
stateTone: str
|
||||
owner: str
|
||||
icon: str
|
||||
fileType: str
|
||||
fileTypeLabel: str
|
||||
summary: str
|
||||
@@ -75,6 +77,106 @@ class KnowledgeLibraryRead(BaseModel):
|
||||
documents: list[KnowledgeDocumentRead] = Field(default_factory=list)
|
||||
|
||||
|
||||
class KnowledgeActionResponse(BaseModel):
|
||||
ok: bool = True
|
||||
detail: str
|
||||
class KnowledgeActionResponse(BaseModel):
|
||||
ok: bool = True
|
||||
detail: str
|
||||
|
||||
|
||||
class LlmWikiChunkRead(BaseModel):
|
||||
chunk_id: str
|
||||
title: str
|
||||
content: str
|
||||
source_page: int | None = None
|
||||
word_count: int = 0
|
||||
tags: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class LlmWikiKnowledgeCandidateRead(BaseModel):
|
||||
candidate_id: str
|
||||
title: str
|
||||
content: str
|
||||
domain: str = "expense"
|
||||
scenario: str = "reimbursement_policy"
|
||||
tags: list[str] = Field(default_factory=list)
|
||||
source_document_id: str
|
||||
source_document_name: str
|
||||
source_chunk_ids: list[str] = Field(default_factory=list)
|
||||
evidence: list[str] = Field(default_factory=list)
|
||||
confidence: float = 0.0
|
||||
status: str = "draft"
|
||||
created_by: str = "hermes"
|
||||
created_at: datetime | None = None
|
||||
|
||||
|
||||
class LlmWikiRuleCandidateRead(BaseModel):
|
||||
candidate_id: str
|
||||
source_type: str = "policy_document"
|
||||
template_key: str
|
||||
template_label: str
|
||||
domain: str = "expense"
|
||||
scenario: str = "reimbursement_policy"
|
||||
suggested_rule_name: str
|
||||
summary: str = ""
|
||||
template_sections: dict[str, Any] = Field(default_factory=dict)
|
||||
rule_markdown_draft: str
|
||||
runtime_rule: dict[str, Any] = Field(default_factory=dict)
|
||||
evidence: list[str] = Field(default_factory=list)
|
||||
confidence: float = 0.0
|
||||
source_document_id: str
|
||||
source_document_name: str
|
||||
source_chunk_ids: list[str] = Field(default_factory=list)
|
||||
generated_asset_id: str | None = None
|
||||
generated_asset_code: str | None = None
|
||||
generated_version: str | None = None
|
||||
validation_status: str = "valid"
|
||||
validation_errors: list[str] = Field(default_factory=list)
|
||||
status: str = "draft"
|
||||
created_by: str = "hermes"
|
||||
created_at: datetime | None = None
|
||||
|
||||
|
||||
class LlmWikiDocumentRead(BaseModel):
|
||||
document_id: str
|
||||
document_name: str
|
||||
folder: str
|
||||
document_version: str = "v1.0"
|
||||
checksum: str = ""
|
||||
extracted_text_path: str
|
||||
chunk_count: int = 0
|
||||
knowledge_candidate_count: int = 0
|
||||
rule_candidate_count: int = 0
|
||||
updated_at: datetime | None = None
|
||||
|
||||
|
||||
class LlmWikiDocumentDetailRead(LlmWikiDocumentRead):
|
||||
knowledge_summary_markdown: str = ""
|
||||
chunks: list[LlmWikiChunkRead] = Field(default_factory=list)
|
||||
knowledge_candidates: list[LlmWikiKnowledgeCandidateRead] = Field(default_factory=list)
|
||||
rule_candidates: list[LlmWikiRuleCandidateRead] = Field(default_factory=list)
|
||||
|
||||
|
||||
class LlmWikiIndexRead(BaseModel):
|
||||
documents: list[LlmWikiDocumentRead] = Field(default_factory=list)
|
||||
sync_run_count: int = 0
|
||||
|
||||
|
||||
class LlmWikiSyncWrite(BaseModel):
|
||||
folder: str = Field(default="报销制度", min_length=1)
|
||||
document_ids: list[str] = Field(default_factory=list)
|
||||
force: bool = False
|
||||
|
||||
|
||||
class LlmWikiSyncRead(BaseModel):
|
||||
ok: bool = True
|
||||
run_id: str
|
||||
folder: str
|
||||
document_count: int = 0
|
||||
knowledge_candidate_count: int = 0
|
||||
rule_candidate_count: int = 0
|
||||
generated_rule_count: int = 0
|
||||
generated_rule_asset_ids: list[str] = Field(default_factory=list)
|
||||
summary: str = ""
|
||||
|
||||
|
||||
class LlmWikiSummaryUpdateWrite(BaseModel):
|
||||
knowledge_summary_markdown: str = Field(min_length=1)
|
||||
|
||||
Reference in New Issue
Block a user