# ✨ Удалять запись со всеми уровнями текста по требованию владельца - **Тип:** feature - **Категория:** Очередь - **Зачем:** Ни файлы, ни расшифровки не удаляются вовсе: убрать запись сегодня можно только руками в базе и в каталоге на сервере. - **Теги:** goal:data-ownership Двигает все пять пунктов «Завершения» цели: запись убирается одним действием вместе с файлом, объектом в хранилище и всеми уровнями текста. Чужую запись убрать нельзя. Учёт расхода остаётся. Удаление необратимо и потому спрашивает подтверждения. Задача, которая ещё в работе, тоже убирается: конвейер обязан заметить исчезнувшую запись и не продолжать её шаг. ## Затрагивает - новый эндпоинт удаления своей записи и его код ответа; - экран списка и экран записи: действие удаления и подтверждение; - файл в каталоге хранения, его фрагменты и объект в Object Storage; - строки задачи и файла в базе, а также колонка хеш-суммы, по которой ищет дедупликация; - `internal/service/transcribe.go` — шаги, держащие задачу захватом (`FindAndRunConversionJob`, `FindAndRunTranscribeJob`, `FindAndRunTranscribeCheckJob`), и захват `FindAndAcquire`; - `docs/security.md`, «Что вне модели» — пункт про удаление данных перестаёт быть правдой и переписывается; - `docs/passport.md` — граница «сколько запись лежит на диске». ## Критерии приёмки - Удаление своей записи убирает задачу, файл на диске и объект в Object Storage, а повторное чтение отвечает «не найдено». Оракул — тест на подставном хранилище: вызов удаления объекта один, каталог пуст, чтение даёт `404`. - Чужая запись не удаляется по своему идентификатору. Оракул — тест под другой учётной записью: ответ «не найдено», задача на месте. - Строки потребления удалённой записи остаются, и сводка расхода не меняется. Оракул — тест: сумма по владельцу до и после удаления совпадает. - Тот же файл после удаления загружается и распознаётся заново, а не узнаётся дедупликацией. Оракул — тест: загрузка, удаление, повторная загрузка — вторая заводит новую задачу. - Удаление задачи, которую держит воркер, не оставляет ни файла, ни повисшего шага: шаг заканчивается без записи в удалённую задачу. Оракул — тест на задаче в состоянии `transcribe` с истёкшим захватом. ## Рамки Удаление необратимо: восстановления не делаем и корзины не заводим. Массового удаления и удаления по сроку хранения здесь нет — только своя запись по одной. Учёт расхода не трогается по решению человека от 2026-08-11. Берётся после `record-ownership`: до неё неизвестно, чья запись.