Go: add show users plan quota (#16818)

### Summary

```
RAGFlow(admin)> show users plan quota 100;
+---------+------------------------------------------+
| field   | value                                    |
+---------+------------------------------------------+
| quota   | 100                                      |
| command | show_users_plan_quota                    |
| error   | 'Show users plan quota' is not supported |
+---------+------------------------------------------+
```

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
Jin Hai
2026-07-10 20:27:33 +08:00
committed by GitHub
parent 8ced3d1f47
commit 106c2d0a41
6 changed files with 90 additions and 8 deletions

View File

@@ -1678,7 +1678,7 @@ func (c *CLI) AdminShowUsersActivityCommand(cmd *Command) (ResponseIf, error) {
return HandleCommonDataResponse(resp, "get users activity")
}
func (c *CLI) AdminShowUsersPlanCommand(cmd *Command) (ResponseIf, error) {
func (c *CLI) AdminShowUsersPlanSummaryCommand(cmd *Command) (ResponseIf, error) {
if c.Config.CLIMode != AdminMode || c.AdminServerClient.LoginToken == nil {
return nil, fmt.Errorf("this command is only allowed in ADMIN mode or already login")
@@ -1694,6 +1694,27 @@ func (c *CLI) AdminShowUsersPlanCommand(cmd *Command) (ResponseIf, error) {
return HandleCommonDataResponse(resp, "get users plan")
}
func (c *CLI) AdminShowUsersPlanQuotaCommand(cmd *Command) (ResponseIf, error) {
if c.Config.CLIMode != AdminMode || c.AdminServerClient.LoginToken == nil {
return nil, fmt.Errorf("this command is only allowed in ADMIN mode or already login")
}
quota, ok := cmd.Params["quota"].(int)
if !ok {
return nil, fmt.Errorf("quota not provided")
}
apiURL := fmt.Sprintf("/admin/users/plan?quota=%d", quota)
resp, err := c.AdminServerClient.Request("GET", apiURL, "admin", nil, nil)
if err != nil {
return nil, fmt.Errorf("failed to get users plan quota: %w", err)
}
return HandleCommonDataResponse(resp, "get users plan quota")
}
// ListUsers lists all users (admin mode only)
// Returns (result_map, error) - result_map is non-nil for benchmark mode
func (c *CLI) AdminListUsersCommand(cmd *Command) (ResponseIf, error) {

View File

@@ -2601,15 +2601,36 @@ commandLoop:
return cmd, nil
}
// SHOW USERS PLAN SUMMARY;
func (p *Parser) parseAdminShowUsersPlan() (*Command, error) {
p.nextToken() // consume PLAN
if p.curToken.Type != TokenSummary {
return nil, fmt.Errorf("expected SUMMARY")
}
p.nextToken()
var cmd *Command
switch p.curToken.Type {
case TokenSummary:
p.nextToken()
cmd = NewCommand("admin_show_users_plan_summary")
case TokenQuota:
p.nextToken()
cmd = NewCommand("admin_show_users_plan_quota")
if p.curToken.Type != TokenNumber {
return nil, fmt.Errorf("expected QUOTA")
}
quotaInt, err := p.parseNumber()
if err != nil {
return nil, err
}
p.nextToken()
if quotaInt < 0 || quotaInt > 100 {
return nil, fmt.Errorf("invalid quota value")
}
cmd.Params["quota"] = quotaInt
default:
return nil, fmt.Errorf("expected SUMMARY or QUOTA")
}
cmd := NewCommand("admin_show_users_plan_command")
if p.curToken.Type == TokenSemicolon {
p.nextToken()
}

View File

@@ -199,8 +199,10 @@ func (c *CLI) ExecuteAdminCommand(cmd *Command) (ResponseIf, error) {
return c.AdminShowUsersSummaryCommand(cmd)
case "admin_show_users_activity_command":
return c.AdminShowUsersActivityCommand(cmd)
case "admin_show_users_plan_command":
return c.AdminShowUsersPlanCommand(cmd)
case "admin_show_users_plan_summary":
return c.AdminShowUsersPlanSummaryCommand(cmd)
case "admin_show_users_plan_quota":
return c.AdminShowUsersPlanQuotaCommand(cmd)
case "admin_list_users_command":
return c.AdminListUsersCommand(cmd)
case "admin_list_users_condition_command":