From ed0302d90f577e378113e4d40bdd4d68d8ca502a Mon Sep 17 00:00:00 2001 From: mrleo1nid <43583385+mrleo1nid@users.noreply.github.com> Date: Tue, 20 Oct 2026 22:11:56 +0300 Subject: [PATCH] docs(uploads): import writes only the final track file Co-Authored-By: Claude Opus 5.5 --- docs/uploads.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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`.