Files
chatballs/apps
AndreyandClaude Fable 5.1 a834328e7d ✨ feat(storage): хранилище файлов — локальный диск по умолчанию, внешнее S3 из «Настроек»
- tenancy.StorageSettings (одна строка на инстанс): тип хранилища, бакет, endpoint,
  регион, адресация, ключи (шифруются Fernet); статус проверки и переноса
- динамические бэкенды DynamicTenantStorage/DynamicUserStorage: пишут в активное
  хранилище, читают/удаляют из обоих (файлы до переключения доступны без переноса);
  конфигурация из БД с кэшем 10 с — без .env и перезапуска
- API: GET/PATCH company/administration/storage/ (переключение на S3 только после
  успешной пробной записи), POST …/check/ (быстрая проверка, без ретраев boto),
  POST …/migrate/ — перенос локальных файлов в бакет фоновой задачей worker'а
- UI: секция «Хранилище файлов» в «Настройках» — переключатель, реквизиты,
  «Проверить доступ», «Сохранить», «Перенести файлы с диска в S3» с прогрессом
- из .env убраны CHATBALLS_STORAGE_BACKEND/CHATBALLS_S3_*; production больше не
  требует S3

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 01:19:27 +03:00
..