feat(portal): add logical group packaging config
This commit is contained in:
@@ -19,20 +19,31 @@ func TestAPICreateLogicalGroupReturnsCreated(t *testing.T) {
|
||||
if req.UsageScenario != "适合统一 GPT 产品入口" {
|
||||
t.Fatalf("UsageScenario = %q, want configured guidance", req.UsageScenario)
|
||||
}
|
||||
if req.VisibilityScope != "login_required" || req.PackageTier != "pro" || req.PurchaseCTALabel != "升级到 Pro" || req.PurchaseCTAURL != "https://sub.tksea.top/portal/upgrade/pro" {
|
||||
t.Fatalf("packaging fields = %+v, want configured packaging", req)
|
||||
}
|
||||
return LogicalGroupInfo{
|
||||
LogicalGroupID: req.LogicalGroupID,
|
||||
DisplayName: req.DisplayName,
|
||||
Status: req.Status,
|
||||
UsageScenario: req.UsageScenario,
|
||||
LogicalGroupID: req.LogicalGroupID,
|
||||
DisplayName: req.DisplayName,
|
||||
Status: req.Status,
|
||||
UsageScenario: req.UsageScenario,
|
||||
VisibilityScope: req.VisibilityScope,
|
||||
PackageTier: req.PackageTier,
|
||||
PurchaseCTALabel: req.PurchaseCTALabel,
|
||||
PurchaseCTAURL: req.PurchaseCTAURL,
|
||||
}, nil
|
||||
},
|
||||
})
|
||||
|
||||
request := httptestRequest(t, http.MethodPost, "/api/logical-groups", map[string]any{
|
||||
"logical_group_id": "gpt-shared",
|
||||
"display_name": "GPT Shared",
|
||||
"status": "active",
|
||||
"usage_scenario": "适合统一 GPT 产品入口",
|
||||
"logical_group_id": "gpt-shared",
|
||||
"display_name": "GPT Shared",
|
||||
"status": "active",
|
||||
"usage_scenario": "适合统一 GPT 产品入口",
|
||||
"visibility_scope": "login_required",
|
||||
"package_tier": "pro",
|
||||
"purchase_cta_label": "升级到 Pro",
|
||||
"purchase_cta_url": "https://sub.tksea.top/portal/upgrade/pro",
|
||||
}, "secret-token")
|
||||
response := httptestRecorder(handler, request)
|
||||
assertStatusCode(t, response, http.StatusCreated)
|
||||
@@ -46,13 +57,17 @@ func TestAPIGetLogicalGroupReturnsAggregatedItem(t *testing.T) {
|
||||
t.Fatalf("groupID = %q, want gpt-shared", groupID)
|
||||
}
|
||||
return LogicalGroupInfo{
|
||||
LogicalGroupID: groupID,
|
||||
DisplayName: "GPT Shared",
|
||||
Status: "active",
|
||||
UsageScenario: "适合统一 GPT 产品入口",
|
||||
Recommendation: "优先使用 gpt-5.4",
|
||||
NextStepHint: "先创建测试 Key",
|
||||
Models: []LogicalGroupModelInfo{{PublicModel: "gpt-5.4", Status: "active"}},
|
||||
LogicalGroupID: groupID,
|
||||
DisplayName: "GPT Shared",
|
||||
Status: "active",
|
||||
UsageScenario: "适合统一 GPT 产品入口",
|
||||
Recommendation: "优先使用 gpt-5.4",
|
||||
NextStepHint: "先创建测试 Key",
|
||||
VisibilityScope: "login_required",
|
||||
PackageTier: "pro",
|
||||
PurchaseCTALabel: "升级到 Pro",
|
||||
PurchaseCTAURL: "https://sub.tksea.top/portal/upgrade/pro",
|
||||
Models: []LogicalGroupModelInfo{{PublicModel: "gpt-5.4", Status: "active"}},
|
||||
Routes: []LogicalGroupRouteInfo{{
|
||||
RouteID: "asxs",
|
||||
LogicalGroupID: groupID,
|
||||
@@ -94,6 +109,9 @@ func TestAPIGetLogicalGroupReturnsAggregatedItem(t *testing.T) {
|
||||
if group["usage_scenario"] != "适合统一 GPT 产品入口" || group["recommendation"] != "优先使用 gpt-5.4" || group["next_step_hint"] != "先创建测试 Key" {
|
||||
t.Fatalf("group guidance = %#v, want configured guidance fields", group)
|
||||
}
|
||||
if group["visibility_scope"] != "login_required" || group["package_tier"] != "pro" || group["purchase_cta_label"] != "升级到 Pro" || group["purchase_cta_url"] != "https://sub.tksea.top/portal/upgrade/pro" {
|
||||
t.Fatalf("group packaging = %#v, want configured packaging fields", group)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAPICreateLogicalGroupRouteUsesPathGroupID(t *testing.T) {
|
||||
@@ -159,12 +177,16 @@ func TestNewActionSetLogicalGroupCRUDFlow(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
|
||||
createdGroup, err := actions.CreateLogicalGroup(ctx, CreateLogicalGroupRequest{
|
||||
LogicalGroupID: "gpt-shared",
|
||||
DisplayName: "GPT Shared",
|
||||
Status: "active",
|
||||
UsageScenario: "适合统一 GPT 产品入口",
|
||||
Recommendation: "优先使用 gpt-5.4",
|
||||
NextStepHint: "先创建测试 Key",
|
||||
LogicalGroupID: "gpt-shared",
|
||||
DisplayName: "GPT Shared",
|
||||
Status: "active",
|
||||
UsageScenario: "适合统一 GPT 产品入口",
|
||||
Recommendation: "优先使用 gpt-5.4",
|
||||
NextStepHint: "先创建测试 Key",
|
||||
VisibilityScope: "login_required",
|
||||
PackageTier: "pro",
|
||||
PurchaseCTALabel: "升级到 Pro",
|
||||
PurchaseCTAURL: "https://sub.tksea.top/portal/upgrade/pro",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("CreateLogicalGroup() error = %v", err)
|
||||
@@ -175,6 +197,9 @@ func TestNewActionSetLogicalGroupCRUDFlow(t *testing.T) {
|
||||
if createdGroup.UsageScenario != "适合统一 GPT 产品入口" || createdGroup.Recommendation != "优先使用 gpt-5.4" || createdGroup.NextStepHint != "先创建测试 Key" {
|
||||
t.Fatalf("CreateLogicalGroup() guidance = %+v, want configured guidance fields", createdGroup)
|
||||
}
|
||||
if createdGroup.VisibilityScope != "login_required" || createdGroup.PackageTier != "pro" || createdGroup.PurchaseCTALabel != "升级到 Pro" || createdGroup.PurchaseCTAURL != "https://sub.tksea.top/portal/upgrade/pro" {
|
||||
t.Fatalf("CreateLogicalGroup() packaging = %+v, want configured packaging fields", createdGroup)
|
||||
}
|
||||
|
||||
if _, err := actions.CreateLogicalGroupModel(ctx, CreateLogicalGroupModelRequest{
|
||||
LogicalGroupID: "gpt-shared",
|
||||
@@ -219,14 +244,21 @@ func TestNewActionSetLogicalGroupCRUDFlow(t *testing.T) {
|
||||
if group.UsageScenario != "适合统一 GPT 产品入口" || group.Recommendation != "优先使用 gpt-5.4" || group.NextStepHint != "先创建测试 Key" {
|
||||
t.Fatalf("GetLogicalGroup() guidance = %+v, want configured guidance fields", group)
|
||||
}
|
||||
if group.VisibilityScope != "login_required" || group.PackageTier != "pro" || group.PurchaseCTALabel != "升级到 Pro" || group.PurchaseCTAURL != "https://sub.tksea.top/portal/upgrade/pro" {
|
||||
t.Fatalf("GetLogicalGroup() packaging = %+v, want configured packaging fields", group)
|
||||
}
|
||||
|
||||
if _, err := actions.UpdateLogicalGroup(ctx, UpdateLogicalGroupRequest{
|
||||
LogicalGroupID: "gpt-shared",
|
||||
DisplayName: "GPT Shared Updated",
|
||||
Status: "paused",
|
||||
UsageScenario: "适合升级后的 GPT 产品入口",
|
||||
Recommendation: "先验证高质量推理链路",
|
||||
NextStepHint: "升级后重新申请测试 Key",
|
||||
LogicalGroupID: "gpt-shared",
|
||||
DisplayName: "GPT Shared Updated",
|
||||
Status: "paused",
|
||||
UsageScenario: "适合升级后的 GPT 产品入口",
|
||||
Recommendation: "先验证高质量推理链路",
|
||||
NextStepHint: "升级后重新申请测试 Key",
|
||||
VisibilityScope: "entitled_only",
|
||||
PackageTier: "enterprise",
|
||||
PurchaseCTALabel: "联系销售升级",
|
||||
PurchaseCTAURL: "https://sub.tksea.top/portal/contact-sales",
|
||||
}); err != nil {
|
||||
t.Fatalf("UpdateLogicalGroup() error = %v", err)
|
||||
}
|
||||
@@ -254,6 +286,9 @@ func TestNewActionSetLogicalGroupCRUDFlow(t *testing.T) {
|
||||
if groups[0].UsageScenario != "适合升级后的 GPT 产品入口" || groups[0].Recommendation != "先验证高质量推理链路" || groups[0].NextStepHint != "升级后重新申请测试 Key" {
|
||||
t.Fatalf("ListLogicalGroups() guidance = %+v, want updated guidance fields", groups[0])
|
||||
}
|
||||
if groups[0].VisibilityScope != "entitled_only" || groups[0].PackageTier != "enterprise" || groups[0].PurchaseCTALabel != "联系销售升级" || groups[0].PurchaseCTAURL != "https://sub.tksea.top/portal/contact-sales" {
|
||||
t.Fatalf("ListLogicalGroups() packaging = %+v, want updated packaging fields", groups[0])
|
||||
}
|
||||
|
||||
routeModels, err := actions.ListLogicalGroupRouteModels(ctx, ListLogicalGroupRouteModelsRequest{
|
||||
LogicalGroupID: "gpt-shared",
|
||||
|
||||
Reference in New Issue
Block a user