Files
taiji-AI-PAD/Docs/前后端调试说明/API文档/07-计费与资源管理.md
T
2025-12-26 08:06:11 +00:00

16 KiB
Raw Blame History

计费与资源管理 API

基础URL: http://localhost:8002/api/billing-admin

权限说明: 以下接口需要管理员权限(super_admin、billing_admin、operations_admin)


目录

  1. 配额管理
  2. 资源监控
  3. 事件管理
  4. 追踪管理
  5. 审计日志
  6. 供应商健康检查
  7. 模型定价管理

配额管理

1. 获取用户配额信息

GET /api/billing-admin/quota/user/{user_id}

获取指定用户的配额汇总信息,包括余额、速率限制、活跃预警等。

响应示例:

{
  "success": true,
  "data": {
    "hasQuota": true,
    "alertType": null,
    "balance": {
      "balance": 2450.50,
      "creditLimit": 5000.00,
      "available": 7450.50,
      "dailyAvgCost": 85.30,
      "estimatedDays": 87.3
    },
    "rateLimit": {
      "currentRpm": 12,
      "rpmLimit": 60,
      "allowed": true
    },
    "activeAlerts": 0,
    "alerts": []
  }
}

2. 获取渠道配额信息

GET /api/billing-admin/quota/channel/{channel_id}

响应示例:

{
  "success": true,
  "data": {
    "hasQuota": true,
    "alertType": null,
    "channelCredit": 100000.00,
    "monthlyUsage": 15680.50,
    "usagePercent": 15.68
  }
}

3. 获取配额预警列表

GET /api/billing-admin/quota/alerts

查询参数:

  • user_id (string, 可选): 用户ID筛选
  • channel_id (string, 可选): 渠道ID筛选

响应示例:

{
  "success": true,
  "data": {
    "alerts": [
      {
        "id": "alert-uuid-1",
        "alertType": "balance_warning",
        "thresholdPercent": 20,
        "currentValue": 150.00,
        "thresholdValue": 200.00,
        "status": "active",
        "createdAt": "2025-12-26T10:00:00Z"
      }
    ],
    "count": 1
  }
}

4. 确认配额预警

PUT /api/billing-admin/quota/alerts/{alert_id}/acknowledge

响应示例:

{
  "success": true,
  "message": "预警已确认"
}

5. 解决配额预警

PUT /api/billing-admin/quota/alerts/{alert_id}/resolve

响应示例:

{
  "success": true,
  "message": "预警已解决"
}

资源监控

6. 获取平台资源概览

GET /api/billing-admin/resources/overview

获取平台整体资源使用概览(管理员视图)。

响应示例:

{
  "success": true,
  "data": {
    "todayCalls": 1580,
    "monthCalls": 45680,
    "activeUsersToday": 85,
    "activeAgents": 125,
    "monthTotalEu": 4568,
    "timestamp": "2025-12-26T12:00:00Z"
  }
}

7. 获取用户资源使用汇总

GET /api/billing-admin/resources/user/{user_id}

查询参数:

  • start_date (string, 必需): 开始日期 (ISO 8601)
  • end_date (string, 必需): 结束日期 (ISO 8601)

响应示例:

{
  "success": true,
  "data": {
    "totalCpuSeconds": 12580.5,
    "totalMemoryMbSeconds": 458720.0,
    "totalNetworkBytes": 156800000,
    "totalStorageBytes": 52428800,
    "totalApiCalls": 1580,
    "startDate": "2025-12-01T00:00:00Z",
    "endDate": "2025-12-26T23:59:59Z"
  }
}

8. 获取资源使用趋势

GET /api/billing-admin/resources/trends

查询参数:

  • user_id (string, 必需): 用户ID
  • period (string, 可选): 时间范围,可选值: 7d, 30d, 90d (默认: 7d)
  • granularity (string, 可选): 粒度,可选值: hourly, daily (默认: daily)

响应示例:

{
  "success": true,
  "data": {
    "trends": [
      {
        "periodStart": "2025-12-25T00:00:00Z",
        "periodEnd": "2025-12-25T23:59:59Z",
        "cpuSeconds": 458.5,
        "memoryMbSeconds": 16720.0,
        "networkBytes": 5680000,
        "apiCalls": 58
      }
    ]
  }
}

9. 获取Agent资源统计

