Files
ez-api/.env.example
zenfun 6a16712b9d feat(core): implement sync outbox mechanism and refactor provider validation
- Introduce `SyncOutboxService` and model to retry failed CP-to-Redis sync operations
- Update `SyncService` to handle sync failures by enqueuing tasks to the outbox
- Centralize provider group and API key validation logic into `ProviderGroupManager`
- Refactor API handlers to utilize the new manager and robust sync methods
- Add configuration options for sync outbox (interval, batch size, retries)
2025-12-25 01:24:19 +08:00

41 lines
1.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Control Plane
EZ_API_PORT=8080
EZ_PG_DSN=host=postgres user=postgres password=postgres dbname=ezapi port=5432 sslmode=disable
# 日志库 DSN可选默认不创建独立 log DB留空将使用主库写日志
EZ_LOG_PG_DSN=
EZ_REDIS_ADDR=redis:6379
EZ_REDIS_PASSWORD=
EZ_REDIS_DB=0
EZ_ADMIN_TOKEN=admin123
EZ_INTERNAL_STATS_TOKEN=internal123
EZ_CORS_ALLOW_ORIGINS=*
# 日志保留策略(单位:天 / 条数)
EZ_LOG_RETENTION_DAYS=30
EZ_LOG_MAX_RECORDS=1000000
# 日志分区off/month/day
EZ_LOG_PARTITIONING=off
# 同步可靠性CP -> Redis outbox
EZ_SYNC_OUTBOX_ENABLED=true
EZ_SYNC_OUTBOX_INTERVAL_SECONDS=5
EZ_SYNC_OUTBOX_BATCH_SIZE=200
EZ_SYNC_OUTBOX_MAX_RETRIES=10
# Log DB (docker-compose log-postgres可选默认不启用独立日志库)
LOG_POSTGRES_USER=postgres
LOG_POSTGRES_PASSWORD=postgres
LOG_POSTGRES_DB=ezapi_logs
# Data Plane
EZ_BALANCER_PORT=8081
EZ_BALANCER_LOG_SINK_ENABLED=false
EZ_BALANCER_LOG_SINK_BASE_URL=http://ez-api:8080
EZ_BALANCER_LOG_SINK_TIMEOUT_SECONDS=3
EZ_BALANCER_STATS_FLUSH_ENABLED=false
EZ_BALANCER_STATS_FLUSH_BASE_URL=http://ez-api:8080
EZ_BALANCER_STATS_FLUSH_TOKEN=internal123
EZ_BALANCER_STATS_FLUSH_INTERVAL_SECONDS=300
EZ_BALANCER_STATS_FLUSH_BATCH_SIZE=200
EZ_BALANCER_STATS_FLUSH_TIMEOUT_SECONDS=5
# 按 provider type 配置非流式请求超时JSON
EZ_BALANCER_TIMEOUT_BY_PROVIDER={"default":30,"openai":40,"compatible":40,"anthropic":50,"claude":50,"google":60}