Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
陈曦
sub2api
Commits
1f647b12
Commit
1f647b12
authored
Feb 10, 2026
by
song
Browse files
feat(antigravity): 转发与测试支持daily/prod单URL切换
parent
5dd83d3c
Changes
2
Hide whitespace changes
Inline
Side-by-side
backend/internal/service/antigravity_gateway_service.go
View file @
1f647b12
...
...
@@ -70,6 +70,7 @@ var antigravityPassthroughErrorMessages = []string{
const
(
antigravityBillingModelEnv
=
"GATEWAY_ANTIGRAVITY_BILL_WITH_MAPPED_MODEL"
antigravityForwardBaseURLEnv
=
"GATEWAY_ANTIGRAVITY_FORWARD_BASE_URL"
antigravityFallbackSecondsEnv
=
"GATEWAY_ANTIGRAVITY_FALLBACK_COOLDOWN_SECONDS"
)
...
...
@@ -131,6 +132,20 @@ type antigravityRetryLoopResult struct {
resp
*
http
.
Response
}
// resolveAntigravityForwardBaseURL 解析转发用 base URL。
// 默认使用 daily(ForwardBaseURLs 的首个地址);当环境变量为 prod 时使用第二个地址。
func
resolveAntigravityForwardBaseURL
()
string
{
baseURLs
:=
antigravity
.
ForwardBaseURLs
()
if
len
(
baseURLs
)
==
0
{
return
""
}
mode
:=
strings
.
ToLower
(
strings
.
TrimSpace
(
os
.
Getenv
(
antigravityForwardBaseURLEnv
)))
if
mode
==
"prod"
&&
len
(
baseURLs
)
>
1
{
return
baseURLs
[
1
]
}
return
baseURLs
[
0
]
}
// smartRetryAction 智能重试的处理结果
type
smartRetryAction
int
...
...
@@ -466,10 +481,11 @@ func (s *AntigravityGatewayService) antigravityRetryLoop(p antigravityRetryLoopP
}
}
availabl
eURL
s
:=
a
ntigravity
.
DefaultURLAvailability
.
GetAvailabl
eURL
s
()
if
len
(
availabl
eURL
s
)
==
0
{
availableURLs
=
antigravity
.
BaseURLs
bas
eURL
:=
resolveA
ntigravity
ForwardBas
eURL
()
if
bas
eURL
==
""
{
return
nil
,
errors
.
New
(
"no antigravity forward base url configured"
)
}
availableURLs
:=
[]
string
{
baseURL
}
var
resp
*
http
.
Response
var
usedBaseURL
string
...
...
@@ -907,11 +923,11 @@ func (s *AntigravityGatewayService) TestConnection(ctx context.Context, account
proxyURL
=
account
.
Proxy
.
URL
()
}
// URL fallback 循环
availableURLs
:=
antigravity
.
DefaultURLAvailability
.
GetAvailableURLs
()
if
len
(
availableURLs
)
==
0
{
availableURLs
=
antigravity
.
BaseURLs
// 所有 URL 都不可用时,重试所有
baseURL
:=
resolveAntigravityForwardBaseURL
()
if
baseURL
==
""
{
return
nil
,
errors
.
New
(
"no antigravity forward base url configured"
)
}
availableURLs
:=
[]
string
{
baseURL
}
var
lastErr
error
for
urlIdx
,
baseURL
:=
range
availableURLs
{
...
...
backend/internal/service/antigravity_rate_limit_test.go
View file @
1f647b12
...
...
@@ -915,6 +915,22 @@ func TestIsAntigravityAccountSwitchError(t *testing.T) {
}
}
func
TestResolveAntigravityForwardBaseURL_DefaultDaily
(
t
*
testing
.
T
)
{
t
.
Setenv
(
antigravityForwardBaseURLEnv
,
""
)
oldBaseURLs
:=
append
([]
string
(
nil
),
antigravity
.
BaseURLs
...
)
defer
func
()
{
antigravity
.
BaseURLs
=
oldBaseURLs
}()
prodURL
:=
"https://prod.test"
dailyURL
:=
"https://daily.test"
antigravity
.
BaseURLs
=
[]
string
{
dailyURL
,
prodURL
}
resolved
:=
resolveAntigravityForwardBaseURL
()
require
.
Equal
(
t
,
dailyURL
,
resolved
)
}
func
TestAntigravityAccountSwitchError_Error
(
t
*
testing
.
T
)
{
err
:=
&
AntigravityAccountSwitchError
{
OriginalAccountID
:
789
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment