fix(seeder): improve key idempotency and log names

Trim whitespace in provider model lists, format provider names as `group#keyID`
to match DP logs, and skip existing API keys during seeding (deleting on reset)
to keep runs idempotent and summaries accurate
This commit is contained in:
zenfun
2026-01-10 00:58:02 +08:00
parent 5431e24923
commit 6af938448e
3 changed files with 121 additions and 9 deletions

View File

@@ -198,12 +198,16 @@ type ProviderGroupResponse struct {
Status string `json:"status"`
}
// GetModelsSlice returns the Models field as a slice
// GetModelsSlice returns the Models field as a slice with trimmed whitespace
func (p *ProviderGroupResponse) GetModelsSlice() []string {
if p.Models == "" {
return nil
}
return strings.Split(p.Models, ",")
parts := strings.Split(p.Models, ",")
for i, part := range parts {
parts[i] = strings.TrimSpace(part)
}
return parts
}
func (c *Client) ListProviderGroups() ([]ProviderGroupResponse, error) {
@@ -472,6 +476,22 @@ func (c *Client) CreateKey(masterID uint, req KeyRequest) (*KeyResponse, error)
return &result, nil
}
func (c *Client) ListKeys(masterID uint) ([]KeyResponse, error) {
data, err := c.get(fmt.Sprintf("/admin/masters/%d/keys", masterID))
if err != nil {
return nil, err
}
var result []KeyResponse
if err := json.Unmarshal(data, &result); err != nil {
return nil, fmt.Errorf("unmarshal keys: %w", err)
}
return result, nil
}
func (c *Client) DeleteKey(masterID, keyID uint) error {
return c.delete(fmt.Sprintf("/admin/masters/%d/keys/%d", masterID, keyID))
}
// --- Log API ---
type LogRequest struct {