This feature allows API Keys to have their own quota limits and expiration times, independent of the user's balance. Backend: - Add quota, quota_used, expires_at fields to api_key schema - Implement IsExpired() and IsQuotaExhausted() checks in middleware - Add ResetQuota and ClearExpiration API endpoints - Integrate quota billing in gateway handlers (OpenAI, Anthropic, Gemini) - Include quota/expiration fields in auth cache for performance - Expiration check returns 403, quota exhausted returns 429 Frontend: - Add quota and expiration inputs to key create/edit dialog - Add quick-select buttons for expiration (+7, +30, +90 days) - Add reset quota confirmation dialog - Add expires_at column to keys list - Add i18n translations for new features (en/zh) Migration: - Add 045_add_api_key_quota.sql for new columns
25 lines
313 B
Docker
25 lines
313 B
Docker
FROM golang:1.25.6-alpine
|
|
|
|
WORKDIR /app
|
|
|
|
# 安装必要的工具
|
|
RUN apk add --no-cache git
|
|
|
|
# 复制go.mod和go.sum
|
|
COPY go.mod go.sum ./
|
|
|
|
# 下载依赖
|
|
RUN go mod download
|
|
|
|
# 复制源代码
|
|
COPY . .
|
|
|
|
# 构建应用
|
|
RUN go build -o main ./cmd/server/
|
|
|
|
# 暴露端口
|
|
EXPOSE 8080
|
|
|
|
# 运行应用
|
|
CMD ["./main"]
|