chore: add more openai

This commit is contained in:
engigu
2026-03-11 10:59:25 +08:00
parent 735b798bd7
commit deae554620
8 changed files with 121 additions and 5 deletions
+32
View File
@@ -18,6 +18,15 @@ func NewEnvController(envService *services.EnvService) *EnvController {
}
// CreateEnvVar 创建环境变量
// @Summary 创建环境变量
// @Description 创建一个新的环境变量
// @Tags 环境变量
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param body body object true "环境变量信息"
// @Success 200 {object} utils.Response{data=vo.EnvVO}
// @Router /env [post]
func (ec *EnvController) CreateEnvVar(c *gin.Context) {
userID := c.GetString("userID")
@@ -105,6 +114,17 @@ func (ec *EnvController) GetEnvVar(c *gin.Context) {
}
// UpdateEnvVar 更新环境变量
// @Summary 更新环境变量
// @Description 根据 ID 更新环境变量信息
// @Tags 环境变量
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param id path string true "环境变量ID"
// @Param body body object true "环境变量更新信息"
// @Success 200 {object} utils.Response{data=vo.EnvVO}
// @Failure 404 {object} utils.Response
// @Router /env/{id} [put]
func (ec *EnvController) UpdateEnvVar(c *gin.Context) {
id := c.Param("id")
if id == "" {
@@ -145,6 +165,18 @@ func (ec *EnvController) UpdateEnvVar(c *gin.Context) {
}
// DeleteEnvVar 删除环境变量
// @Summary 删除环境变量
// @Description 根据 ID 删除环境变量
// @Tags 环境变量
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param id path string true "环境变量ID"
// @Param force query boolean false "强制删除(忽略任务关联)"
// @Success 200 {object} utils.Response
// @Failure 404 {object} utils.Response
// @Failure 409 {object} utils.Response{data=[]vo.TaskVO}
// @Router /env/{id} [delete]
func (ec *EnvController) DeleteEnvVar(c *gin.Context) {
id := c.Param("id")
if id == "" {
+53
View File
@@ -17,6 +17,16 @@ func NewScriptController(scriptService *services.ScriptService) *ScriptControlle
return &ScriptController{scriptService: scriptService}
}
// CreateScript 创建脚本
// @Summary 创建脚本
// @Description 创建一个新的脚本
// @Tags 脚本管理
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param body body object true "脚本信息"
// @Success 200 {object} utils.Response{data=vo.ScriptVO}
// @Router /scripts [post]
func (sc *ScriptController) CreateScript(c *gin.Context) {
userID := c.GetString("userID")
@@ -34,6 +44,15 @@ func (sc *ScriptController) CreateScript(c *gin.Context) {
utils.Success(c, vo.ToScriptVO(script))
}
// GetScripts 获取脚本列表
// @Summary 获取脚本列表
// @Description 获取当前用户的所有脚本(内容字段为空)
// @Tags 脚本管理
// @Accept json
// @Produce json
// @Security BearerAuth
// @Success 200 {object} utils.Response{data=[]vo.ScriptVO}
// @Router /scripts [get]
func (sc *ScriptController) GetScripts(c *gin.Context) {
userID := c.GetString("userID")
scripts := sc.scriptService.GetScriptsByUserID(userID)
@@ -44,6 +63,17 @@ func (sc *ScriptController) GetScripts(c *gin.Context) {
utils.Success(c, vos)
}
// GetScript 获取脚本详情
// @Summary 获取脚本详情
// @Description 根据 ID 获取脚本详情
// @Tags 脚本管理
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param id path string true "脚本ID"
// @Success 200 {object} utils.Response{data=vo.ScriptVO}
// @Failure 404 {object} utils.Response
// @Router /scripts/{id} [get]
func (sc *ScriptController) GetScript(c *gin.Context) {
id := c.Param("id")
if id == "" {
@@ -60,6 +90,18 @@ func (sc *ScriptController) GetScript(c *gin.Context) {
utils.Success(c, vo.ToScriptVO(script))
}
// UpdateScript 更新脚本
// @Summary 更新脚本
// @Description 根据 ID 更新脚本信息
// @Tags 脚本管理
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param id path string true "脚本ID"
// @Param body body object true "脚本更新信息"
// @Success 200 {object} utils.Response{data=vo.ScriptVO}
// @Failure 404 {object} utils.Response
// @Router /scripts/{id} [put]
func (sc *ScriptController) UpdateScript(c *gin.Context) {
id := c.Param("id")
if id == "" {
@@ -86,6 +128,17 @@ func (sc *ScriptController) UpdateScript(c *gin.Context) {
utils.Success(c, vo.ToScriptVO(script))
}
// DeleteScript 删除脚本
// @Summary 删除脚本
// @Description 根据 ID 删除脚本
// @Tags 脚本管理
// @Accept json
// @Produce json
// @Security BearerAuth
// @Param id path string true "脚本ID"
// @Success 200 {object} utils.Response
// @Failure 404 {object} utils.Response
// @Router /scripts/{id} [delete]
func (sc *ScriptController) DeleteScript(c *gin.Context) {
id := c.Param("id")
if id == "" {
+17
View File
@@ -16,6 +16,8 @@ func initOpenAPIV1Routes(root *gin.RouterGroup, c *Controllers) {
registerOpenAPITaskRoutes(open, c)
// 环境变量相关接口
registerOpenAPIEnvRoutes(open, c)
// 脚本相关接口
registerOpenAPIScriptRoutes(open, c)
// 日志相关接口
registerOpenAPILogRoutes(open, c)
// 任务执行相关接口
@@ -39,10 +41,13 @@ func registerOpenAPITaskRoutes(g *gin.RouterGroup, c *Controllers) {
func registerOpenAPIEnvRoutes(g *gin.RouterGroup, c *Controllers) {
env := g.Group("/env")
{
env.POST("", c.Env.CreateEnvVar)
env.GET("", c.Env.GetEnvVars)
env.GET("/all", c.Env.GetAllEnvVars)
env.GET("/:id", c.Env.GetEnvVar)
env.GET("/:id/tasks", c.Env.GetAssociatedTasks)
env.PUT("/:id", c.Env.UpdateEnvVar)
env.DELETE("/:id", c.Env.DeleteEnvVar)
}
}
@@ -63,3 +68,15 @@ func registerOpenAPIExecutorRoutes(g *gin.RouterGroup, c *Controllers) {
execution.GET("/results", c.Executor.GetLastResults)
}
}
// registerOpenAPIScriptRoutes 注册 OpenAPI 脚本路由
func registerOpenAPIScriptRoutes(g *gin.RouterGroup, c *Controllers) {
scripts := g.Group("/scripts")
{
scripts.POST("", c.Script.CreateScript)
scripts.GET("", c.Script.GetScripts)
scripts.GET("/:id", c.Script.GetScript)
scripts.PUT("/:id", c.Script.UpdateScript)
scripts.DELETE("/:id", c.Script.DeleteScript)
}
}
+3 -1
View File
@@ -10,11 +10,13 @@ window.addEventListener('vite:preloadError', () => {
window.location.reload()
})
const BASE_URL = (window as any).__BASE_URL__ || ''
createApp(App)
.use(router)
.use(VueMonacoEditorPlugin, {
paths: {
vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.52.0/min/vs'
vs: BASE_URL + '/vs'
}
})
.mount('#app')
+1 -1
View File
@@ -97,7 +97,7 @@ function getLangIcon(plugin: string) {
'kubernetes': 'kubernetes/kubernetes-plain.svg',
'ansible': 'ansible/ansible-original.svg',
}
return mapping[name] ? `https://cdn.jsdelivr.net/gh/devicons/devicon/icons/${mapping[name]}` : ''
return mapping[name] ? `https://fastly.jsdelivr.net/gh/devicons/devicon/icons/${mapping[name]}` : ''
}
async function fetchPaths() {
+1 -1
View File
@@ -229,7 +229,7 @@ function getLangIcon(plugin: string) {
}
if (mapping[name]) {
return `https://cdn.jsdelivr.net/gh/devicons/devicon/icons/${mapping[name]}`
return `https://fastly.jsdelivr.net/gh/devicons/devicon/icons/${mapping[name]}`
}
return ''
}
+1 -1
View File
@@ -184,7 +184,7 @@ function getLangIcon(plugin: string) {
}
if (mapping[name]) {
return `https://cdn.jsdelivr.net/gh/devicons/devicon/icons/${mapping[name]}`
return `https://fastly.jsdelivr.net/gh/devicons/devicon/icons/${mapping[name]}`
}
return ''
}
+13 -1
View File
@@ -1,10 +1,22 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import tailwindcss from '@tailwindcss/vite'
import { viteStaticCopy } from 'vite-plugin-static-copy'
import { fileURLToPath, URL } from 'node:url'
export default defineConfig({
plugins: [vue(), tailwindcss()],
plugins: [
vue(),
tailwindcss(),
viteStaticCopy({
targets: [
{
src: 'node_modules/monaco-editor/min/vs',
dest: '.'
}
]
})
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))