GET /api/billing-admin/resources/agent/{agent_id}

查询参数:

  • start_date (string, 必需): 开始日期
  • end_date (string, 必需): 结束日期

响应示例:

{
  "success": true,
  "data": {
    "agentId": "agent-uuid-1",
    "totalExecutions": 1580,
    "avgExecutionTime": 145.2,
    "totalEuConsumed": 158.0,
    "successRate": 98.5,
    "startDate": "2025-12-01T00:00:00Z",
    "endDate": "2025-12-26T23:59:59Z"
  }
}

事件管理

10. 获取待处理事件

GET /api/billing-admin/events/pending

获取待处理的计费事件列表。

查询参数:

  • limit (int, 可选): 返回数量限制 (默认: 100, 最大: 1000)

响应示例:

{
  "success": true,
  "data": {
    "events": [
      {
        "id": "event-uuid-1",
        "eventId": "evt_abc123",
        "eventType": "execution.end",
        "userId": "user-uuid-1",
        "agentId": "agent-uuid-1",
        "payload": {
          "success": true,
          "duration_ms": 1250,
          "eu_consumed": 0.13
        },
        "status": "pending",
        "createdAt": "2025-12-26T12:00:00Z"
      }
    ],
    "count": 1
  }
}

11. 重试失败事件

POST /api/billing-admin/events/retry-failed

查询参数:

  • max_retries (int, 可选): 最大重试次数 (默认: 3, 最大: 10)

响应示例:

{
  "success": true,
  "data": {
    "retriedCount": 5
  },
  "message": "已重试 5 个事件"
}

12. 获取事件统计

GET /api/billing-admin/events/stats

查询参数:

  • start_date (string, 必需): 开始日期
  • end_date (string, 必需): 结束日期

响应示例:

{
  "success": true,
  "data": {
    "startDate": "2025-12-01T00:00:00Z",
    "endDate": "2025-12-26T23:59:59Z",
    "byStatus": {
      "completed": 4520,
      "pending": 15,
      "failed": 3
    },
    "byType": {
      "execution.end": 4200,
      "execution.start": 4200,
      "balance.deduct": 138
    },
    "total": 4538
  }
}

追踪管理

13. 获取执行追踪详情

GET /api/billing-admin/traces/execution/{execution_id}

获取单个执行的完整追踪信息。

响应示例:

{
  "success": true,
  "data": {
    "executionId": "exec-uuid-1",
    "traceId": "trace-abc123",
    "spans": [
      {
        "spanId": "span-1",
        "parentSpanId": null,
        "operationName": "agent_execute",
        "operationType": "agent_call",
        "startedAt": "2025-12-26T12:00:00Z",
        "endedAt": "2025-12-26T12:00:01.250Z",
        "durationMs": 1250,
        "status": "success",
        "inputData": {"prompt": "***REDACTED***"},
        "outputData": {"result": "..."},
        "tokensUsed": 450,
        "euConsumed": 0.13
      }
    ],
    "totalDurationMs": 1250,
    "totalEuConsumed": 0.13,
    "spanCount": 1
  }
}

14. 查询追踪记录

GET /api/billing-admin/traces

查询参数:

  • user_id (string, 可选): 用户ID筛选
  • agent_id (string, 可选): Agent ID筛选
  • status (string, 可选): 状态筛选 (running, success, error)
  • start_date (string, 可选): 开始日期
  • end_date (string, 可选): 结束日期
  • page (int, 可选): 页码 (默认: 1)
  • page_size (int, 可选): 每页数量 (默认: 20, 最大: 100)

响应示例:

{
  "success": true,
  "data": {
    "total": 150,
    "page": 1,
    "pageSize": 20,
    "totalPages": 8,
    "traces": [
      {
        "traceId": "trace-abc123",
        "executionId": "exec-uuid-1",
        "agentId": "agent-uuid-1",
        "agentName": "weather-agent",
        "userId": "user-uuid-1",
        "startedAt": "2025-12-26T12:00:00Z",
        "endedAt": "2025-12-26T12:00:01.250Z",
        "durationMs": 1250,
        "spanCount": 3,
        "totalTokens": 450,
        "totalEu": 0.13
      }
    ]
  }
}

15. 获取追踪统计

GET /api/billing-admin/traces/stats

