feat: add language support and tests for English and Chinese seed data

- Introduced a new package `seedlang` to handle language parsing and constants for English and Chinese.
- Updated `Init` functions across various modules (kb, quickreply, skill, tag) to accept a language parameter.
- Implemented English seed data for FAQs, quick replies, skills, and tags, ensuring no Chinese text is present in English data.
- Added tests to verify that English seed data does not contain Chinese characters.
- Removed outdated README file from the kb test data directory.
- Created new test files for channel and kb to validate the absence of Chinese text in English seed data.
This commit is contained in:
mlogclub
2026-06-01 12:03:57 +08:00
parent 6f86bdcd75
commit b743639731
21 changed files with 665 additions and 129 deletions
+14 -7
View File
@@ -7,6 +7,7 @@ import (
"agent-desk/cmd/testdata/channel"
"agent-desk/cmd/testdata/kb"
"agent-desk/cmd/testdata/quickreply"
"agent-desk/cmd/testdata/seedlang"
"agent-desk/cmd/testdata/skill"
"agent-desk/cmd/testdata/tag"
"agent-desk/internal/bootstrap"
@@ -32,8 +33,14 @@ func main() {
func run() error {
configPath := flag.String("config", "config/config.yaml", "path to config file")
autoConfirm := flag.Bool("yes", false, "skip confirmation prompt")
langValue := flag.String("lang", string(seedlang.Chinese), "testdata language: zh or en")
flag.Parse()
lang, err := seedlang.Parse(*langValue)
if err != nil {
return err
}
if err := confirmDestructiveAction(*autoConfirm); err != nil {
return err
}
@@ -71,7 +78,7 @@ func run() error {
slog.Int("created", aiConfigResult.Created),
slog.Int("updated", aiConfigResult.Updated))
kbResult, err := kb.Init()
kbResult, err := kb.Init(lang)
if err != nil {
return fmt.Errorf("init knowledge base failed: %w", err)
}
@@ -81,13 +88,13 @@ func run() error {
slog.Int("updatedFAQs", kbResult.UpdatedFAQs),
)
skillResult, err := skill.Init()
skillResult, err := skill.Init(lang)
if err != nil {
return fmt.Errorf("init skill failed: %w", err)
}
slog.Info("skill init success", slog.Int("created", skillResult.Created), slog.Int("updated", skillResult.Updated))
agentTeamResult, err := agentteam.Init()
agentTeamResult, err := agentteam.Init(lang)
if err != nil {
return fmt.Errorf("init agent team failed: %w", err)
}
@@ -97,24 +104,24 @@ func run() error {
slog.Int("updatesApplied", agentTeamResult.UpdatesApplied),
)
aiAgentResult, err := aiagent.Init()
aiAgentResult, err := aiagent.Init(lang)
if err != nil {
return fmt.Errorf("init ai agent failed: %w", err)
}
slog.Info("ai agent init success", slog.Int("created", aiAgentResult.Created), slog.Int("updated", aiAgentResult.Updated))
channelResult, err := channel.Init()
channelResult, err := channel.Init(lang)
if err != nil {
return fmt.Errorf("init channel failed: %w", err)
}
slog.Info("channel init success", slog.Int("created", channelResult.Created), slog.Int("updated", channelResult.Updated))
if err := tag.Init(); err != nil {
if err := tag.Init(lang); err != nil {
slog.Error("init tag failed", "error", err)
}
slog.Info("tag init success")
if err := quickreply.Init(); err != nil {
if err := quickreply.Init(lang); err != nil {
return fmt.Errorf("init quick reply failed: %w", err)
}
slog.Info("quick reply init success")