layout: непомещающееся целевое имя уводит задачу в review вместо failed
- предел длины компонента (255 байт) проверяется в BuildLinks до первой операции с ФС: ни каталога, ни ссылки при отказе не создаётся - причина пустого предпросмотра считается на показе (ReviewData.PreviewError) и печатается в панели действий и в карточке Telegram: у задачи без записанной причины взять её больше неоткуда
This commit is contained in:
@@ -88,6 +88,7 @@ jellybit — **приложение, а не библиотека**: внешн
|
||||
| `errInvalidCandidate` (выбран несуществующий кандидат, локальный sentinel `httpapi`) | 400 | текст самой ошибки |
|
||||
| `worker.ErrNotReady` (источник ещё качается) | 409 | «торрент ещё качается…» |
|
||||
| `layout.ErrCollision` (цель занята, ушло в review) | 409 | «целевой файл уже существует…» |
|
||||
| `layout.ErrNameTooLong` (целевое имя не помещается, ушло в review) | 409 | «целевое имя слишком длинное…» |
|
||||
| `worker.ErrConflict` (операция недопустима сейчас) | 409 | «действие недоступно в текущем состоянии» |
|
||||
| прочее | 500 | «внутренняя ошибка» |
|
||||
|
||||
@@ -116,7 +117,13 @@ jellybit — **приложение, а не библиотека**: внешн
|
||||
error_msg вычищаем на границе клиента (`logging.SanitizeErr` для ошибок
|
||||
транспорта, несущих URL с секретом);
|
||||
- это **не** канал для транзиентных отказов команд — те остаются нейтральными
|
||||
(см. выше).
|
||||
(см. выше);
|
||||
- **внешнее значение в тексте усекается на границе, а его размер называется
|
||||
числом.** `error_msg` уезжает в баннер ревью, в панель действий и в карточку
|
||||
Telegram; имя файла на 400 байт занимает там экран целиком и оседает в БД
|
||||
навсегда. Усечение — серединой и по рунам (`layout.shorten`,
|
||||
`naming.truncate`, `tgbot.shorten`), точная величина остаётся числом рядом:
|
||||
без неё человек не поймёт, насколько сокращать.
|
||||
|
||||
## panic
|
||||
|
||||
|
||||
Reference in New Issue
Block a user