查询参数:

  • user_id (string, 可选): 用户ID筛选
  • start_date (string, 必需): 开始日期
  • end_date (string, 必需): 结束日期

响应示例:

{
  "success": true,
  "data": {
    "startDate": "2025-12-01T00:00:00Z",
    "endDate": "2025-12-26T23:59:59Z",
    "totalTraces": 4200,
    "totalSpans": 12600,
    "totalDurationMs": 5250000,
    "avgDurationMs": 1250.0,
    "totalTokens": 1890000,
    "totalEu": 546.0,
    "byStatus": {
      "success": 4150,
      "error": 50
    },
    "byOperationType": [
      {"operationType": "agent_call", "count": 4200, "avgDurationMs": 850.0},
      {"operationType": "tool_call", "count": 6300, "avgDurationMs": 120.5},
      {"operationType": "llm_call", "count": 2100, "avgDurationMs": 980.0}
    ]
  }
}

审计日志

16. 查询审计日志

GET /api/billing-admin/audit/logs

查询参数:

  • user_id (string, 可选): 用户ID筛选
  • action (string, 可选): 操作类型筛选
  • resource_type (string, 可选): 资源类型筛选
  • success (bool, 可选): 成功/失败筛选
  • start_date (string, 可选): 开始日期
  • end_date (string, 可选): 结束日期
  • page (int, 可选): 页码 (默认: 1)
  • page_size (int, 可选): 每页数量 (默认: 20, 最大: 100)

可用的action类型:

操作类型 说明
auth.login 用户登录
auth.logout 用户登出
auth.password_change 密码修改
user.create 创建用户
user.update 更新用户
user.delete 删除用户
channel.create 创建渠道
channel.update 更新渠道
channel.delete 删除渠道
agent.create 创建Agent
agent.delete 删除Agent
application.approve 审批通过
application.reject 审批拒绝
billing.charge 计费扣款
provider.pricing_update 更新模型定价

响应示例:

{
  "success": true,
  "data": {
    "total": 500,
    "page": 1,
    "pageSize": 20,
    "totalPages": 25,
    "logs": [
      {
        "id": "log-uuid-1",
        "action": "channel.create",
        "actionName": "创建渠道",
        "resourceType": "channel",
        "resourceId": "channel-uuid-1",
        "userId": "admin-uuid-1",
        "userName": "超级管理员",
        "success": true,
        "details": {"channelName": "合作渠道A"},
        "errorMessage": null,
        "ipAddress": "192.168.1.100",
        "createdAt": "2025-12-26T10:00:00Z"
      }
    ]
  }
}

17. 获取审计日志汇总

GET /api/billing-admin/audit/summary

查询参数:

  • start_date (string, 必需): 开始日期
  • end_date (string, 必需): 结束日期

响应示例:

{
  "success": true,
  "data": {
    "startDate": "2025-12-01T00:00:00Z",
    "endDate": "2025-12-26T23:59:59Z",
    "total": 1580,
    "successTotal": 1550,
    "failTotal": 30,
    "byAction": [
      {"action": "auth.login", "actionName": "用户登录", "count": 850, "successCount": 820, "failCount": 30},
      {"action": "agent.create", "actionName": "创建Agent", "count": 45, "successCount": 45, "failCount": 0}
    ],
    "byResourceType": [
      {"resourceType": "user", "count": 520},
      {"resourceType": "agent", "count": 380},
      {"resourceType": "channel", "count": 150}
    ]
  }
}

18. 获取用户活动历史

GET /api/billing-admin/audit/user/{user_id}/activity

查询参数:

  • days (int, 可选): 天数 (默认: 30, 最大: 90)

响应示例:

{
  "success": true,
  "data": {
    "activity": [
      {
        "action": "auth.login",
        "actionName": "用户登录",
        "resourceType": "user",
        "resourceId": "user-uuid-1",
        "success": true,
        "ipAddress": "192.168.1.100",
        "createdAt": "2025-12-26T08:00:00Z"
      }
    ]
  }
}

供应商健康检查

19. 获取所有供应商健康状态

GET /api/billing-admin/providers/health

响应示例:

{
  "success": true,
  "data": {
    "providers": [
      {
        "providerId": "provider-uuid-1",
        "providerName": "OpenAI",
        "provider": "openai",
        "status": "active",
        "isHealthy": true,
        "lastResponseTimeMs": 45,
        "lastCheckAt": "2025-12-26T12:00:00Z",
        "uptime24h": 99.9
      }
    ]
  }
}

