Phase 2.4: Knowledge Base Admin API - CRUD, stats, external service integration

This commit is contained in:
qyyfw committed 2026-07-02 22:39:10 +08:00
1 parent a682dc687e
commit 0b88db956f
3 files changed
+1355 -1

No files matched your search

File diff suppressed because it is too large. Load diff
+22
View File
@@ -165,6 +165,12 @@ class KnowledgeBase(Base):
knowledge_graph_count = Column(Integer, default=0) knowledge_graph_count = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.now) created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now) updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
is_official = Column(Boolean, default=False)
status = Column(String(20), default="active")
external_service_id = Column(String(36), default=None)
external_id = Column(String(100), default=None)
external_sync_status = Column(String(20), default="none")
external_config = Column(JSON, default=None)
class KnowledgeDirectory(Base): class KnowledgeDirectory(Base):
@@ -935,3 +941,19 @@ class TeamSharedSkill(Base):
__table_args__ = ( __table_args__ = (
UniqueConstraint("team_id", "skill_id", name="uk_tss_team_skill"), UniqueConstraint("team_id", "skill_id", name="uk_tss_team_skill"),
) )
class ExternalKBService(Base):
"""外部知识库服务配置"""
__tablename__ = "external_kb_services"
id = Column(String(36), primary_key=True, default=gen_uuid)
name = Column(String(200), nullable=False)
service_type = Column(String(20), nullable=False)
api_url = Column(String(500), nullable=False)
api_key = Column(String(255), default="")
config = Column(JSON, default=None)
is_enabled = Column(Boolean, default=True)
status = Column(String(20), default="disconnected")
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
+3 -1
View File
@@ -16,7 +16,7 @@ from datetime import datetime
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))␍ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))␍
␍ ␍
from app.api import auth, chat, channels, knowledge, market, token_usage, payment, profile, notifications, assets, evolution␍ from app.api import auth, chat, channels, knowledge, market, token_usage, payment, profile, notifications, assets, evolution␍
from app.api.admin import dashboard, users, models, settings, payment_admin, services, membership_admin, ads, market_admin, logs, skills_admin␍ from app.api.admin import dashboard, users, models, settings, payment_admin, services, membership_admin, ads, market_admin, logs, skills_admin, agents_admin, knowledge_admin
from app.config import setup_file_logging, SLOW_REQUEST_THRESHOLD␍ from app.config import setup_file_logging, SLOW_REQUEST_THRESHOLD␍
from app.database import SessionLocal␍ from app.database import SessionLocal␍
from app.models import OperationLog as OperationLogModel, TokenUsageLog as TokenUsageLogModel␍ from app.models import OperationLog as OperationLogModel, TokenUsageLog as TokenUsageLogModel␍
@@ -208,6 +208,8 @@ app.include_router(ads.router, prefix="/app/api/admin/ads", tags=["后台-广告
app.include_router(market_admin.router, prefix="/app/api/admin/market", tags=["后台-应用审核"])␍ app.include_router(market_admin.router, prefix="/app/api/admin/market", tags=["后台-应用审核"])␍
app.include_router(logs.router, prefix="/app/api/admin/logs", tags=["后台-日志风控"])␍ app.include_router(logs.router, prefix="/app/api/admin/logs", tags=["后台-日志风控"])␍
app.include_router(skills_admin.router, prefix="/app/api/admin/skills", tags=["后台-技能管理"])␍ app.include_router(skills_admin.router, prefix="/app/api/admin/skills", tags=["后台-技能管理"])␍
app.include_router(agents_admin, knowledge_admin.router, prefix="/app/api/admin/agents", tags=["后台-Agent管理"])
app.include_router(knowledge_admin.router, prefix="/app/api/admin/knowledge", tags=["后台-知识库管理"])
␍ ␍
␍ ␍
@app.get("/app/api/health")␍ @app.get("/app/api/health")␍