| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- from __future__ import annotations
- from datetime import datetime
- from typing import Any
- from pydantic import BaseModel, Field
- from app.schemas.common import ORMModel
- class KnowledgeItemCreate(BaseModel):
- mine_id: str | None = None
- document_id: str | None = None
- code: str | None = None
- title: str
- knowledge_type: str
- category: str = ""
- source_type: str = "manual"
- source_ref: str = ""
- content: str
- summary: str = ""
- tags: list[str] = Field(default_factory=list)
- status: str = "published"
- version: str = "V1.0"
- confidence: float | None = None
- metadata: dict = Field(default_factory=dict)
- class KnowledgeItemRead(ORMModel):
- id: str
- mine_id: str | None
- document_id: str | None
- code: str | None
- title: str
- knowledge_type: str
- category: str
- source_type: str
- source_ref: str
- content: str
- summary: str
- tags: list
- status: str
- version: str
- confidence: float | None
- is_verified: bool
- verified_by: str
- metadata: dict = Field(validation_alias="metadata_json")
- created_at: datetime
- updated_at: datetime
- class KnowledgeSearchRequest(BaseModel):
- query: str
- mine_id: str | None = None
- knowledge_type: str | None = None
- category: str | None = None
- limit: int = Field(default=10, ge=1, le=50)
- class KnowledgeSearchHit(BaseModel):
- item: KnowledgeItemRead
- score: float = 0
- highlight: str = ""
- class KnowledgeSearchResponse(BaseModel):
- query: str
- total: int
- items: list[KnowledgeSearchHit]
- class KnowledgeServiceStatus(BaseModel):
- available: bool = False
- base_url: str = ""
- version: str = ""
- mode: str = ""
- status: str = ""
- total_notes: int = 0
- total_chunks: int = 0
- embedding_model: str = ""
- semantic_enabled: bool = False
- last_indexed: str | None = None
- error: str = ""
- class KnowledgeCategoryStat(BaseModel):
- key: str
- name: str
- count: int = 0
- description: str = ""
- available: bool = True
- class KnowledgeOverviewResponse(BaseModel):
- service: KnowledgeServiceStatus
- total_notes: int = 0
- total_chunks: int = 0
- category_counts: list[KnowledgeCategoryStat] = Field(default_factory=list)
- search_mode: str = "keyword"
- min_score: float = 0
- min_match_ratio: float = 0
- last_indexed: str | None = None
- average_response_ms: float | None = None
- class KnowledgeCatalogItem(BaseModel):
- note_id: str
- title: str
- category: str = "other"
- category_name: str = "其他"
- tags: list[str] = Field(default_factory=list)
- aliases: list[str] = Field(default_factory=list)
- file_path: str = ""
- updated: str = ""
- chunk_count: int = 0
- confidence: str = ""
- status: str = ""
- version: str = ""
- class KnowledgeCatalogResponse(BaseModel):
- items: list[KnowledgeCatalogItem]
- total: int
- page: int
- page_size: int
- service: KnowledgeServiceStatus
- class KnowledgeNoteChunk(BaseModel):
- chunk_id: str = ""
- heading: str = ""
- content: str = ""
- class KnowledgeNoteDetail(KnowledgeCatalogItem):
- full_content: str = ""
- links: list[Any] = Field(default_factory=list)
- chunks: list[KnowledgeNoteChunk] = Field(default_factory=list)
- class KnowledgeAskRequest(BaseModel):
- question: str = Field(min_length=1)
- top_k: int = Field(default=5, ge=1, le=20)
- search_mode: str | None = None
- category: str | None = None
- tag: str | None = None
- generate_answer: bool = True
- class KnowledgeSource(BaseModel):
- citation_index: int = 0
- note_id: str = ""
- title: str
- file_path: str = ""
- score: float = 0
- heading: str = ""
- snippet: str = ""
- category: str = "other"
- category_name: str = "其他"
- class KnowledgeAskResponse(BaseModel):
- question: str
- answer: str
- answer_status: str
- answer_model: str = ""
- generation_enabled: bool = True
- steps: list[str] = Field(default_factory=list)
- sources: list[KnowledgeSource] = Field(default_factory=list)
- requested_mode: str = "keyword"
- search_mode: str = "keyword"
- retrieval_ms: float = 0
- generation_ms: float = 0
- context_chars: int = 0
- latency_ms: float = 0
- total_candidates: int = 0
- degraded: bool = False
- class KnowledgeGraphNode(BaseModel):
- id: str
- label: str
- sub_label: str = ""
- node_type: str
- value: int = 0
- sample_notes: list[str] = Field(default_factory=list)
- x: float
- y: float
- class KnowledgeGraphEdge(BaseModel):
- source: str
- target: str
- relation: str = ""
- weight: int = 1
- class KnowledgeGraphResponse(BaseModel):
- topic: str
- nodes: list[KnowledgeGraphNode] = Field(default_factory=list)
- edges: list[KnowledgeGraphEdge] = Field(default_factory=list)
|