feat(feature-flag): Redis Feature Flag 灰度发布基础设施 #235

Merged
xiaoxia merged 6 commits from feat/feature-flag-redis into develop 2026-07-13 01:11:46 +08:00

6 Commits

Author SHA1 Message Date
xiaoxia b6ebee7574 fix(security): nosec on correct line for bandit B324
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 1m32s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m10s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m32s
2026-07-13 00:59:05 +08:00
xiaoxia 0b002ce50d fix(format): black format nosec comment line length
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 52s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m4s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m1s
2026-07-13 00:52:27 +08:00
xiaoxia 2cdaa24735 fix(security): add nosec for bandit B324 md5 in feature flag
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 17s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m4s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m13s
2026-07-13 00:49:50 +08:00
CI Bot e02a7475bc chore(format): fix black/isort after rebase to develop
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 34s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m50s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m14s
2026-07-13 00:30:24 +08:00
灵应 a317f02d3f fix(feature-flag): 修正 redis.scan 参数名 match_pattern -> match + 补 list_all 正常路径单测
- P1修复: RedisFeatureFlagStore.list_all 中 scan 参数名错误,导致 list_all 接口必失败
- 新增 TestRedisStoreListAll 测试类,验证 scan 调用参数名正确性
2026-07-13 00:29:58 +08:00
灵应 c96ebfb4ae feat(feature-flag): Redis Feature Flag 灰度发布基础设施
- 新增 FeatureFlagStore 抽象 + Redis/InMemory 双实现
  - 支持全局开关 + 白名单 + 百分比切流(MD5哈希一致性)
  - 本地缓存 + TTL,减少 Redis 调用
  - Redis 不可用时自动降级,不影响业务

- 新增 RenderEngineResolver 渲染引擎选择器
  - 环境变量默认 + Redis 运行时覆盖,支持热更新
  - 按 user_id 灰度(白名单 > 百分比 > 默认值)
  - 惰性刷新,30秒刷新间隔
  - 在途任务不受配置变更影响(任务开始时确定引擎)

- 新增 /api/v1/internal/feature-flags 管理接口
  - GET 列表/详情、PUT 修改、DELETE 删除
  - /{name}/check 端点验证指定标识符是否命中
  - 复用内部 API Key 鉴权
  - ALLOWED_FLAGS 白名单防误操作

- compose_video 任务接入 RenderEngineResolver
  - 从 job.created_by_user_id 获取用户标识
  - 替换原环境变量直接读取方式

- 30 个单元测试全绿
  - FeatureFlagConfig 判定逻辑(优先级、边界、一致性)
  - InMemoryStore CRUD
  - RenderEngineResolver(白名单、百分比、默认值、降级、热更新不影响在途任务)
  - Redis 异常降级
2026-07-13 00:29:58 +08:00