| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package api
-
- import (
- "fmt"
- "log"
-
- "git.x2erp.com/qdy/go-base/ctx"
- "git.x2erp.com/qdy/go-base/model/response"
- "git.x2erp.com/qdy/go-svc-code/internal/opencode/container"
- )
-
- // InstanceStatusHandler 获取项目实例状态
- // 路由: GET /api/opencode/projects/:id/status
- func InstanceStatusHandler(manager *container.InstanceManager) func(string, *ctx.RequestContext) (*response.QueryResult[interface{}], error) {
- return func(id string, reqCtx *ctx.RequestContext) (*response.QueryResult[interface{}], error) {
- log.Printf("获取项目实例状态请求: 项目ID=%s", id)
-
- // 获取实例
- instance := manager.GetInstance(id)
- if instance == nil {
- // 实例不存在,返回停止状态
- instanceInfo := InstanceInfo{
- ProjectID: id,
- Status: string(container.StatusStopped),
- }
- return SuccessResponse(instanceInfo)
- }
-
- // 构建响应数据
- instanceInfo := InstanceInfo{
- ProjectID: instance.ProjectID,
- Port: instance.Port,
- PID: instance.PID,
- Status: string(instance.Status),
- ConfigPath: instance.ConfigPath,
- WorkDir: instance.WorkDir,
- APIBase: fmt.Sprintf("http://localhost:%d", instance.Port),
- ToolURL: instance.ToolURL,
- }
-
- if instance.Error != "" {
- instanceInfo.Status = string(container.StatusError)
- }
-
- log.Printf("实例状态查询成功: 项目=%s, 状态=%s", id, instance.Status)
- return SuccessResponse(instanceInfo)
- }
- }
|