feat: 完善知识库后端 API

- 添加 KnowledgeHandler 处理知识库请求
- 注册知识库 CRUD 路由
- 添加文档上传、删除、解析、预览接口
- 更新数据库模型和迁移

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-08 20:34:15 +08:00
parent e18e34b065
commit 11de8c916a
4 changed files with 385 additions and 35 deletions

View File

@@ -70,12 +70,13 @@ func main() {
}
// 3. 自动迁移表
db.AutoMigrate(&model.DatabaseInfo{}, &model.SubTableInfo{}, &model.ModelInfo{})
db.AutoMigrate(&model.DatabaseInfo{}, &model.SubTableInfo{}, &model.ModelInfo{}, &model.KnowledgeBase{}, &model.KnowledgeDocument{})
// 4. 初始化 Repository
dbRepo := repository.NewDatabaseRepository(db)
subTableRepo := repository.NewSubTableRepository(db)
modelRepo := repository.NewModelRepository(db)
knowledgeRepo := repository.NewKnowledgeRepository(db)
// 5. 初始化 Service
dbService := service.NewDatabaseService(dbRepo, subTableRepo)
@@ -86,6 +87,7 @@ func main() {
if err != nil {
log.Printf("Warning: Failed to initialize upload service: %v (files will not be available)", err)
}
knowledgeService := service.NewKnowledgeService(knowledgeRepo, modelRepo, uploadService, cfg.PythonServiceURL)
// 6. 初始化 Handler
dbHandler := handler.NewDatabaseHandler(dbService)
@@ -93,6 +95,7 @@ func main() {
neo4jHandler := handler.NewNeo4jHandler(neo4jService)
modelHandler := handler.NewModelHandler(modelService)
systemHandler := handler.NewSystemHandler()
knowledgeHandler := handler.NewKnowledgeHandler(knowledgeService)
var uploadHandler *handler.UploadHandler
if uploadService != nil {
uploadHandler = handler.NewUploadHandler(uploadService)
@@ -185,6 +188,22 @@ func main() {
modelGroup.DELETE("/:id", modelHandler.Delete)
}
// 知识库管理模块
knowledgeGroup := r.Group("/api/knowledge")
{
knowledgeGroup.POST("/create", knowledgeHandler.Create)
knowledgeGroup.GET("/list", knowledgeHandler.List)
knowledgeGroup.GET("/:id", knowledgeHandler.GetByID)
knowledgeGroup.PUT("/:id", knowledgeHandler.Update)
knowledgeGroup.DELETE("/:id", knowledgeHandler.Delete)
// 文档管理
knowledgeGroup.GET("/:id/documents", knowledgeHandler.ListDocuments)
knowledgeGroup.POST("/:id/documents", knowledgeHandler.UploadDocument)
knowledgeGroup.DELETE("/:id/documents/:doc_id", knowledgeHandler.DeleteDocument)
knowledgeGroup.POST("/:id/documents/:doc_id/reparse", knowledgeHandler.ReparseDocument)
knowledgeGroup.GET("/:id/documents/:doc_id/preview", knowledgeHandler.GetDocumentPreview)
}
// 系统信息模块
r.GET("/system/info", systemHandler.GetSystemInfo)
@@ -195,8 +214,8 @@ func main() {
r.Static("/files", cfg.UploadLocalPath)
}
// 上传路由
r.POST("/upload", uploadHandler.Upload)
r.DELETE("/upload/:filename", uploadHandler.Delete)
r.POST("/api/file_upload", uploadHandler.Upload)
r.DELETE("/api/file_upload/:filename", uploadHandler.Delete)
}
// 8. 启动服务