Qoder计费问题交流讨论

幸亏现在免费,要是收费真心用不起,修复个简单的错误,50条记录就用出去了,:sweat_smile::GIN-debug] POST /api/v1/auth/login → github.com/liujinliang/bjgpt/iot/backend/internal/api/handler.(*AuthHandler).Login-fm (6 handlers)
panic: handlers are already registered for path ‘/api/v1/auth/login’

goroutine 1 [running]:
github.com/gin-gonic/gin.(*node).addRoute(0x1400011f8f0, {0x140001af105, 0x5}, {0x140000bd6e0, 0x6, 0x6})
/Users/liujinliang/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/tree.go:260 +0x720
github.com/gin-gonic/gin.(*Engine).addRoute(0x140001c0680, {0x1055eb040, 0x4}, {0x140001af0f8, 0x12}, {0x140000bd6e0, 0x6, 0x6})
/Users/liujinliang/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:352 +0x25c
github.com/gin-gonic/gin.(*RouterGroup).handle(0x14000412b00, {0x1055eb040, 0x4}, {0x1055f1c25, 0x6}, {0x140000bd6e0, 0x6, 0x6})
/Users/liujinliang/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/routergroup.go:89 +0xa8
github.com/gin-gonic/gin.(*RouterGroup).POST(0x14000412b00, {0x1055f1c25, 0x6}, {0x1400018c320, 0x1, 0x1})
/Users/liujinliang/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/routergroup.go:112 +0x5c
github.com/liujinliang/bjgpt/iot/backend/internal/api.(*RouteRegistry).RegisterRoutes(0x140000bc360, 0x14000412900, 0x105a8fd18)
/Users/liujinliang/workspace/ai/iot/backend/internal/api/route_registry.go:78 +0x5d8
github.com/liujinliang/bjgpt/iot/backend/internal/api.(*UnifiedRouteManager).ApplyRoutes(0x140001105c0, 0x14000412900, 0x105a8fd18)
/Users/liujinliang/workspace/ai/iot/backend/internal/api/unified_route_manager.go:157 +0x3c

github.com/liujinliang/bjgpt/iot/backend/cmd.runServerV2()

/Users/liujinliang/workspace/ai/iot/backend/cmd/serve_v2.go:311 +0x1b4c
github.com/liujinliang/bjgpt/iot/backend/cmd.addServeV2Command.func1(0x140002a5508, {0x1065befc0, 0x0, 0x0})
/Users/liujinliang/workspace/ai/iot/backend/cmd/serve_v2.go:35 +0x2c
github.com/spf13/cobra.(*Command).execute(0x140002a5508, {0x1065befc0, 0x0, 0x0})
/Users/liujinliang/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1019 +0xc18

github.com/spf13/cobra.(*Command).ExecuteC(0x106581c80)

/Users/liujinliang/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1148 +0x7dc

github.com/spf13/cobra.(*Command).Execute(0x106581c80)

/Users/liujinliang/go/pkg/mod/github.com/spf13/cobra@v1.9.1/command.go:1071 +0x30

github.com/liujinliang/bjgpt/iot/backend/cmd.Execute()

/Users/liujinliang/workspace/ai/iot/backend/cmd/cmd.go:24 +0x28
main.main()
/Users/liujinliang/workspace/ai/iot/backend/cmd/server/main.go:14 +0xe8
Exiting.

我看到问题了!这是一个路由重复注册的问题。错误信息显示:


panic: handlers are already registered for path '/api/v1/auth/login'

这意味着在新版本的路由系统中,同一个路由被注册了多次。让我分析并修复这个问题。

已查看

serve_v2.go

(81 - 301)

现在让我查看路由注册的部分:

已查看

serve_v2.go

(168 - 367)

我发现了问题!在代码中存在路由重复注册的问题:

  1. 第308行:unifiedRouteManager.RegisterAllRoutes() - 这会注册所有路由

  2. 第310-318行:routerManager.SetupRouterV2() - 这个方法可能也会注册一些路由

  3. 第321-322行:unifiedRouteManager.ApplyRoutes(apiV1, authMiddleware) - 又再次应用了所有路由

