Add quick reply, skill definition, and tag seeds for multilingual support

- Implemented QuickReplySeed structure and seeds for both English and Chinese languages.
- Created SkillDefinitionSeed structure with detailed instructions and examples for the "After-sales Escalation" skill in both languages.
- Added TagSeed structure and corresponding seeds for categorizing inquiries in English and Chinese.
- Refactored skill and tag initialization to utilize the new seed structures, ensuring proper data handling and multilingual support.
- Updated tests to verify that English seeds do not contain Chinese text, ensuring data integrity.
This commit is contained in:
mlogclub
2026-06-01 12:15:41 +08:00
parent b743639731
commit 031855935d
22 changed files with 683 additions and 707 deletions
+5 -56
View File
@@ -2,6 +2,7 @@ package agentteam
import (
"agent-desk/cmd/testdata/seedlang"
"agent-desk/cmd/testdata/seeds"
"agent-desk/internal/models"
"agent-desk/internal/pkg/constants"
"agent-desk/internal/pkg/enums"
@@ -50,7 +51,7 @@ func Init(lang seedlang.Language) (*InitResult, error) {
}
func initTeamAndUsers(ctx *sqls.TxContext, leaderUser *models.User, result *InitResult, lang seedlang.Language) error {
teamName := localizedTeamName(lang)
teamName := seeds.AgentTeamName(lang)
now := time.Now()
team := repositories.AgentTeamRepository.Take(ctx.Tx, "name = ?", teamName)
@@ -84,9 +85,9 @@ func initTeamAndUsers(ctx *sqls.TxContext, leaderUser *models.User, result *Init
result.TeamCreated = true
}
agentUsers := localizedAgentUsers(lang, leaderUser.Username)
agentUsers := seeds.AgentUsers(lang, leaderUser.Username)
for _, agentUser := range agentUsers {
userID, userCreated, err := createOrGetUser(ctx, agentUser.username, agentUser.nickname)
userID, userCreated, err := createOrGetUser(ctx, agentUser.Username, agentUser.Nickname)
if err != nil {
return err
}
@@ -95,7 +96,7 @@ func initTeamAndUsers(ctx *sqls.TxContext, leaderUser *models.User, result *Init
}
// 创建或更新客服档案
profileCreated, err := createOrUpdateProfile(ctx, userID, team.ID, agentUser.code, agentUser.nickname)
profileCreated, err := createOrUpdateProfile(ctx, userID, team.ID, agentUser.Code, agentUser.Nickname)
if err != nil {
return err
}
@@ -109,58 +110,6 @@ func initTeamAndUsers(ctx *sqls.TxContext, leaderUser *models.User, result *Init
return nil
}
type agentUserSeed struct {
username string
nickname string
code string
}
func localizedTeamName(lang seedlang.Language) string {
if lang == seedlang.English {
return "Default Support Team"
}
return "默认客服组"
}
func localizedAgentUsers(lang seedlang.Language, leaderUsername string) []agentUserSeed {
if lang == seedlang.English {
return []agentUserSeed{
{
username: leaderUsername,
nickname: "Support Lead",
code: "AGENT_LEADER_A",
},
{
username: "agent_a",
nickname: "Agent A",
code: "AGENT_A",
},
{
username: "agent_b",
nickname: "Agent B",
code: "AGENT_B",
},
}
}
return []agentUserSeed{
{
username: leaderUsername,
nickname: "客服组长",
code: "AGENT_LEADER_A",
},
{
username: "agent_a",
nickname: "客服A",
code: "AGENT_A",
},
{
username: "agent_b",
nickname: "客服B",
code: "AGENT_B",
},
}
}
func createOrGetUser(ctx *sqls.TxContext, username, nickname string) (int64, bool, error) {
user := repositories.UserRepository.Take(
ctx.Tx,
+4 -3
View File
@@ -2,6 +2,7 @@ package agentteam
import (
"agent-desk/cmd/testdata/seedlang"
"agent-desk/cmd/testdata/seeds"
"regexp"
"testing"
)
@@ -9,9 +10,9 @@ import (
var hanTextPattern = regexp.MustCompile(`\p{Han}`)
func TestEnglishAgentTeamTextDoesNotContainChineseText(t *testing.T) {
values := []string{localizedTeamName(seedlang.English)}
for _, user := range localizedAgentUsers(seedlang.English, "admin") {
values = append(values, user.nickname)
values := []string{seeds.AgentTeamName(seedlang.English)}
for _, user := range seeds.AgentUsers(seedlang.English, "admin") {
values = append(values, user.Nickname)
}
for _, value := range values {