feat(assets): migrate snolla assets originals Local-disk → S3
assets storage class = Local (RUVDS IIS App_Data\assets), never in S3 → snolla imgproxy source s3://assets/<ownerId>/<storageFilename> = 404. Created MinIO bucket `assets` (books-vds), rclone'd whole tree from RUVDS verbatim: 4750 obj / 215.5 MiB, 145 owner folders. Verify count+size == source. Smoke: brevno.jpg → 200 image/webp; validly-signed missing obj → 404. snolla code unchanged (path A). Scope widened past pilorama98 (closes 404 class for all tenants; owner→site map non-obvious). snolla-side stub content-api/routes/assets.js still pending (flagged in inbox). Closes [migrate-assets-originals-to-s3]. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -53,6 +53,12 @@ curl -sk --resolve imgproxy.kzntsv.site:443:127.0.0.1 'https://imgproxy.kzntsv.s
|
||||
|
||||
- **pilorama98** (siteId `37e67fc44b9e4c06a522a26a73bac9b0`): мигрирован 2026-06-12 — 301 файл / 77 MiB, imgproxy 200 verified.
|
||||
- **Остальные ~40 siteId-папок** в `App_Data\galleries` — НЕ мигрированы (часть пустые). Bucket `galleries` shared; заполнен только префикс pilorama98. Другие сайты в snolla → 404 пока не зальёшь (регрессии нет).
|
||||
- Если поднимаются другие Local-классы (`assets`/`images`/…) в snolla через imgproxy — их ждёт та же дыра, тот же рецепт.
|
||||
- Если поднимаются другие Local-классы (`images`/`scripts`/`stylesheets`/`watermarks`) в snolla через imgproxy — их ждёт та же дыра, тот же рецепт.
|
||||
|
||||
См. задачу `.tasks/STATUS.md` → `[migrate-gallery-originals-to-s3]`.
|
||||
### `assets` класс — мигрирован 2026-06-13
|
||||
|
||||
Тот же Local-класс, тот же путь A. **Отличие ключа:** prefix = `OwnerId` медиа-папки (из таблицы `Folders`), **НЕ siteId**; snolla строит `s3://assets/<ownerId>/<storageFilename>` (`middleware/assets.js:98`), storageFilename плоский. Залит **весь** `C:\sites\snolla\App_Data\assets` (145 owner-папок, 4750 файлов / 215.5 MiB) в новый bucket `assets` rclone'ом с RUVDS — scope шире pilorama98 (owner→сайт маппинг неочевиден; заливка всего гарантирует покрытие + закрывает класс для всех тенантов). Verify count+size == source. Smoke: brevno.jpg → 200, валидно-подписанный фейк → 404.
|
||||
|
||||
⚠️ На стороне snolla `content-api/routes/assets.js` — пустой stub: объекты в S3 есть и отдаются через imgproxy, но inline-картинки контента не отрендерятся, пока роут не реализован (код-таска snolla).
|
||||
|
||||
См. задачи `.tasks/STATUS.md` → `[migrate-gallery-originals-to-s3]`, `[migrate-assets-originals-to-s3]`.
|
||||
|
||||
Reference in New Issue
Block a user