chore: 告一段落

This commit is contained in:
fuzhongyun 2026-02-02 18:31:04 +08:00
parent ece04df2cb
commit c1971e71c1
3 changed files with 44 additions and 12 deletions

View File

@ -5,9 +5,12 @@ server:
ollama:
base_url: "http://192.168.6.115:11434"
model: "qwen3-coder:480b-cloud"
generate_model: "qwen3-coder:480b-cloud"
mapping_model: "deepseek-v3.2:cloud"
model: "qwen3:8b"
generate_model: "qwen3:8b"
mapping_model: "qwen3:8b"
# model: "qwen3-coder:480b-cloud"
# generate_model: "qwen3-coder:480b-cloud"
# mapping_model: "deepseek-v3.2:cloud"
vl_model: "qwen2.5vl:7b"
timeout: "120s"
level: "info"

View File

@ -283,12 +283,31 @@ func (d *DingTalkBotBiz) fallbackToGroupCreation(ctx context.Context, requireDat
}
}
// 4. 匹配问题类型
var issueType model.AiIssueType
for _, it := range allIssueTypes {
if it.Name == classification.IssueTypeName {
issueType = it
break
}
}
if sys.SysID == 0 {
// 无法明确系统,询问用户
statusKey := fmt.Sprintf("ai_bot:session:status:%s", requireData.Req.SenderStaffId)
d.redisCli.Set(ctx, statusKey, "WAITING_FOR_SYS_CONFIRM", time.Hour)
entitys.ResText(requireData.Ch, "", "抱歉,我无法确定您咨询的是哪个系统。请告诉我具体系统名称(如:直连天下系统、货易通系统),以便我为您安排对应的技术支持。")
return nil
// 判断全局是否存在该规则
_, found, _ := d.issueImpl.IssueAssignRule.FindOne(
d.issueImpl.WithSysID(0),
d.issueImpl.WithIssueTypeID(issueType.ID),
d.issueImpl.WithStatus(1),
)
if !found {
// 无法明确系统,且全局无该能力,询问用户
statusKey := fmt.Sprintf("ai_bot:session:status:%s", requireData.Req.SenderStaffId)
d.redisCli.Set(ctx, statusKey, "WAITING_FOR_SYS_CONFIRM", time.Hour)
entitys.ResText(requireData.Ch, "", "抱歉,我无法确定您咨询的是哪个系统。请告诉我具体系统名称(如:直连天下系统、货易通系统),以便我为您安排对应的技术支持。")
return nil
}
}
return d.fallbackToGroupCreationWithSys(ctx, requireData, &sys)
@ -323,8 +342,18 @@ func (d *DingTalkBotBiz) fallbackToGroupCreationWithSys(ctx context.Context, req
d.issueImpl.WithStatus(1),
)
if !found {
log.Errorf("assign rule not found for sys %s and issue type %s; err: %v", sys.SysName, issueType.Name, err)
return fmt.Errorf("分配规则 %s-%s 不存在", sys.SysName, issueType.Name)
// 创建默认分配规则 - 暂不考虑并发,有唯一索引
rule = model.AiIssueAssignRule{
SysID: sys.SysID,
IssueTypeID: issueType.ID,
Status: 1,
}
if err := d.issueImpl.IssueAssignRule.Create(&rule); err != nil {
log.Errorf("create assign rule for sys %s and issue type %s failed; err: %v", sys.SysName, issueType.Name, err)
return fmt.Errorf("创建分配规则 %s-%s 失败", sys.SysName, issueType.Name)
} else {
log.Infof("create assign rule for sys %s and issue type %s success; rule id: %d", sys.SysName, issueType.Name, rule.ID)
}
}
var staffIds []string

View File

@ -137,10 +137,10 @@ func (r *Handle) ClassifyIssue(ctx context.Context, systems []string, issueTypes
可用问题类型: [%s]
请仅以 JSON 格式回复包含以下字段
- sys_name: 系统名称
- sys_name: 系统名称若未提及系统关键词则为"全局"
- issue_type_name: 问题类型名称
- summary: 15字以内的问题简述用于群命名
- reason: 分类理由`, strings.Join(systems, ", "), strings.Join(issueTypes, ", "))
- reason: 分类判断理由系统名称判断理由`, strings.Join(systems, ", "), strings.Join(issueTypes, ", "))
messages := []api.Message{
{Role: "system", Content: systemPrompt},