mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
核心重构:
- 移除 FallbackOrchestrator,用 TaskService + FailoverEngine 替代
- TaskService 作为统一入口,支持 SYNC/ASYNC 两种任务模式
- FailoverEngine 实现候选遍历、重试、故障转移逻辑
- 新增 AttemptFunc/AttemptResult 协议,统一尝试结果表示
功能改进:
- 流式响应首字节探测(30s 超时,空流触发故障转移)
- 流式取消归因优化(区分客户端断连 vs 服务端中断)
- 新增 OpenAI Sora 视频取消路由 POST /v1/videos/{task_id}/cancel
- OpenAI 流式请求自动添加 stream_options.include_usage
代码规范:
- 修复 loguru 日志格式(%s → {})
- 新增 FORMAT_CONVERSION_ENABLED 环境变量说明
测试覆盖:
- test_failover_engine.py: FailoverEngine 单元测试
- test_task_service_async_execute.py: TaskService ASYNC 模式测试
- test_video_cancel_e2e.py: 视频取消端到端测试
63 lines
2.4 KiB
Plaintext
63 lines
2.4 KiB
Plaintext
# ==================== 必须配置(启动前) ====================
|
||
# 以下配置项必须在项目启动前设置
|
||
|
||
# 数据库配置
|
||
DB_HOST=localhost
|
||
DB_PORT=5432
|
||
DB_USER=postgres
|
||
DB_NAME=aether
|
||
DB_PASSWORD=your_secure_password_here
|
||
|
||
# Redis 配置
|
||
REDIS_HOST=localhost
|
||
REDIS_PORT=6379
|
||
REDIS_PASSWORD=your_redis_password_here
|
||
|
||
# JWT密钥(使用 python generate_keys.py 生成)
|
||
# 用于用户登录 token 签名,更换后所有用户需重新登录
|
||
JWT_SECRET_KEY=change-this-to-a-secure-random-string
|
||
|
||
# 独立加密密钥(用于加密 Provider API Key 等敏感数据)
|
||
# 注意:更换此密钥后需要在管理面板重新配置所有 Provider API Key
|
||
ENCRYPTION_KEY=change-this-to-another-secure-random-string
|
||
|
||
# 管理员账号(仅首次初始化时使用, 创建完成后可在系统内修改密码)
|
||
ADMIN_EMAIL=admin@example.com
|
||
ADMIN_USERNAME=admin
|
||
ADMIN_PASSWORD=admin123456
|
||
|
||
# ==================== 可选配置(有默认值) ====================
|
||
# 以下配置项有合理的默认值,可按需调整
|
||
|
||
# 应用端口(默认 8084)
|
||
# APP_PORT=8084
|
||
|
||
# API Key 前缀(默认 sk)
|
||
# API_KEY_PREFIX=sk
|
||
|
||
# 日志级别(默认 INFO,可选:DEBUG, INFO, WARNING, ERROR)
|
||
# LOG_LEVEL=INFO
|
||
|
||
# CORS 配置(允许跨域的源,多个源用逗号分隔)
|
||
# 示例: http://localhost:3000,https://example.com
|
||
# 默认: * (允许所有源)
|
||
# CORS_ORIGINS=*
|
||
|
||
# ==================== 计费系统(可选) ====================
|
||
# Video/Image/Audio 缺失 billing_rule 时是否拒绝请求(默认 false:允许请求但 cost=0 并告警)
|
||
# BILLING_REQUIRE_RULE=false
|
||
#
|
||
# required 维度缺失时是否拒绝请求/标记任务失败(默认 false:cost=0 + 标记 incomplete)
|
||
# BILLING_STRICT_MODE=false
|
||
|
||
# ==================== 格式转换(可选) ====================
|
||
# FORMAT_CONVERSION_ENABLED: 总开关(默认 true)
|
||
# - false: 禁止任何跨格式转换(即使端点 format_acceptance_config 已开启也不生效)
|
||
# - true: 允许跨格式转换(是否允许仍取决于:全局覆盖/提供商覆盖/端点策略)
|
||
# FORMAT_CONVERSION_ENABLED=true
|
||
#
|
||
# KEEP_PRIORITY_ON_CONVERSION: 跨格式转换时是否保持优先级(默认 false)
|
||
# - false: needs_conversion 的候选会整体降级到 exact 候选之后(更安全)
|
||
# - true: 所有候选保持原优先级(用于强制走某些 provider)
|
||
# KEEP_PRIORITY_ON_CONVERSION=false
|