package service

import "net/http"

// HTTPUpstream 上游 HTTP 请求接口
// 用于向上游 API（Claude、OpenAI、Gemini 等）发送请求
// 这是一个通用接口，可用于任何基于 HTTP 的上游服务
//
// 设计说明：
// - 支持可选代理配置
// - 支持账户级连接池隔离
// - 实现类负责连接池管理和复用
type HTTPUpstream interface {
	// Do 执行 HTTP 请求
	//
	// 参数:
	//   - req: HTTP 请求对象，由调用方构建
	//   - proxyURL: 代理服务器地址，空字符串表示直连
	//   - accountID: 账户 ID，用于连接池隔离（隔离策略为 account 或 account_proxy 时生效）
	//   - accountConcurrency: 账户并发限制，用于动态调整连接池大小
	//
	// 返回:
	//   - *http.Response: HTTP 响应，调用方必须关闭 Body
	//   - error: 请求错误（网络错误、超时等）
	//
	// 注意:
	//   - 调用方必须关闭 resp.Body，否则会导致连接泄漏
	//   - 响应体可能已被包装以跟踪请求生命周期
	Do(req *http.Request, proxyURL string, accountID int64, accountConcurrency int) (*http.Response, error)
}
