diff --git a/docs/uploads.md b/docs/uploads.md index ee8489f..e2321b6 100644 --- a/docs/uploads.md +++ b/docs/uploads.md @@ -161,9 +161,9 @@ 2. Запросить у `storage-agent` запись: `POST /internal/files` `{source_id, rel_path, staging_path}`. Агент: - создаёт каталоги; - - копирует во временный файл `..pipu-tmp` в целевой папке, `fsync`; - - сверяет SHA-256 копии со staging; - - атомарно переименовывает в итоговое имя. + - создаёт файл сразу под итоговым именем (`O_EXCL`, существующий не перезаписывается), копирует, `fsync`; + - сверяет SHA-256 копии со staging; при ошибке удаляет свой файл и созданные пустые каталоги — + на музыкальный диск не попадает ничего, кроме треков. 3. Запустить точечный скан файла (`scan_path`) → трек появляется в каталоге и поиске, ставится в аудиоанализ. В `media_files` сохраняется `upload_id` — история происхождения. 4. Удалить файл из staging, освободить квоту, статус `imported`, запись в `audit_log`.