Commit Graph

2 Commits

Author SHA1 Message Date
用户CI Test f45baa2ce0 feat: 任务队列限流防护 - 用户级3个/全局20个
实现3层队列防护,防止批量提交导致队列爆炸:

**用户级限流(核心)**
- 每个用户同时 pending 的 generation 任务上限 3 个
- 超限返回 429:您的待处理任务过多,请等待完成后再提交

**全局限流(兜底)**
- 系统 pending 任务超过 20 个一律拒绝
- 返回 503:系统繁忙,请稍后再试

**覆盖的入口**
- 一键生成(generation_tasks 批量创建 + 重试)
- 剪辑计划生成(edit_plans generate)
- 任务中心重试(task_center 用户级 + 项目级)

**实现细节**
- 预检查 + 入队前检查双重保障
- 限流拒绝时任务标记为 failed,避免 pending 僵尸
- repository 不支持计数时自动降级跳过(兼容旧代码)
- 全局检查始终生效,用户级检查需传 user_id

**新增**
- task_enqueue.py: UserPendingLimitExceeded / GlobalQueueFull 异常
- generation_task_repository: count_pending_by_user / count_pending_total
- 13个单元测试,覆盖正常/超限/全局/降级等场景
2026-07-11 16:13:11 +08:00
用户CI Test 9aa450bb8b refactor: 安全入队函数抽为公共工具,消除重复定义
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 8s
CI/CD Pipeline / Frontend Lint (push) Successful in 1m9s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (push) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (push) Has been skipped
CI/CD Pipeline / Staging E2E Tests (push) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
- 新增 app/core/task_enqueue.py,统一 safe_enqueue_generation_task 实现
- generation_tasks.py 和 task_center.py 改为 import 公共函数
- 修复 task_center.py 缺失 logging 导入的问题
- 日志前缀通过参数传入,保持各模块语义不变
2026-07-11 11:31:17 +08:00