🎨 优化扩展模块,完成ai接入和对话功能
This commit is contained in:
29
server/router/app/chat.go
Normal file
29
server/router/app/chat.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
v1 "git.echol.cn/loser/st/server/api/v1"
|
||||
"git.echol.cn/loser/st/server/middleware"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ChatRouter struct{}
|
||||
|
||||
func (cr *ChatRouter) InitChatRouter(Router *gin.RouterGroup) {
|
||||
chatApi := v1.ApiGroupApp.AppApiGroup.ChatApi
|
||||
|
||||
// 所有对话接口都需要登录
|
||||
chatRouter := Router.Group("chat").Use(middleware.AppJWTAuth())
|
||||
{
|
||||
// 对话管理
|
||||
chatRouter.POST("", chatApi.CreateChat) // 创建对话
|
||||
chatRouter.GET("/list", chatApi.GetChatList) // 对话列表
|
||||
chatRouter.GET("/:id", chatApi.GetChatDetail) // 对话详情
|
||||
chatRouter.GET("/:id/messages", chatApi.GetChatMessages) // 获取消息
|
||||
chatRouter.DELETE("/:id", chatApi.DeleteChat) // 删除对话
|
||||
|
||||
// 消息操作
|
||||
chatRouter.POST("/send", chatApi.SendMessage) // 发送消息(SSE 流式)
|
||||
chatRouter.POST("/message/edit", chatApi.EditMessage) // 编辑消息
|
||||
chatRouter.POST("/message/delete", chatApi.DeleteMessage) // 删除消息
|
||||
}
|
||||
}
|
||||
@@ -6,4 +6,6 @@ type RouterGroup struct {
|
||||
WorldInfoRouter
|
||||
ExtensionRouter
|
||||
RegexScriptRouter
|
||||
ProviderRouter
|
||||
ChatRouter
|
||||
}
|
||||
|
||||
@@ -43,4 +43,13 @@ func (r *ExtensionRouter) InitExtensionRouter(Router *gin.RouterGroup) {
|
||||
// 统计
|
||||
extensionRouter.POST("/stats", extensionApi.UpdateExtensionStats) // 更新扩展统计
|
||||
}
|
||||
|
||||
// 扩展资源文件 - 公开路由(不需要鉴权)
|
||||
// 原因:<script type="module"> 标签无法携带 JWT header,
|
||||
// 且 ES module 的 import 语句也无法携带认证信息。
|
||||
// 与原版 SillyTavern 一致:扩展文件作为公开静态资源提供。
|
||||
extensionPublicRouter := Router.Group("extension")
|
||||
{
|
||||
extensionPublicRouter.GET("/:id/asset/*path", extensionApi.ProxyExtensionAsset)
|
||||
}
|
||||
}
|
||||
|
||||
49
server/router/app/provider.go
Normal file
49
server/router/app/provider.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
v1 "git.echol.cn/loser/st/server/api/v1"
|
||||
"git.echol.cn/loser/st/server/middleware"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type ProviderRouter struct{}
|
||||
|
||||
func (pr *ProviderRouter) InitProviderRouter(Router *gin.RouterGroup) {
|
||||
providerApi := v1.ApiGroupApp.AppApiGroup.ProviderApi
|
||||
|
||||
// 公开接口(不需要登录)
|
||||
providerPublicRouter := Router.Group("provider")
|
||||
{
|
||||
providerPublicRouter.GET("/types", providerApi.GetProviderTypes) // 获取支持的提供商类型
|
||||
providerPublicRouter.GET("/presetModels", providerApi.GetPresetModels) // 获取预设模型列表
|
||||
}
|
||||
|
||||
// 需要登录的接口
|
||||
providerAuthRouter := Router.Group("provider").Use(middleware.AppJWTAuth())
|
||||
{
|
||||
// 提供商 CRUD
|
||||
providerAuthRouter.POST("", providerApi.CreateProvider) // 创建提供商
|
||||
providerAuthRouter.GET("/list", providerApi.GetProviderList) // 获取列表
|
||||
providerAuthRouter.GET("/:id", providerApi.GetProviderDetail) // 获取详情
|
||||
providerAuthRouter.PUT("", providerApi.UpdateProvider) // 更新提供商
|
||||
providerAuthRouter.DELETE("/:id", providerApi.DeleteProvider) // 删除提供商
|
||||
providerAuthRouter.POST("/setDefault", providerApi.SetDefaultProvider) // 设置默认
|
||||
|
||||
// 连通性测试
|
||||
providerAuthRouter.POST("/test", providerApi.TestProvider) // 测试连接(不需要先保存)
|
||||
providerAuthRouter.GET("/test/:id", providerApi.TestExistingProvider) // 测试已保存的连接
|
||||
|
||||
// 远程模型获取
|
||||
providerAuthRouter.POST("/fetchModels", providerApi.FetchRemoteModels) // 获取远程模型列表
|
||||
providerAuthRouter.GET("/fetchModels/:id", providerApi.FetchRemoteModelsExisting) // 获取已保存提供商的远程模型
|
||||
|
||||
// 测试消息
|
||||
providerAuthRouter.POST("/testMessage", providerApi.SendTestMessage) // 发送测试消息
|
||||
providerAuthRouter.POST("/testMessage/:id", providerApi.SendTestMessageExisting) // 已保存提供商发测试消息
|
||||
|
||||
// 模型管理
|
||||
providerAuthRouter.POST("/model", providerApi.AddModel) // 添加模型
|
||||
providerAuthRouter.PUT("/model", providerApi.UpdateModel) // 更新模型
|
||||
providerAuthRouter.DELETE("/model/:id", providerApi.DeleteModel) // 删除模型
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user