Expose gateway billing flows from the synced server baseline

The preserved local work adds PopiNewAPI billing checkout, gateway account binding, and matching web console/pricing surfaces on top of the current test-server baseline. During the merge, the start-end video helpers from the deployed baseline were kept alongside the actionGenerate prompt handling from the WIP.

Constraint: Current usable baseline is 7054436, already deployed on the test server.

Rejected: Commit the WIP before syncing the baseline | would have hidden conflicts with the deployed start-end-frame changes.

Confidence: medium

Scope-risk: broad

Directive: Do not deploy this commit to the test server without rechecking gateway credentials and billing checkout behavior in that environment.

Tested: go test ./...

Tested: make build

Tested: cd web && npm run build
This commit is contained in:
wtgoku
2026-05-21 16:53:07 +08:00
parent 7054436a99
commit baba209519
31 changed files with 6035 additions and 86 deletions
+10
View File
@@ -427,3 +427,13 @@ func TestGenerateGeminiImageRefsAnnotatesMultiImageRoles(t *testing.T) {
t.Fatalf("unexpected style label: %#v", got)
}
}
func TestDecodeGeminiImageGenerationResponseAcceptsStringErrorCode(t *testing.T) {
_, _, err := decodeGeminiImageGenerationResponse(http.StatusBadRequest, []byte(`{"error":{"code":"model_not_found","message":"model unavailable","status":"INVALID_ARGUMENT"}}`), "gemini-3.1-flash-image-preview")
if err == nil {
t.Fatal("expected Gemini error response to fail")
}
if !strings.Contains(err.Error(), "model unavailable") {
t.Fatalf("unexpected error: %v", err)
}
}