- archive local-fs-storage-backend, sqlite-metadata-backend, storage-orphan-reconciliation, metadata-managed-jwt-secret, default-local-backends - sync specs: storage-backends, metadata-backends, storage-reconciliation, app-secrets; update photos/share-links - defaults reflected in specs: SQLite and local FS
2.2 KiB
2.2 KiB
Tasks
1. Перечисление в хранилище
- 1.1 Добавить
List(ctx, prefix)([]ObjectInfo{Key,Size,ModTime}) вstorage.Backendи реализовать вstorage.S3черезListObjectsV2с пагинацией; проверка — тест перечисления под префиксом (подS3_ENDPOINT, иначе пропуск). - 1.2 Реализовать
Listвstorage.FSобходом корня с относительными ключами; проверка — юнит-тест на временном каталоге.
2. Ключи журнала в метаданных
- 2.1 Добавить
AllStorageKeysвphotos.Repositoryи реализовать в pg- и sqlite-store; проверка — контрактный тест на обоих бэкендах.
3. Команда reconcile
- 3.1 Реализовать
cmd/reconcile: инвентаризация обеих сторон, классификация сирот/пропавших, отчёт по умолчанию; проверка — юнит-тесты классификации. - 3.2 Добавить флаги
--delete,--min-age,--sampleс ограничением областиobjects/и защитой свежих блобов; проверка — тест: молодой блоб не удаляется, старый сирота удаляется, пропавшие не трогаются. - 3.3 Собрать бэкенды через конфиг (
storage.Open+ бандл репозиториев) для postgres/sqlite и s3/fs; проверка — запуск на fs и s3.
4. Документация и интеграция
- 4.1 Обновить
README.mdиproject.mdс описанием команды и её безопасного использования; проверка — документированный запуск работает. - 4.2 Интеграционная проверка: создать сироту, прогнать отчёт, затем
--delete, убедиться в удалении и в том, что журнальные записи не затронуты.