## MODIFIED Requirements ### Requirement: Отображаемое имя торрента из контекста При добавлении загрузки в qBittorrent система SHALL выводить из контекста загрузки человекочитаемое отображаемое имя и передавать его в qBittorrent (параметр `rename` API `/torrents/add`), чтобы задача в списке qBit не показывалась безликим `dn` magnet-ссылки. Это же имя система SHALL **сохранять у загрузки** (`download.display_name`) для последующего показа заголовком в веб-UI. Имя SHALL быть коротким читаемым ярлыком (название, опционально режиссёр и год; для сериала — номер сезона, если он определён), а не куском сырого контекста. Имя SHALL очищаться от управляющих символов и переводов строк и SHALL обрезаться по ограничению длины. Вывод имени SHALL выполняться синхронно перед отдачей источника в qBittorrent (параметр `rename` действует только в момент добавления). Отображаемое имя SHALL влиять только на отображение (в qBittorrent и как заголовок в веб-UI) и SHALL NOT влиять на пути файлов на диске, распознавание или раскладку — реальные пути система по-прежнему читает из qBit API. #### Scenario: Имя из контекста передаётся в qBittorrent - **WHEN** загрузку добавляют с непустым контекстом, из которого удалось получить имя - **THEN** система передаёт это имя в qBittorrent в параметре `rename` - **AND** имя — короткий читаемый ярлык вида «название (режиссёр, год)», где режиссёр и год опциональны #### Scenario: Имя сохраняется у загрузки - **WHEN** при приёме получено непустое отображаемое имя - **THEN** система сохраняет его в `download.display_name` вместе с созданием загрузки - **AND** веб-UI использует его заголовком карточки и страницы загрузки #### Scenario: Контекст пуст или имя не получено - **WHEN** контекста нет либо ни один способ вывода не дал непустого имени - **THEN** система добавляет загрузку без параметра `rename` - **AND** qBittorrent оставляет собственное имя (из `dn`/торрента) - **AND** `download.display_name` остаётся пустым, а веб-UI берёт заголовок из фолбека (распознанное название или усечённый источник)