refactor: 将客服后端重构为宿主可嵌入模块
- 注入数据库、运行时配置、统一响应、文件存储和平台 AI 能力,补充业务读写工具与客户快捷操作契约。 - 移除模块内重复的组织、客户、工单、标签、技能、旧工作流、MCP 和迁移实现,将身份权限与业务主体交由宿主管理。 - 使用 libSQL 重构向量存储,并完善图片消息、访客身份、排队调度、企业微信和支持聊天页面。 - 统一 HTTP、DTO 与 WebSocket 的 snake_case 协议,补齐模块初始化、业务动作和公共载荷等回归测试。
This commit is contained in:
@@ -13,6 +13,8 @@ func registerApiChannelRoutes(group *gin.RouterGroup) {
|
||||
}
|
||||
|
||||
func registerApiConversationRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/quick_actions", api.ConversationGetQuick_actions)
|
||||
group.POST("/quick_action", api.ConversationPostQuick_action)
|
||||
group.GET("/:id", api.ConversationGetBy)
|
||||
group.POST("/close", api.ConversationPostClose)
|
||||
group.POST("/create_or_match", api.ConversationPostCreate_or_match)
|
||||
@@ -30,79 +32,22 @@ func registerDashboardDashboardRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/overview", dashboard.DashboardGetOverview)
|
||||
}
|
||||
|
||||
func registerDashboardCompanyRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/:id", dashboard.CompanyGetBy)
|
||||
group.POST("/create", dashboard.CompanyPostCreate)
|
||||
group.POST("/delete", dashboard.CompanyPostDelete)
|
||||
group.Any("/list", dashboard.CompanyAnyList)
|
||||
group.POST("/update", dashboard.CompanyPostUpdate)
|
||||
group.POST("/update_status", dashboard.CompanyPostUpdate_status)
|
||||
}
|
||||
|
||||
func registerDashboardCustomerRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/:id", dashboard.CustomerGetBy)
|
||||
group.POST("/create", dashboard.CustomerPostCreate)
|
||||
group.POST("/delete", dashboard.CustomerPostDelete)
|
||||
group.POST("/list", dashboard.CustomerPostList)
|
||||
group.POST("/save_profile", dashboard.CustomerPostSave_profile)
|
||||
group.POST("/update", dashboard.CustomerPostUpdate)
|
||||
group.POST("/update_status", dashboard.CustomerPostUpdate_status)
|
||||
}
|
||||
|
||||
func registerDashboardCustomerContactRoutes(group *gin.RouterGroup) {
|
||||
group.POST("/create", dashboard.CustomerContactPostCreate)
|
||||
group.POST("/delete", dashboard.CustomerContactPostDelete)
|
||||
group.Any("/list", dashboard.CustomerContactAnyList)
|
||||
group.POST("/update", dashboard.CustomerContactPostUpdate)
|
||||
}
|
||||
|
||||
func registerDashboardTagRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/:id", dashboard.TagGetBy)
|
||||
group.POST("/create", dashboard.TagPostCreate)
|
||||
group.POST("/delete", dashboard.TagPostDelete)
|
||||
group.Any("/list", dashboard.TagAnyList)
|
||||
group.GET("/list_all", dashboard.TagGetList_all)
|
||||
group.POST("/update", dashboard.TagPostUpdate)
|
||||
group.POST("/update_sort", dashboard.TagPostUpdate_sort)
|
||||
group.POST("/update_status", dashboard.TagPostUpdate_status)
|
||||
}
|
||||
|
||||
func registerDashboardConversationRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/:id", dashboard.ConversationGetBy)
|
||||
group.POST("/add_tag", dashboard.ConversationPostAdd_tag)
|
||||
group.POST("/assign", dashboard.ConversationPostAssign)
|
||||
group.POST("/close", dashboard.ConversationPostClose)
|
||||
group.Any("/conversations", dashboard.ConversationAnyConversations)
|
||||
group.POST("/dispatch", dashboard.ConversationPostDispatch)
|
||||
group.POST("/link_customer", dashboard.ConversationPostLink_customer)
|
||||
group.Any("/list", dashboard.ConversationAnyList)
|
||||
group.Any("/message_list", dashboard.ConversationAnyMessage_list)
|
||||
group.POST("/read", dashboard.ConversationPostRead)
|
||||
group.POST("/recall_message", dashboard.ConversationPostRecall_message)
|
||||
group.POST("/remove_tag", dashboard.ConversationPostRemove_tag)
|
||||
group.POST("/send_message", dashboard.ConversationPostSend_message)
|
||||
group.POST("/transfer", dashboard.ConversationPostTransfer)
|
||||
group.POST("/upload_attachment", dashboard.ConversationPostUpload_attachment)
|
||||
group.POST("/upload_image", dashboard.ConversationPostUpload_image)
|
||||
}
|
||||
|
||||
func registerDashboardTicketRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/:id", dashboard.TicketGetBy)
|
||||
group.POST("/assign", dashboard.TicketPostAssign)
|
||||
group.POST("/change_status", dashboard.TicketPostChange_status)
|
||||
group.POST("/create", dashboard.TicketPostCreate)
|
||||
group.POST("/create_from_conversation", dashboard.TicketPostCreate_from_conversation)
|
||||
group.POST("/delete_view", dashboard.TicketPostDelete_view)
|
||||
group.POST("/link_customer", dashboard.TicketPostLink_customer)
|
||||
group.Any("/list", dashboard.TicketAnyList)
|
||||
group.POST("/progress/create", dashboard.TicketPostProgressCreate)
|
||||
group.Any("/progress/list", dashboard.TicketAnyProgressList)
|
||||
group.POST("/save_view", dashboard.TicketPostSave_view)
|
||||
group.Any("/summary", dashboard.TicketAnySummary)
|
||||
group.POST("/update", dashboard.TicketPostUpdate)
|
||||
group.Any("/view_list", dashboard.TicketAnyView_list)
|
||||
}
|
||||
|
||||
func registerDashboardNotificationRoutes(group *gin.RouterGroup) {
|
||||
group.Any("/list", dashboard.NotificationAnyList)
|
||||
group.POST("/mark_all_read", dashboard.NotificationPostMark_all_read)
|
||||
@@ -178,25 +123,6 @@ func registerDashboardAIAgentRoutes(group *gin.RouterGroup) {
|
||||
group.POST("/update_status", dashboard.AIAgentPostUpdate_status)
|
||||
}
|
||||
|
||||
func registerDashboardAIWorkflowRoutes(group *gin.RouterGroup) {
|
||||
group.POST("/create", dashboard.AIWorkflowPostCreate)
|
||||
group.POST("/update", dashboard.AIWorkflowPostUpdate)
|
||||
group.POST("/delete", dashboard.AIWorkflowPostDelete)
|
||||
group.POST("/restore-version", dashboard.AIWorkflowPostRestoreVersion)
|
||||
group.Any("/list", dashboard.AIWorkflowAnyList)
|
||||
group.GET("/node-spec/list", dashboard.AIWorkflowGetNodeSpecList)
|
||||
group.GET("/default-definition", dashboard.AIWorkflowGetDefaultDefinition)
|
||||
group.GET("/template/list", dashboard.AIWorkflowGetTemplateList)
|
||||
group.POST("/validate", dashboard.AIWorkflowPostValidate)
|
||||
group.POST("/publish", dashboard.AIWorkflowPostPublish)
|
||||
group.Any("/run/list", dashboard.AIWorkflowAnyRunList)
|
||||
group.GET("/run/:id", dashboard.AIWorkflowGetRunBy)
|
||||
group.Any("/version/list", dashboard.AIWorkflowAnyVersionList)
|
||||
group.GET("/version/:id", dashboard.AIWorkflowGetVersionBy)
|
||||
group.GET("/:id/usage", dashboard.AIWorkflowGetUsage)
|
||||
group.GET("/:id", dashboard.AIWorkflowGetBy)
|
||||
}
|
||||
|
||||
func registerDashboardAgentRunRoutes(group *gin.RouterGroup) {
|
||||
group.Any("/metrics", dashboard.AgentRunAnyMetrics)
|
||||
group.POST("/evaluate", dashboard.AgentRunPostEvaluate)
|
||||
@@ -216,6 +142,10 @@ func registerDashboardAIConfigRoutes(group *gin.RouterGroup) {
|
||||
group.POST("/update_status", dashboard.AIConfigPostUpdate_status)
|
||||
}
|
||||
|
||||
func registerDashboardPlatformAIRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/status", dashboard.PlatformAIGetStatus)
|
||||
}
|
||||
|
||||
func registerDashboardAssetRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/:id", dashboard.AssetGetBy)
|
||||
group.POST("/create", dashboard.AssetPostCreate)
|
||||
@@ -276,27 +206,6 @@ func registerDashboardKnowledgeRetrieveLogRoutes(group *gin.RouterGroup) {
|
||||
group.Any("/list", dashboard.KnowledgeRetrieveLogAnyList)
|
||||
}
|
||||
|
||||
func registerDashboardSkillDefinitionRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/:id", dashboard.SkillDefinitionGetBy)
|
||||
group.POST("/create", dashboard.SkillDefinitionPostCreate)
|
||||
group.POST("/debug_resume", dashboard.SkillDefinitionPostDebug_resume)
|
||||
group.POST("/debug_run", dashboard.SkillDefinitionPostDebug_run)
|
||||
group.POST("/delete", dashboard.SkillDefinitionPostDelete)
|
||||
group.Any("/list", dashboard.SkillDefinitionAnyList)
|
||||
group.GET("/list_all", dashboard.SkillDefinitionGetList_all)
|
||||
group.POST("/restore", dashboard.SkillDefinitionPostRestore)
|
||||
group.POST("/update", dashboard.SkillDefinitionPostUpdate)
|
||||
group.POST("/update_status", dashboard.SkillDefinitionPostUpdate_status)
|
||||
}
|
||||
|
||||
func registerDashboardMCPRoutes(group *gin.RouterGroup) {
|
||||
group.POST("/call_tool", dashboard.MCPPostCall_tool)
|
||||
group.Any("/catalog", dashboard.MCPAnyCatalog)
|
||||
group.Any("/list_servers", dashboard.MCPAnyList_servers)
|
||||
group.POST("/list_tools", dashboard.MCPPostList_tools)
|
||||
group.POST("/test_connection", dashboard.MCPPostTest_connection)
|
||||
}
|
||||
|
||||
func registerThirdWechatRoutes(group *gin.RouterGroup) {
|
||||
group.GET("/callback", third.WechatGetCallback)
|
||||
group.POST("/callback", third.WechatPostCallback)
|
||||
|
||||
Reference in New Issue
Block a user