增加代码知识库;修复文档处理内容;增加API设置

This commit is contained in:
2026-05-16 20:20:10 +08:00
parent 69b49d28b2
commit 7aa3ce3294
119 changed files with 182273 additions and 793 deletions

View File

@@ -1,4 +1,10 @@
from .api_key import APIKey, APIKeyCreate, APIKeyUpdate, APIKeyInDB
from .model_config import (
ModelConfigCreate,
ModelConfigResponse,
ModelConfigUpdate,
ModelProviderOptionsResponse,
)
from .user import UserBase, UserCreate, UserUpdate, UserResponse
from .token import Token, TokenPayload
from .knowledge import KnowledgeBaseBase, KnowledgeBaseCreate, KnowledgeBaseUpdate, KnowledgeBaseResponse

View File

@@ -0,0 +1,119 @@
from __future__ import annotations
from datetime import datetime
from typing import Any, Dict, List, Optional
from pydantic import BaseModel, Field
class CodeKnowledgeBaseCreate(BaseModel):
name: str = Field(..., min_length=1)
project_path: Optional[str] = None
vector_path: str = Field(..., min_length=1)
metadata_path: str = Field(..., min_length=1)
graph_path: str = Field(..., min_length=1)
class CodeKnowledgeBaseUploadResponse(BaseModel):
id: int
status: str
class CodeKnowledgeBaseResponse(BaseModel):
id: int
name: str
project_path: Optional[str] = None
vector_path: str
metadata_path: str
graph_path: str
status: str
metadata_summary: Optional[Dict[str, Any]] = None
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class CodeQuestionRequest(BaseModel):
question: str = Field(..., min_length=1)
top_k: int = Field(default=6, ge=1, le=20)
min_similarity: float = Field(default=0.0, ge=0.0, le=1.0)
use_llm: bool = True
class CodeQuestionResponse(BaseModel):
answer: str
evidence: List[Dict[str, Any]]
raw_response: Optional[str] = None
class ConsistencyJobCreate(BaseModel):
srs_extraction_id: int
code_kb_id: int
requirement_uids: Optional[List[str]] = None
top_k: int = Field(default=8, ge=1, le=30)
max_call_hops: int = Field(default=2, ge=0, le=4)
min_similarity: float = Field(default=0.55, ge=0.0, le=1.0)
use_llm: bool = True
class ConsistencyJobCreateResponse(BaseModel):
job_id: int
status: str
class AutoConsistencyJobCreateResponse(BaseModel):
job_id: int
status: str
class AutoConsistencyJobStatusResponse(BaseModel):
job_id: int
status: str
error_message: Optional[str] = None
current_step: Optional[str] = None
srs_extraction_id: Optional[int] = None
code_kb_id: Optional[int] = None
consistency_job_id: Optional[int] = None
created_at: datetime
updated_at: datetime
class ConsistencyJobResponse(BaseModel):
id: int
srs_extraction_id: int
code_kb_id: int
status: str
total_requirements: int
completed_requirements: int
output_summary: Optional[Dict[str, Any]] = None
error_message: Optional[str] = None
started_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class ConsistencyResultResponse(BaseModel):
id: int
job_id: int
requirement_uid: str
verdict: str
coverage_score: float
confidence: float
matched_functions: List[Dict[str, Any]]
covered_points: List[str]
missing_points: List[str]
conflict_points: List[str]
call_chain_evidence: List[str]
suggestion: Optional[str] = None
raw_judgment: Optional[Dict[str, Any]] = None
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True

View File

@@ -0,0 +1,57 @@
from datetime import datetime
from typing import Any, Dict, List, Optional
from pydantic import BaseModel, Field
class ModelConfigBase(BaseModel):
name: str
provider: str = "dashscope"
api_base: Optional[str] = None
chat_model: str = "qwen3-max"
embedding_model: str = "text-embedding-v4"
is_active: bool = True
class ModelConfigCreate(ModelConfigBase):
api_key: str = Field(default="")
class ModelConfigUpdate(BaseModel):
name: Optional[str] = None
provider: Optional[str] = None
api_key: Optional[str] = None
api_base: Optional[str] = None
chat_model: Optional[str] = None
embedding_model: Optional[str] = None
is_active: Optional[bool] = None
class ModelConfigResponse(ModelConfigBase):
id: int
user_id: int
has_api_key: bool
api_key_masked: str
last_used_at: Optional[datetime] = None
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class ModelProviderOption(BaseModel):
provider: str
label: str
default_api_base: str
default_chat_model: str
default_embedding_model: str
chat_models: List[str]
embedding_models: List[str]
requires_api_key: bool = True
supports_custom_api_base: bool = True
class ModelProviderOptionsResponse(BaseModel):
providers: List[ModelProviderOption]
defaults: Dict[str, Any]