feat: complete mise env base code

This commit is contained in:
engigu
2026-02-13 17:27:55 +08:00
parent 800ac40200
commit c1c1d69e66
49 changed files with 2724 additions and 470 deletions
+10 -8
View File
@@ -52,14 +52,16 @@ func (AgentToken) TableName() string {
// AgentTask Agent 任务配置(用于下发给 Agent)
type AgentTask struct {
ID uint `json:"id"`
Name string `json:"name"`
Command string `json:"command"`
Schedule string `json:"schedule"`
Timeout int `json:"timeout"`
WorkDir string `json:"work_dir"`
Envs string `json:"envs"`
Enabled bool `json:"enabled"`
ID uint `json:"id"`
Name string `json:"name"`
Command string `json:"command"`
Schedule string `json:"schedule"`
Timeout int `json:"timeout"`
WorkDir string `json:"work_dir"`
Envs string `json:"envs"`
Language string `json:"language"`
LangVersion string `json:"lang_version"`
Enabled bool `json:"enabled"`
}
// AgentTaskResult Agent 上报的任务执行结果
+11 -9
View File
@@ -1,20 +1,22 @@
package models
import (
"github.com/engigu/baihu-panel/internal/constant"
"time"
"github.com/engigu/baihu-panel/internal/constant"
)
// Dependency 依赖包模型
type Dependency struct {
ID int `json:"id" gorm:"primaryKey"`
Name string `json:"name" gorm:"size:100;not null"`
Version string `json:"version" gorm:"size:50"`
Type string `json:"type" gorm:"size:10;not null"` // py 或 node
Remark string `json:"remark" gorm:"size:255"`
Log string `json:"log" gorm:"type:text"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID int `json:"id" gorm:"primaryKey"`
Name string `json:"name" gorm:"size:100;not null"`
Version string `json:"version" gorm:"size:50"`
Language string `json:"language" gorm:"size:100;index"` // 关联语言 (node, python...)
LangVersion string `json:"lang_version" gorm:"size:100;index"` // 关联语言版本
Remark string `json:"remark" gorm:"size:255"`
Log string `json:"log" gorm:"type:text"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
func (Dependency) TableName() string {
+22
View File
@@ -0,0 +1,22 @@
package models
import (
"github.com/engigu/baihu-panel/internal/constant"
"gorm.io/gorm"
)
type Language struct {
ID uint `json:"id" gorm:"primaryKey"`
Plugin string `json:"plugin" gorm:"size:100;not null;index"`
Version string `json:"version" gorm:"size:100;not null;index"`
InstallPath string `json:"install_path" gorm:"size:255"`
Source string `json:"source" gorm:"size:255"`
InstalledAt *LocalTime `json:"installed_at"`
CreatedAt LocalTime `json:"created_at"`
UpdatedAt LocalTime `json:"updated_at"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index"`
}
func (Language) TableName() string {
return constant.TablePrefix + "languages"
}
+18
View File
@@ -44,6 +44,8 @@ type Task struct {
WorkDir string `json:"work_dir" gorm:"size:255;default:''"` // 工作目录,为空则使用 scripts 目录
CleanConfig string `json:"clean_config" gorm:"size:255;default:''"` // 清理配置 JSON
Envs string `json:"envs" gorm:"size:255;default:''"` // 环境变量ID列表,逗号分隔
Language string `json:"language" gorm:"size:50;default:''"` // 针对本地任务的语言名称 (mise)
LangVersion string `json:"lang_version" gorm:"size:50;default:''"` // 针对本地任务的语言版本 (mise)
AgentID *uint `json:"agent_id" gorm:"index"` // Agent ID,为空表示本地执行
Enabled bool `json:"enabled" gorm:"default:true"`
RunningGo string `json:"running_go" gorm:"type:text"` // 正在运行的 go routine id 数组 (JSON)
@@ -82,6 +84,22 @@ func (t *Task) GetEnvs() string {
return t.Envs
}
func (t *Task) GetLanguage() string {
return t.Language
}
func (t *Task) GetLangVersion() string {
return t.LangVersion
}
func (t *Task) GetUseMise() bool {
return t.AgentID == nil || *t.AgentID == 0
}
func (t *Task) UseMise() bool {
return t.GetUseMise()
}
func (t *Task) GetSchedule() string {
return t.Schedule
}
+18 -16
View File
@@ -8,14 +8,15 @@ import (
// DependencyVO 依赖包视图对象
type DependencyVO struct {
ID int `json:"id"`
Name string `json:"name"`
Version string `json:"version"`
Type string `json:"type"`
Remark string `json:"remark"`
Log string `json:"log,omitempty"` // 仅在需要时返回
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ID int `json:"id"`
Name string `json:"name"`
Version string `json:"version"`
Language string `json:"language"`
LangVersion string `json:"lang_version"`
Remark string `json:"remark"`
Log string `json:"log,omitempty"` // 仅在需要时返回
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// ToDependencyVO 将 Dependency 模型转换为 DependencyVO
@@ -24,14 +25,15 @@ func ToDependencyVO(dep *models.Dependency) *DependencyVO {
return nil
}
return &DependencyVO{
ID: dep.ID,
Name: dep.Name,
Version: dep.Version,
Type: dep.Type,
Remark: dep.Remark,
Log: dep.Log,
CreatedAt: dep.CreatedAt,
UpdatedAt: dep.UpdatedAt,
ID: dep.ID,
Name: dep.Name,
Version: dep.Version,
Language: dep.Language,
LangVersion: dep.LangVersion,
Remark: dep.Remark,
Log: dep.Log,
CreatedAt: dep.CreatedAt,
UpdatedAt: dep.UpdatedAt,
}
}
+4
View File
@@ -17,6 +17,8 @@ type TaskVO struct {
WorkDir string `json:"work_dir"`
CleanConfig string `json:"clean_config"`
Envs string `json:"envs"`
Language string `json:"language"`
LangVersion string `json:"lang_version"`
AgentID *uint `json:"agent_id"`
Enabled bool `json:"enabled"`
LastRun *models.LocalTime `json:"last_run"`
@@ -41,6 +43,8 @@ func ToTaskVO(task *models.Task) *TaskVO {
WorkDir: task.WorkDir,
CleanConfig: task.CleanConfig,
Envs: task.Envs,
Language: task.Language,
LangVersion: task.LangVersion,
AgentID: task.AgentID,
Enabled: task.Enabled,
LastRun: task.LastRun,