Skip to content

feat: Add local media cache configuration and management features#495

Merged
chenyme merged 1 commit into
mainfrom
add_local_limit
Apr 20, 2026
Merged

feat: Add local media cache configuration and management features#495
chenyme merged 1 commit into
mainfrom
add_local_limit

Conversation

@chenyme

@chenyme chenyme commented Apr 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • 新增本地媒体缓存容量治理能力:
    • 为图片/视频分别增加 cache.local.image_max_mbcache.local.video_max_mb
    • 本地代理落盘时按媒体类型独立治理缓存
    • 超限后按最旧文件优先清理,并一次性回落到上限的 60%
    • 保留最新文件,单文件超限时不误删最新产物
  • 新增本地缓存索引与并发保护:
    • 使用本地 SQLite 维护缓存索引,避免每次写入全量扫描目录
    • 增加原子写入和跨进程锁,保证多 worker 下缓存写入/清理一致性
    • 启动时自动 reconcile 历史缓存,配置热更新后自动重算并执行治理
  • 打通后台配置与展示:
    • 配置页新增“缓存存储”tab,支持设置图片/视频缓存上限
    • 缓存管理页新增容量上限、当前已用、使用率展示
    • 按要求调整概览卡片顺序为:图片缓存数量、视频缓存数量、图片缓存大小、视频缓存大小
  • 统一路径与文档:
    • 明确本地媒体文件、缓存索引、锁文件统一由 DATA_DIR 派生
    • README / docs 补充 cache.local 配置说明
  • 补齐多语言文案:
    • 同步更新 zh / en / ja / es / de / fr 6 份 i18n,避免新增 key 只落部分语言

Testing

  • uv run ruff check app/platform/storage/media_cache.py app/platform/storage/media_paths.py app/platform/storage/__init__.py app/products/openai/images.py app/products/openai/chat.py app/products/openai/video.py app/products/web/admin/cache.py app/products/web/admin/__init__.py app/main.py tests/test_local_media_cache.py
  • uv run python -m compileall app/platform/storage/media_cache.py app/platform/storage/media_paths.py app/platform/storage/__init__.py app/products/openai/images.py app/products/openai/chat.py app/products/openai/video.py app/products/web/admin/cache.py app/products/web/admin/__init__.py app/main.py tests/test_local_media_cache.py
  • uv run python -m unittest tests.test_local_media_cache
  • uv run python -c "import json, pathlib, tomllib; json.loads(pathlib.Path('app/statics/i18n/zh.json').read_text()); json.loads(pathlib.Path('app/statics/i18n/en.json').read_text()); json.loads(pathlib.Path('app/statics/i18n/ja.json').read_text()); json.loads(pathlib.Path('app/statics/i18n/es.json').read_text()); json.loads(pathlib.Path('app/statics/i18n/de.json').read_text()); json.loads(pathlib.Path('app/statics/i18n/fr.json').read_text()); tomllib.loads(pathlib.Path('config.defaults.toml').read_text()); print('ok')"
  • .venv/bin/python 下执行了缓存页/缓存统计轻量 smoke,确认:
    • /admin/api/cache 返回 limit_mb / limit_bytes / usage_ratio / usage_percent / limited
    • 缓存页模板包含新的 usage/progress 展示元素

Related

  • N/A

@chenyme chenyme merged commit ca3783f into main Apr 20, 2026
4 checks passed
@chenyme chenyme deleted the add_local_limit branch April 21, 2026 01:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant