diff --git a/internal/helpers/devapp.go b/internal/helpers/devapp.go index 13539224..1b33292e 100644 --- a/internal/helpers/devapp.go +++ b/internal/helpers/devapp.go @@ -583,11 +583,11 @@ func newDevAppMemberListCommand(runner executor.Runner) *cobra.Command { cmd := &cobra.Command{ Use: "list", Short: "查询开放平台应用成员", - Example: " dws devapp member list --app-id ", + Example: " dws devapp member list --unified-app-id ", Args: cobra.NoArgs, DisableAutoGenTag: true, RunE: func(cmd *cobra.Command, args []string) error { - appID, err := requiredDevAppID(cmd) + appID, err := requiredDevAppUnifiedIDWithLegacyAppID(cmd) if err != nil { return err } @@ -596,7 +596,7 @@ func newDevAppMemberListCommand(runner executor.Runner) *cobra.Command { }) }, } - cmd.Flags().String("app-id", "", "开放平台统一应用 ID (必填)") + addDevAppUnifiedIDFlagWithLegacyAppID(cmd) preferLegacyLeaf(cmd) return cmd } @@ -605,7 +605,7 @@ func newDevAppMemberAddCommand(runner executor.Runner) *cobra.Command { cmd := &cobra.Command{ Use: "add", Short: "添加开放平台应用成员", - Example: " dws devapp member add --app-id --users userId1,userId2 --member-type DEVELOPER --dry-run", + Example: " dws devapp member add --unified-app-id --users userId1,userId2 --member-type DEVELOPER --dry-run", Args: cobra.NoArgs, DisableAutoGenTag: true, RunE: func(cmd *cobra.Command, args []string) error { @@ -621,7 +621,7 @@ func newDevAppMemberRemoveCommand(runner executor.Runner) *cobra.Command { cmd := &cobra.Command{ Use: "remove", Short: "移除开放平台应用成员", - Example: " dws devapp member remove --app-id --users userId1,userId2 --member-type DEVELOPER --dry-run", + Example: " dws devapp member remove --unified-app-id --users userId1,userId2 --member-type DEVELOPER --dry-run", Args: cobra.NoArgs, DisableAutoGenTag: true, RunE: func(cmd *cobra.Command, args []string) error { @@ -637,7 +637,7 @@ func newDevAppSecurityConfigCommand(runner executor.Runner) *cobra.Command { cmd := &cobra.Command{ Use: "config", Short: "更新开放平台应用安全配置", - Example: " dws devapp security config --app-id " + + Example: " dws devapp security config --unified-app-id " + "--ip-whitelist 192.0.2.10 --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --dry-run", Args: cobra.NoArgs, DisableAutoGenTag: true, @@ -645,7 +645,7 @@ func newDevAppSecurityConfigCommand(runner executor.Runner) *cobra.Command { if err := devAppRequireWriteGuard(cmd, "security config"); err != nil { return err } - appID, err := requiredDevAppID(cmd) + appID, err := requiredDevAppUnifiedIDWithLegacyAppID(cmd) if err != nil { return err } @@ -666,7 +666,7 @@ func newDevAppSecurityConfigCommand(runner executor.Runner) *cobra.Command { return runDevAppTool(runner, cmd, devAppSecurityConfigTool, params) }, } - cmd.Flags().String("app-id", "", "开放平台统一应用 ID (必填)") + addDevAppUnifiedIDFlagWithLegacyAppID(cmd) cmd.Flags().String("ip-whitelist", "", "出口 IP 白名单,多个用逗号或分号分隔") cmd.Flags().String("redirect-url", "", "登录重定向 URL,多个用逗号或分号分隔") cmd.Flags().String("sso-url", "", "端内免登地址,多个用逗号或分号分隔") @@ -1115,6 +1115,12 @@ func addDevAppUnifiedIDFlag(cmd *cobra.Command) { cmd.Flags().String("unified-app-id", "", "统一应用 ID (必填)") } +func addDevAppUnifiedIDFlagWithLegacyAppID(cmd *cobra.Command) { + addDevAppUnifiedIDFlag(cmd) + cmd.Flags().String("app-id", "", "--unified-app-id 的兼容别名") + _ = cmd.Flags().MarkHidden("app-id") +} + func requiredDevAppUnifiedID(cmd *cobra.Command) (string, error) { appID := devAppStringFlag(cmd, "unified-app-id") if appID == "" { @@ -1123,6 +1129,17 @@ func requiredDevAppUnifiedID(cmd *cobra.Command) (string, error) { return appID, nil } +func requiredDevAppUnifiedIDWithLegacyAppID(cmd *cobra.Command) (string, error) { + appID := devAppStringFlag(cmd, "unified-app-id") + if appID == "" { + appID = devAppStringFlag(cmd, "app-id") + } + if appID == "" { + return "", apperrors.NewValidation("--unified-app-id is required") + } + return appID, nil +} + // --------------------------------------------------------------------------- // 事件订阅能力 // --------------------------------------------------------------------------- @@ -1189,7 +1206,7 @@ func devAppEventCodes(cmd *cobra.Command) []string { } func registerDevAppMemberMutationFlags(cmd *cobra.Command) { - cmd.Flags().String("app-id", "", "开放平台统一应用 ID (必填)") + addDevAppUnifiedIDFlagWithLegacyAppID(cmd) cmd.Flags().String("users", "", "成员 userId 列表,多个用逗号分隔 (必填)") cmd.Flags().String("member-type", "", "成员类型,如 DEVELOPER (必填)") } @@ -1198,7 +1215,7 @@ func runDevAppMemberMutation(runner executor.Runner, cmd *cobra.Command, tool, o if err := devAppRequireWriteGuard(cmd, operation); err != nil { return err } - appID, err := requiredDevAppID(cmd) + appID, err := requiredDevAppUnifiedIDWithLegacyAppID(cmd) if err != nil { return err } diff --git a/internal/helpers/devapp_test.go b/internal/helpers/devapp_test.go index 2a5f9e3e..62c12149 100644 --- a/internal/helpers/devapp_test.go +++ b/internal/helpers/devapp_test.go @@ -45,7 +45,7 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) { { name: "list", cmd: "list", - args: []string{"--app-id", "app-001"}, + args: []string{"--unified-app-id", "app-001"}, wantTool: "list_dev_app_members", wantParams: map[string]any{ "unifiedAppId": "app-001", @@ -54,7 +54,7 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) { { name: "add multiple users", cmd: "add", - args: []string{"--app-id", "app-001", "--users", "userId1,userId2,userId3,userId4", "--member-type", "DEVELOPER", "--yes"}, + args: []string{"--unified-app-id", "app-001", "--users", "userId1,userId2,userId3,userId4", "--member-type", "DEVELOPER", "--yes"}, wantTool: "add_dev_app_members", wantParams: map[string]any{ "unifiedAppId": "app-001", @@ -65,7 +65,7 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) { { name: "remove trims users", cmd: "remove", - args: []string{"--app-id", "app-001", "--users", " userId1 , userId2 ", "--member-type", "DEVELOPER", "--yes"}, + args: []string{"--unified-app-id", "app-001", "--users", " userId1 , userId2 ", "--member-type", "DEVELOPER", "--yes"}, wantTool: "remove_dev_app_members", wantParams: map[string]any{ "unifiedAppId": "app-001", @@ -101,6 +101,43 @@ func TestDevAppMemberCommandsBuildToolParams(t *testing.T) { } } +func TestDevAppMemberCommandsAcceptLegacyAppIDAlias(t *testing.T) { + runner := &captureRunner{} + root := newDevAppTestRoot(runner) + var out bytes.Buffer + root.SetOut(&out) + root.SetErr(&out) + root.SetArgs([]string{"devapp", "member", "list", "--app-id", "app-001"}) + + if err := root.Execute(); err != nil { + t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String()) + } + + want := map[string]any{"unifiedAppId": "app-001"} + if !reflect.DeepEqual(runner.last.Params, want) { + t.Fatalf("Params = %#v, want %#v", runner.last.Params, want) + } +} + +func TestDevAppMemberListHelpUsesUnifiedAppID(t *testing.T) { + root := newDevAppTestRoot(&captureRunner{}) + var out bytes.Buffer + root.SetOut(&out) + root.SetErr(&out) + root.SetArgs([]string{"devapp", "member", "list", "--help"}) + + if err := root.Execute(); err != nil { + t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String()) + } + help := out.String() + if !strings.Contains(help, "--unified-app-id") { + t.Fatalf("help missing --unified-app-id:\n%s", help) + } + if strings.Contains(help, "--app-id") { + t.Fatalf("help should hide legacy --app-id:\n%s", help) + } +} + func TestDevAppCommandHasAppAliasAndCoreCommands(t *testing.T) { root := newDevAppCommand(&captureRunner{}) if root.Name() != "devapp" { @@ -903,10 +940,10 @@ func TestDevAppMemberCommandsValidateRequiredFlags(t *testing.T) { args []string wantErr string }{ - {name: "list requires app", cmd: "list", args: nil, wantErr: "--app-id is required"}, - {name: "add requires users", cmd: "add", args: []string{"--app-id", "app-001", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users is required"}, - {name: "add rejects empty users", cmd: "add", args: []string{"--app-id", "app-001", "--users", " , ", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users must contain at least one userId"}, - {name: "remove requires member type", cmd: "remove", args: []string{"--app-id", "app-001", "--users", "userId1", "--dry-run"}, wantErr: "--member-type is required"}, + {name: "list requires app", cmd: "list", args: nil, wantErr: "--unified-app-id is required"}, + {name: "add requires users", cmd: "add", args: []string{"--unified-app-id", "app-001", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users is required"}, + {name: "add rejects empty users", cmd: "add", args: []string{"--unified-app-id", "app-001", "--users", " , ", "--member-type", "DEVELOPER", "--dry-run"}, wantErr: "--users must contain at least one userId"}, + {name: "remove requires member type", cmd: "remove", args: []string{"--unified-app-id", "app-001", "--users", "userId1", "--dry-run"}, wantErr: "--member-type is required"}, } for _, tc := range cases { @@ -940,7 +977,7 @@ func TestDevAppSecurityConfigBuildsOnlyProvidedLists(t *testing.T) { root.SetErr(&out) root.SetArgs([]string{ "devapp", "security", "config", - "--app-id", "app-001", + "--unified-app-id", "app-001", "--ip-whitelist", "192.0.2.10,192.0.2.11", "--redirect-url", "https://callback.example.invalid/callback", "--sso-url", "https://sso.example.invalid/sso", @@ -974,7 +1011,7 @@ func TestDevAppSecurityConfigOmitsAbsentOptionalLists(t *testing.T) { var out bytes.Buffer root.SetOut(&out) root.SetErr(&out) - root.SetArgs([]string{"devapp", "security", "config", "--app-id", "app-001", "--redirect-url", "https://callback.example.invalid/callback", "--dry-run"}) + root.SetArgs([]string{"devapp", "security", "config", "--unified-app-id", "app-001", "--redirect-url", "https://callback.example.invalid/callback", "--dry-run"}) if err := root.Execute(); err != nil { t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String()) @@ -995,7 +1032,7 @@ func TestDevAppSecurityConfigRequiresAtLeastOneConfig(t *testing.T) { var out bytes.Buffer root.SetOut(&out) root.SetErr(&out) - root.SetArgs([]string{"devapp", "security", "config", "--app-id", "app-001", "--dry-run"}) + root.SetArgs([]string{"devapp", "security", "config", "--unified-app-id", "app-001", "--dry-run"}) err := root.Execute() if err == nil { @@ -1009,6 +1046,27 @@ func TestDevAppSecurityConfigRequiresAtLeastOneConfig(t *testing.T) { } } +func TestDevAppSecurityConfigAcceptsLegacyAppIDAlias(t *testing.T) { + runner := &captureRunner{} + root := newDevAppTestRoot(runner) + var out bytes.Buffer + root.SetOut(&out) + root.SetErr(&out) + root.SetArgs([]string{"devapp", "security", "config", "--app-id", "app-001", "--redirect-url", "https://callback.example.invalid/callback", "--dry-run"}) + + if err := root.Execute(); err != nil { + t.Fatalf("Execute() error = %v\noutput:\n%s", err, out.String()) + } + + want := map[string]any{ + "unifiedAppId": "app-001", + "redirectUrls": []string{"https://callback.example.invalid/callback"}, + } + if !reflect.DeepEqual(runner.last.Params, want) { + t.Fatalf("Params = %#v, want %#v", runner.last.Params, want) + } +} + func TestDevAppMemberAndSecurityRequireWriteGuard(t *testing.T) { cases := []struct { name string diff --git a/skills/dingtalk-devapp/references/member-security.md b/skills/dingtalk-devapp/references/member-security.md index 088520bd..75b671bc 100644 --- a/skills/dingtalk-devapp/references/member-security.md +++ b/skills/dingtalk-devapp/references/member-security.md @@ -3,7 +3,7 @@ ## 成员查询 ```bash -dws devapp member list --app-id UNIFIED_APP_ID --format json +dws devapp member list --unified-app-id UNIFIED_APP_ID --format json ``` MCP tool: `list_dev_app_members` @@ -11,8 +11,8 @@ MCP tool: `list_dev_app_members` ## 添加成员 ```bash -dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json -dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json +dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json +dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json ``` MCP tool: `add_dev_app_members` @@ -20,30 +20,30 @@ MCP tool: `add_dev_app_members` ## 移除成员 ```bash -dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json -dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json +dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json +dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json ``` MCP tool: `remove_dev_app_members` | CLI | MCP | 说明 | |-----|-----|------| -| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) | +| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) | | `--users` | `memberUserIds` | userId 列表,逗号分隔(必填) | | `--member-type` | `memberType` | 成员类型,如 `DEVELOPER`(必填) | ## 安全配置 ```bash -dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json -dws devapp security config --app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json +dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json +dws devapp security config --unified-app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json ``` MCP tool: `update_dev_app_security_config` | CLI | MCP | 说明 | |-----|-----|------| -| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) | +| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) | | `--ip-whitelist` | `ipWhitelist` | 出口 IP 白名单,逗号/分号分隔 | | `--redirect-url` | `redirectUrls` | 登录重定向 URL,逗号/分号分隔 | | `--sso-url` | `ssoUrls` | 端内免登 URL,逗号/分号分隔 | diff --git a/skills/dingtalk-devapp/references/workflows.md b/skills/dingtalk-devapp/references/workflows.md index b07be648..5e876cfc 100644 --- a/skills/dingtalk-devapp/references/workflows.md +++ b/skills/dingtalk-devapp/references/workflows.md @@ -31,14 +31,14 @@ → 确认后加 --yes 7. 添加开发成员(按需) - dws devapp member add --app-id --users --member-type DEVELOPER --dry-run --format json + dws devapp member add --unified-app-id --users --member-type DEVELOPER --dry-run --format json → 确认后加 --yes 8. 验证成员 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json 9. 配置安全设置(按需) - dws devapp security config --app-id --ip-whitelist --redirect-url --dry-run --format json + dws devapp security config --unified-app-id --ip-whitelist --redirect-url --dry-run --format json → 确认后加 --yes ``` @@ -108,28 +108,28 @@ ```text 1. 查看当前成员 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json 2. 添加成员 - dws devapp member add --app-id --users --member-type DEVELOPER --dry-run --format json + dws devapp member add --unified-app-id --users --member-type DEVELOPER --dry-run --format json → 确认后加 --yes 3. 验证 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json 4. 移除成员 - dws devapp member remove --app-id --users --member-type DEVELOPER --dry-run --format json + dws devapp member remove --unified-app-id --users --member-type DEVELOPER --dry-run --format json → 确认后加 --yes 5. 验证 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json ``` ## 安全配置 ```text 1. 配置 IP 白名单 / 重定向 URL / 免登 URL - dws devapp security config --app-id \ + dws devapp security config --unified-app-id \ --ip-whitelist 192.0.2.10,192.0.2.11 \ --redirect-url https://callback.example.invalid/callback \ --sso-url https://sso.example.invalid/sso \ diff --git a/skills/mono/references/products/devapp.md b/skills/mono/references/products/devapp.md index 5901e69e..0fe2f482 100644 --- a/skills/mono/references/products/devapp.md +++ b/skills/mono/references/products/devapp.md @@ -163,9 +163,9 @@ MCP tool: `remove_dev_app_permissions`。`--permissions` 接收一个或多个 ` ### 成员管理 ```bash -dws devapp member list --app-id UNIFIED_APP_ID --format json -dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json -dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json +dws devapp member list --unified-app-id UNIFIED_APP_ID --format json +dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json +dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json ``` MCP tools: `list_dev_app_members` / `add_dev_app_members` / `remove_dev_app_members` @@ -173,7 +173,7 @@ MCP tools: `list_dev_app_members` / `add_dev_app_members` / `remove_dev_app_memb ### 安全配置 ```bash -dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --redirect-url https://callback.example.invalid/callback --dry-run --format json +dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --redirect-url https://callback.example.invalid/callback --dry-run --format json ``` MCP tool: `update_dev_app_security_config` diff --git a/skills/multi/dingtalk-devapp/references/member-security.md b/skills/multi/dingtalk-devapp/references/member-security.md index 088520bd..75b671bc 100644 --- a/skills/multi/dingtalk-devapp/references/member-security.md +++ b/skills/multi/dingtalk-devapp/references/member-security.md @@ -3,7 +3,7 @@ ## 成员查询 ```bash -dws devapp member list --app-id UNIFIED_APP_ID --format json +dws devapp member list --unified-app-id UNIFIED_APP_ID --format json ``` MCP tool: `list_dev_app_members` @@ -11,8 +11,8 @@ MCP tool: `list_dev_app_members` ## 添加成员 ```bash -dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json -dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json +dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json +dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --yes --format json ``` MCP tool: `add_dev_app_members` @@ -20,30 +20,30 @@ MCP tool: `add_dev_app_members` ## 移除成员 ```bash -dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json -dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json +dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --dry-run --format json +dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json ``` MCP tool: `remove_dev_app_members` | CLI | MCP | 说明 | |-----|-----|------| -| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) | +| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) | | `--users` | `memberUserIds` | userId 列表,逗号分隔(必填) | | `--member-type` | `memberType` | 成员类型,如 `DEVELOPER`(必填) | ## 安全配置 ```bash -dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json -dws devapp security config --app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json +dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json +dws devapp security config --unified-app-id UNIFIED_APP_ID --redirect-url https://callback.example.invalid/callback --sso-url https://sso.example.invalid/sso --yes --format json ``` MCP tool: `update_dev_app_security_config` | CLI | MCP | 说明 | |-----|-----|------| -| `--app-id` | `unifiedAppId` | 统一应用 ID(必填) | +| `--unified-app-id` | `unifiedAppId` | 统一应用 ID(必填) | | `--ip-whitelist` | `ipWhitelist` | 出口 IP 白名单,逗号/分号分隔 | | `--redirect-url` | `redirectUrls` | 登录重定向 URL,逗号/分号分隔 | | `--sso-url` | `ssoUrls` | 端内免登 URL,逗号/分号分隔 | diff --git a/skills/multi/dingtalk-devapp/references/workflows.md b/skills/multi/dingtalk-devapp/references/workflows.md index 7f4adac2..909a86e7 100644 --- a/skills/multi/dingtalk-devapp/references/workflows.md +++ b/skills/multi/dingtalk-devapp/references/workflows.md @@ -31,14 +31,14 @@ → 确认后加 --yes 7. 添加开发成员(按需) - dws devapp member add --app-id --users --member-type DEVELOPER --dry-run --format json + dws devapp member add --unified-app-id --users --member-type DEVELOPER --dry-run --format json → 确认后加 --yes 8. 验证成员 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json 9. 配置安全设置(按需) - dws devapp security config --app-id --ip-whitelist --redirect-url --dry-run --format json + dws devapp security config --unified-app-id --ip-whitelist --redirect-url --dry-run --format json → 确认后加 --yes ``` @@ -108,28 +108,28 @@ ```text 1. 查看当前成员 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json 2. 添加成员 - dws devapp member add --app-id --users --member-type DEVELOPER --dry-run --format json + dws devapp member add --unified-app-id --users --member-type DEVELOPER --dry-run --format json → 确认后加 --yes 3. 验证 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json 4. 移除成员 - dws devapp member remove --app-id --users --member-type DEVELOPER --dry-run --format json + dws devapp member remove --unified-app-id --users --member-type DEVELOPER --dry-run --format json → 确认后加 --yes 5. 验证 - dws devapp member list --app-id --format json + dws devapp member list --unified-app-id --format json ``` ## 安全配置 ```text 1. 配置 IP 白名单 / 重定向 URL / 免登 URL - dws devapp security config --app-id \ + dws devapp security config --unified-app-id \ --ip-whitelist 192.0.2.10,192.0.2.11 \ --redirect-url https://callback.example.invalid/callback \ --sso-url https://sso.example.invalid/sso \ diff --git a/test/skill_tests.md b/test/skill_tests.md index f8aede2a..658f1640 100644 --- a/test/skill_tests.md +++ b/test/skill_tests.md @@ -897,29 +897,29 @@ Agent 安装 dws skill 后,仅依据 skill 提供的参考文档,将自然 **devapp_devapp_member_list_001** - Prompt: 查看开放平台应用 UNIFIED_APP_ID 的成员 -- Expected: `dws devapp member list --app-id UNIFIED_APP_ID --format json` -- Flags: `--app-id` = `UNIFIED_APP_ID` +- Expected: `dws devapp member list --unified-app-id UNIFIED_APP_ID --format json` +- Flags: `--unified-app-id` = `UNIFIED_APP_ID` #### `dws devapp member add` **devapp_devapp_member_add_001** - Prompt: 给开放平台应用 UNIFIED_APP_ID 添加开发者成员 userId1,userId2,先预览 -- Expected: `dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json` -- Flags: `--app-id` = `UNIFIED_APP_ID`, `--users` = `userId1,userId2`, `--member-type` = `DEVELOPER` +- Expected: `dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json` +- Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--users` = `userId1,userId2`, `--member-type` = `DEVELOPER` #### `dws devapp member remove` **devapp_devapp_member_remove_001** - Prompt: 已确认,从开放平台应用 UNIFIED_APP_ID 移除开发者成员 userId1 -- Expected: `dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json` -- Flags: `--app-id` = `UNIFIED_APP_ID`, `--users` = `userId1`, `--member-type` = `DEVELOPER`, `--yes` +- Expected: `dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json` +- Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--users` = `userId1`, `--member-type` = `DEVELOPER`, `--yes` #### `dws devapp security config` **devapp_devapp_security_config_001** - Prompt: 给开放平台应用 UNIFIED_APP_ID 配置 IP 白名单 192.0.2.10,先预览 -- Expected: `dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json` -- Flags: `--app-id` = `UNIFIED_APP_ID`, `--ip-whitelist` = `192.0.2.10` +- Expected: `dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json` +- Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--ip-whitelist` = `192.0.2.10` #### `dws devapp permission list` diff --git a/test/skill_tests_results.md b/test/skill_tests_results.md index 9330788e..c4060328 100644 --- a/test/skill_tests_results.md +++ b/test/skill_tests_results.md @@ -1194,7 +1194,7 @@ **devapp_devapp_member_list_001** ✅ PASS - Prompt: 查看开放平台应用 UNIFIED_APP_ID 的成员 -- Expected: `dws devapp member list --app-id UNIFIED_APP_ID --format json` +- Expected: `dws devapp member list --unified-app-id UNIFIED_APP_ID --format json` - Skill Reference: references/products/devapp.md - Command path: PASS (devapp member list) - Flags: PASS (1 flags validated) @@ -1202,7 +1202,7 @@ **devapp_devapp_member_add_001** ✅ PASS - Prompt: 给开放平台应用 UNIFIED_APP_ID 添加开发者成员 userId1,userId2,先预览 -- Expected: `dws devapp member add --app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json` +- Expected: `dws devapp member add --unified-app-id UNIFIED_APP_ID --users userId1,userId2 --member-type DEVELOPER --dry-run --format json` - Skill Reference: references/products/devapp.md - Command path: PASS (devapp member add) - Flags: PASS (3 flags validated) @@ -1210,7 +1210,7 @@ **devapp_devapp_member_remove_001** ✅ PASS - Prompt: 已确认,从开放平台应用 UNIFIED_APP_ID 移除开发者成员 userId1 -- Expected: `dws devapp member remove --app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json` +- Expected: `dws devapp member remove --unified-app-id UNIFIED_APP_ID --users userId1 --member-type DEVELOPER --yes --format json` - Skill Reference: references/products/devapp.md - Command path: PASS (devapp member remove) - Flags: PASS (4 flags validated) @@ -1218,7 +1218,7 @@ **devapp_devapp_security_config_001** ✅ PASS - Prompt: 给开放平台应用 UNIFIED_APP_ID 配置 IP 白名单 192.0.2.10,先预览 -- Expected: `dws devapp security config --app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json` +- Expected: `dws devapp security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json` - Skill Reference: references/products/devapp.md - Command path: PASS (devapp security config) - Flags: PASS (2 flags validated)