From 9e0f7bd2ea3fcb308c0b55818b956047b4b8e6aa Mon Sep 17 00:00:00 2001 From: "qcqcqc@bash-agent-dev" <1220204124@zust.edu.cn> Date: Thu, 24 Apr 2025 20:35:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BA=86=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=A2=84=E8=AE=BEmsg=E7=9A=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend-service/cmd/main.go | 2 +- backend-service/pkg/service/socket.go | 47 +++++++++++++++++++-------- shared/pkg/client/client.go | 2 +- shared/pkg/constants/server.go | 2 +- 4 files changed, 36 insertions(+), 17 deletions(-) diff --git a/backend-service/cmd/main.go b/backend-service/cmd/main.go index 242bca7..21af4f6 100644 --- a/backend-service/cmd/main.go +++ b/backend-service/cmd/main.go @@ -187,10 +187,10 @@ func initConfig() { viper.AddConfigPath(configDir) viper.SetConfigName("config") viper.SetConfigType("yaml") + logger.UpdateLogLevel() if err := viper.ReadInConfig(); err != nil { logger.Error("Error initializing config: %v", err) } - logger.UpdateLogLevel() logger.Debug("Initializing...") } diff --git a/backend-service/pkg/service/socket.go b/backend-service/pkg/service/socket.go index b88e9af..298e3fd 100644 --- a/backend-service/pkg/service/socket.go +++ b/backend-service/pkg/service/socket.go @@ -11,6 +11,8 @@ import ( "path/filepath" "strings" "time" + + "github.com/spf13/viper" ) type ExecParams struct { @@ -30,6 +32,10 @@ func NewUnixSocketTask() *UnixSocketTask { return &UnixSocketTask{} } +func init() { + viper.SetDefault("reporter.show_msg", true) +} + func (t *UnixSocketTask) Execute(ctx context.Context) { socketPath := constants.SocketPath @@ -167,23 +173,27 @@ func (t *UnixSocketTask) handleConnection(conn net.Conn) { // 在HTTP调用前发送[start]标记 t.writeMessage(conn, "[sthttp]") - initialMessage := constants.ColorBlue + "检测到您的命令执行出现错误! \n" + constants.ColorReset - t.writeMessage(conn, initialMessage) - logger.Debug("write: %s", initialMessage) + showMsg := viper.GetBool("reporter.show_msg") + // 显示加载动画 loading := true - go func() { - frames := []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"} - i := 0 - for loading { - t.writeMessage(conn, "\r正在查找解决方案"+frames[i%len(frames)]) - time.Sleep(100 * time.Millisecond) - i++ - } + if showMsg { + initialMessage := constants.ColorBlue + "检测到您的命令执行出现错误! \n" + constants.ColorReset + t.writeMessage(conn, initialMessage) + go func() { + frames := []string{"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"} + i := 0 + for loading { + t.writeMessage(conn, "\r正在查找解决方案"+frames[i%len(frames)]) + time.Sleep(100 * time.Millisecond) + i++ + } - }() + }() + + time.Sleep(200 * time.Millisecond) + } - time.Sleep(200 * time.Millisecond) client := client.NewClient() handleQuestion := func(question string) { @@ -210,10 +220,19 @@ func (t *UnixSocketTask) handleConnection(conn net.Conn) { if err != nil { logger.Error("PostToStream error: %v", err) + if showMsg { + t.writeMessage(conn, constants.ColorRed+"请求失败,请稍后再试"+constants.ColorReset) + } } + var resetMsg string + if showMsg { + resetMsg = constants.ColorReset + } else { + resetMsg = "\n\r" + constants.ColorReset + } // 结束后发送结束标记 - t.writeMessage(conn, "\n\r"+constants.ColorReset) + t.writeMessage(conn, resetMsg) t.writeMessage(conn, "[end]") conn.Close() // 关闭连接,防止客户端一直等待inf logger.Debug("connection done.") diff --git a/shared/pkg/client/client.go b/shared/pkg/client/client.go index c040700..e0e5ba3 100644 --- a/shared/pkg/client/client.go +++ b/shared/pkg/client/client.go @@ -52,7 +52,7 @@ func WithBaseURL(baseURL string) ClientOption { } func init() { - viper.SetDefault("machine_registry.endpoint", "http://localhost:3001/endpoint") + viper.SetDefault("machine_registry.endpoint", "https://bash-backend.zustmyy.top/endpoint") } func NewClient(opts ...ClientOption) *Client { diff --git a/shared/pkg/constants/server.go b/shared/pkg/constants/server.go index 0ece1d1..b22e5ec 100644 --- a/shared/pkg/constants/server.go +++ b/shared/pkg/constants/server.go @@ -9,6 +9,6 @@ const ( ClientTimeout = 120 * time.Second MachineInfoApi = "/machine" GetVersionApi = "/version" - QuestionStreamApi = "/question" + QuestionStreamApi = "/problem" GetConfigApi = "/config" )