feat: remove priority field from skill definition and related services

This commit is contained in:
mlogclub
2026-04-14 17:44:06 +08:00
parent 2369a5a9a1
commit ccdb04e9aa
6 changed files with 4 additions and 62 deletions
+2 -3
View File
@@ -83,9 +83,8 @@ func buildSeedItems() []models.SkillDefinition {
"graph/create_ticket_with_confirmation", "graph/create_ticket_with_confirmation",
"graph/handoff_to_human" "graph/handoff_to_human"
]`, ]`,
Priority: 100, Status: enums.StatusOk,
Status: enums.StatusOk, Remark: "after-sales escalation skill",
Remark: "after-sales escalation skill",
AuditFields: models.AuditFields{ AuditFields: models.AuditFields{
CreatedAt: now, CreatedAt: now,
CreateUserID: 0, CreateUserID: 0,
-1
View File
@@ -25,7 +25,6 @@ func BuildSkillDefinitionResponse(item *models.SkillDefinition) response.SkillDe
Instruction: item.Instruction, Instruction: item.Instruction,
Examples: examples, Examples: examples,
ToolWhitelist: toolWhitelist, ToolWhitelist: toolWhitelist,
Priority: item.Priority,
Status: int(item.Status), Status: int(item.Status),
StatusName: getSkillStatusName(item.Status), StatusName: getSkillStatusName(item.Status),
Remark: item.Remark, Remark: item.Remark,
@@ -29,7 +29,7 @@ func (c *SkillDefinitionController) AnyList() *web.JsonResult {
params.QueryFilter{ParamName: "status"}, params.QueryFilter{ParamName: "status"},
params.QueryFilter{ParamName: "name", Op: params.Like}, params.QueryFilter{ParamName: "name", Op: params.Like},
params.QueryFilter{ParamName: "code", Op: params.Like}, params.QueryFilter{ParamName: "code", Op: params.Like},
).Asc("priority").Desc("id") ).Desc("id")
list, paging := services.SkillDefinitionService.FindPageByCnd(cnd) list, paging := services.SkillDefinitionService.FindPageByCnd(cnd)
results := make([]response.SkillDefinitionResponse, 0, len(list)) results := make([]response.SkillDefinitionResponse, 0, len(list))
for _, item := range list { for _, item := range list {
@@ -45,7 +45,7 @@ func (c *SkillDefinitionController) GetList_all() *web.JsonResult {
list := services.SkillDefinitionService.Find(params.NewSqlCnd(c.Ctx, list := services.SkillDefinitionService.Find(params.NewSqlCnd(c.Ctx,
params.QueryFilter{ParamName: "status"}, params.QueryFilter{ParamName: "status"},
).Asc("priority").Desc("id")) ).Desc("id"))
results := make([]response.SkillDefinitionResponse, 0, len(list)) results := make([]response.SkillDefinitionResponse, 0, len(list))
for _, item := range list { for _, item := range list {
results = append(results, builders.BuildSkillDefinitionResponse(&item)) results = append(results, builders.BuildSkillDefinitionResponse(&item))
@@ -156,21 +156,6 @@ func (c *SkillDefinitionController) PostDelete() *web.JsonResult {
return web.JsonSuccess() return web.JsonSuccess()
} }
func (c *SkillDefinitionController) PostUpdate_priority() *web.JsonResult {
if _, err := services.AuthService.RequirePermission(c.Ctx, constants.PermissionSkillDefinitionUpdate); err != nil {
return web.JsonError(err)
}
var ids []int64
if err := c.Ctx.ReadJSON(&ids); err != nil {
return web.JsonError(err)
}
if err := services.SkillDefinitionService.UpdatePriority(ids); err != nil {
return web.JsonError(err)
}
return web.JsonSuccess()
}
func (c *SkillDefinitionController) PostDebug_run() *web.JsonResult { func (c *SkillDefinitionController) PostDebug_run() *web.JsonResult {
if _, err := services.AuthService.RequirePermission(c.Ctx, constants.PermissionSkillDefinitionView); err != nil { if _, err := services.AuthService.RequirePermission(c.Ctx, constants.PermissionSkillDefinitionView); err != nil {
return web.JsonError(err) return web.JsonError(err)
-1
View File
@@ -912,7 +912,6 @@ type SkillDefinition struct {
Instruction string `gorm:"type:longtext"` // Instruction 为 Skill 的主体说明文档存储字段,使用 Markdown 编写,供 Agent 理解任务目标、步骤和工具使用要求。 Instruction string `gorm:"type:longtext"` // Instruction 为 Skill 的主体说明文档存储字段,使用 Markdown 编写,供 Agent 理解任务目标、步骤和工具使用要求。
Examples string `gorm:"type:text"` // Examples 为示例问法 JSON 数组字符串。 Examples string `gorm:"type:text"` // Examples 为示例问法 JSON 数组字符串。
ToolWhitelist string `gorm:"type:text"` // ToolWhitelist 为允许使用的工具编码 JSON 数组字符串。 ToolWhitelist string `gorm:"type:text"` // ToolWhitelist 为允许使用的工具编码 JSON 数组字符串。
Priority int `gorm:"type:int;not null;default:0;index"` // Priority 为 Skill 命中冲突时的优先级,数值越大优先级越高。
Status enums.Status `gorm:"type:int;not null;default:0;index"` // Status 为 Skill 当前状态,使用全局通用状态:0启用 1禁用 2删除。 Status enums.Status `gorm:"type:int;not null;default:0;index"` // Status 为 Skill 当前状态,使用全局通用状态:0启用 1禁用 2删除。
Remark string `gorm:"type:text"` // Remark 为后台备注,用于记录配置说明、维护信息或内部协作信息。 Remark string `gorm:"type:text"` // Remark 为后台备注,用于记录配置说明、维护信息或内部协作信息。
AuditFields AuditFields
@@ -13,7 +13,6 @@ type CreateSkillDefinitionRequest struct {
Instruction string `json:"instruction"` Instruction string `json:"instruction"`
Examples []string `json:"examples"` Examples []string `json:"examples"`
ToolWhitelist []string `json:"toolWhitelist"` ToolWhitelist []string `json:"toolWhitelist"`
Priority int `json:"priority"`
Remark string `json:"remark"` Remark string `json:"remark"`
} }
@@ -75,24 +75,6 @@ func (s *skillDefinitionService) Delete(id int64) {
repositories.SkillDefinitionRepository.Delete(sqls.DB(), id) repositories.SkillDefinitionRepository.Delete(sqls.DB(), id)
} }
func (s *skillDefinitionService) NextPriority() int {
if max := repositories.SkillDefinitionRepository.FindOne(sqls.DB(), sqls.NewCnd().Desc("priority").Desc("id")); max != nil {
return max.Priority + 1
}
return 1
}
func (s *skillDefinitionService) UpdatePriority(ids []int64) error {
return sqls.WithTransaction(func(ctx *sqls.TxContext) error {
for i, id := range ids {
if err := repositories.SkillDefinitionRepository.UpdateColumn(ctx.Tx, id, "priority", i+1); err != nil {
return err
}
}
return nil
})
}
func (s *skillDefinitionService) GetByCode(code string) *models.SkillDefinition { func (s *skillDefinitionService) GetByCode(code string) *models.SkillDefinition {
return repositories.SkillDefinitionRepository.GetByCode(sqls.DB(), code) return repositories.SkillDefinitionRepository.GetByCode(sqls.DB(), code)
} }
@@ -115,14 +97,10 @@ func (s *skillDefinitionService) CreateSkillDefinition(req request.CreateSkillDe
Instruction: normalized.Instruction, Instruction: normalized.Instruction,
Examples: mustMarshalSkillStringArray(normalized.Examples), Examples: mustMarshalSkillStringArray(normalized.Examples),
ToolWhitelist: mustMarshalSkillStringArray(normalized.ToolWhitelist), ToolWhitelist: mustMarshalSkillStringArray(normalized.ToolWhitelist),
Priority: normalized.Priority,
Status: enums.StatusOk, Status: enums.StatusOk,
Remark: normalized.Remark, Remark: normalized.Remark,
AuditFields: utils.BuildAuditFields(operator), AuditFields: utils.BuildAuditFields(operator),
} }
if item.Priority <= 0 {
item.Priority = s.NextPriority()
}
if err := repositories.SkillDefinitionRepository.Create(sqls.DB(), item); err != nil { if err := repositories.SkillDefinitionRepository.Create(sqls.DB(), item); err != nil {
return nil, err return nil, err
} }
@@ -154,7 +132,6 @@ func (s *skillDefinitionService) UpdateSkillDefinition(req request.UpdateSkillDe
"instruction": normalized.Instruction, "instruction": normalized.Instruction,
"examples": mustMarshalSkillStringArray(normalized.Examples), "examples": mustMarshalSkillStringArray(normalized.Examples),
"tool_whitelist": mustMarshalSkillStringArray(normalized.ToolWhitelist), "tool_whitelist": mustMarshalSkillStringArray(normalized.ToolWhitelist),
"priority": resolveSkillPriorityForService(normalized.Priority, current.Priority),
"remark": normalized.Remark, "remark": normalized.Remark,
"update_user_id": operator.UserID, "update_user_id": operator.UserID,
"update_user_name": operator.Username, "update_user_name": operator.Username,
@@ -168,7 +145,6 @@ func (s *skillDefinitionService) normalizeSkillDefinitionRequest(req request.Cre
Name: strings.TrimSpace(req.Name), Name: strings.TrimSpace(req.Name),
Description: strings.TrimSpace(req.Description), Description: strings.TrimSpace(req.Description),
Instruction: strings.TrimSpace(req.Instruction), Instruction: strings.TrimSpace(req.Instruction),
Priority: normalizeSkillPriorityForService(req.Priority),
Remark: strings.TrimSpace(req.Remark), Remark: strings.TrimSpace(req.Remark),
} }
if normalized.Code == "" { if normalized.Code == "" {
@@ -235,18 +211,3 @@ func mustMarshalSkillStringArray(input []string) string {
} }
return string(buf) return string(buf)
} }
func normalizeSkillPriorityForService(priority int) int {
if priority < 0 {
return 0
}
return priority
}
func resolveSkillPriorityForService(input, current int) int {
input = normalizeSkillPriorityForService(input)
if input <= 0 {
return current
}
return input
}