20. 获取供应商健康详情

GET /api/billing-admin/providers/{provider_id}/health

查询参数:

  • hours (int, 可选): 统计时间范围 (默认: 24, 最大: 168)

响应示例:

{
  "success": true,
  "data": {
    "providerId": "provider-uuid-1",
    "providerName": "OpenAI",
    "currentStatus": "active",
    "period": "24h",
    "totalChecks": 1440,
    "healthyCount": 1438,
    "unhealthyCount": 2,
    "uptimePercent": 99.86,
    "avgResponseTimeMs": 42.5,
    "maxResponseTimeMs": 180,
    "minResponseTimeMs": 25,
    "recentChecks": [
      {
        "isHealthy": true,
        "responseTimeMs": 45,
        "statusCode": 200,
        "errorMessage": null,
        "createdAt": "2025-12-26T12:00:00Z"
      }
    ]
  }
}

21. 执行供应商健康检查

POST /api/billing-admin/providers/health-check

立即执行所有供应商的健康检查。

响应示例:

{
  "success": true,
  "data": {
    "timestamp": "2025-12-26T12:00:00Z",
    "totalProviders": 3,
    "healthyCount": 3,
    "unhealthyCount": 0,
    "checks": [
      {
        "providerId": "provider-uuid-1",
        "providerName": "OpenAI",
        "isHealthy": true,
        "responseTimeMs": 45,
        "statusCode": 200,
        "errorMessage": null
      }
    ]
  }
}

模型定价管理

22. 获取模型定价列表

GET /api/billing-admin/pricing/models

查询参数:

  • provider_id (string, 可选): 供应商ID筛选
  • model_name (string, 可选): 模型名称模糊搜索

响应示例:

{
  "success": true,
  "data": {
    "pricing": [
      {
        "id": "pricing-uuid-1",
        "providerId": "provider-uuid-1",
        "providerName": "OpenAI",
        "modelName": "gpt-4o",
        "inputPricePer1k": 0.005,
        "outputPricePer1k": 0.015,
        "euPer1kTokens": 0.1,
        "maxContextLength": 128000,
        "maxOutputTokens": 4096,
        "isActive": true,
        "effectiveFrom": "2025-12-01T00:00:00Z"
      }
    ]
  }
}

23. 创建/更新模型定价

POST /api/billing-admin/pricing/models

请求体:

{
  "providerId": "provider-uuid-1",
  "modelName": "gpt-4o-mini",
  "inputPricePer1k": 0.00015,
  "outputPricePer1k": 0.0006,
  "euPer1kTokens": 0.05,
  "maxContextLength": 128000,
  "maxOutputTokens": 16384
}

请求参数说明:

  • providerId (string, 必需): 供应商ID
  • modelName (string, 必需): 模型名称
  • inputPricePer1k (float, 必需): 输入价格(每1K tokens),单位USD
  • outputPricePer1k (float, 必需): 输出价格(每1K tokens),单位USD
  • euPer1kTokens (float, 可选): EU转换率(默认: 0.1)
  • maxContextLength (int, 可选): 最大上下文长度(默认: 4096)
  • maxOutputTokens (int, 可选): 最大输出tokens(默认: 2048)

响应示例:

{
  "success": true,
  "data": {
    "id": "pricing-uuid-2",
    "modelName": "gpt-4o-mini"
  },
  "message": "模型定价已更新"
}

24. 计算模型调用成本

POST /api/billing-admin/pricing/calculate

计算指定模型调用的成本预估。

查询参数:

  • model_name (string, 必需): 模型名称
  • input_tokens (int, 必需): 输入tokens数量
  • output_tokens (int, 必需): 输出tokens数量

请求示例:

curl -X POST "http://localhost:8002/api/billing-admin/pricing/calculate?model_name=gpt-4o&input_tokens=1000&output_tokens=500" \
  -H "Authorization: Bearer $TOKEN"

响应示例:

{
  "success": true,
  "data": {
    "modelName": "gpt-4o",
    "inputTokens": 1000,
    "outputTokens": 500,
    "inputCost": 0.005,
    "outputCost": 0.0075,
    "totalCost": 0.0125,
    "euConsumed": 0.15
  }
}