这导致了路由的重复注册。让我检查一下 [SetupRouterV2](file:///Users/liujinliang/workspace/ai/iot/backend/internal/api/router_manager.go#L34-L94) 方法是否也注册了路由:

已查看

router_manager.go

找到问题了!在 [SetupRouterV2](file:///Users/liujinliang/workspace/ai/iot/backend/internal/api/router_manager.go#L34-L94) 方法的第96-99行中,已经设置了认证路由:

go
// 认证路由(不需要认证中间件)
rm.setupAuthRoutes(apiV1)

而 [setupAuthRoutes](file:///Users/liujinliang/workspace/ai/iot/backend/internal/api/router_manager.go#L97-L110) 方法注册了 /auth/login 路由。

然后在 [serve_v2.go](file:///Users/liujinliang/workspace/ai/iot/backend/cmd/serve_v2.go) 中又通过 [UnifiedRouteManager.ApplyRoutes](file:///Users/liujinliang/workspace/ai/iot/backend/internal/api/unified_route_manager.go#L156-L158) 再次注册了同样的路由,导致冲突。

问题在于我们混合了两种路由注册方式:

  1. [RouterManager](file:///Users/liujinliang/workspace/ai/iot/backend/internal/api/router_manager.go#L13-L17) 的传统方式

  2. [UnifiedRouteManager](file:///Users/liujinliang/workspace/ai/iot/backend/internal/api/unified_route_manager.go#L9-L16) 的新版本方式

根据项目规范,我们应该统一使用 [UnifiedRouteManager](file:///Users/liujinliang/workspace/ai/iot/backend/internal/api/unified_route_manager.go#L9-L16)。让我修复这个问题:

‎serve_v2.go

+34-12M已应用

现在我需要添加必要的导入:

‎serve_v2.go

+1M已应用

现在让我测试修复是否成功:

终端已运行

cd /Users/liujinliang/workspace/ai/iot/backend && go run cmd/server/main.go serve-v2 --help

终端输出

查看终端

我需要添加gin包的导入:

‎serve_v2.go

+1M已接受

现在再次测试:

终端已运行

cd /Users/liujinliang/workspace/ai/iot/backend && go run cmd/server/main.go serve-v2 --help

终端输出

查看终端

看起来导入还没有生效。让我检查一下导入是否正确:

已查看

serve_v2.go

(1 - 200)

导入看起来是正确的。让我清理一下Go模块缓存,然后再次尝试:

终端已运行

cd /Users/liujinliang/workspace/ai/iot/backend && go mod tidy

终端输出

查看终端

终端已运行

cd /Users/liujinliang/workspace/ai/iot/backend && go run cmd/server/main.go serve-v2 --help

终端输出

查看终端

太好了!现在帮助命令可以正常工作了。让我们测试一下实际启动服务器是否还有路由冲突的问题。但首先,我需要创建一个简单的配置文件来测试:

终端已运行

cd /Users/liujinliang/workspace/ai/iot/backend && ls configs/

终端输出

查看终端

配置文件存在。让我们测试一下服务启动,但只运行很短的时间来检查路由是否正常注册:

终端已运行

cd /Users/liujinliang/workspace/ai/iot/backend && timeout 10s go run cmd/server/main.go serve-v2 || echo "Test completed"

终端输出

查看终端

我看到这个错误是因为路由重复注册导致的panic。错误显示 /api/v1/auth/login 路径已经被注册过了。让我分析一下 [serve_v2.go](file:///Users/liujinliang/workspace/ai/iot/backend/cmd/serve_v2.go) 中的路由注册逻辑。

已查看

serve_v2.go

(192 - 391)

现在让我查看是否存在旧版本的路由注册逻辑被同时调用:

已检索仓库RouterManager SetupRouterV2 route registration21 个结果

1 Like

仁者见仁, 曾经花100刀订阅过Github的Copilot,而Qoder表现比Github copilot好用多了。

2 Likes

流速比较快

另外,我还是想知道用的是什么模型,不让我选至少让我看一下啊 :roll_eyes:

1 Like

就像每次买东西你不知道多钱的情况下让你扫码付款。

是的 我也想知道模型和切换模型的方法 然后尝试很久木有找到哈

是的!2000一天差不多就用完了!而且模型不透明!还在试用阶段风控就搞那么严!:laughing: