Правки: дата на стр. загрузки, ссылка TVDB по типу, заголовки в Telegram

- Веб-UI: под шапкой страницы загрузки — дата добавления и относительная
  давность («N дней назад»), как в карточках списка.
- Баг: ссылка-dereferrer TVDB для фильма вела на /series/; теперь строится
  по типу запроса (/movie/ либо /series/). Тест + правка спеки metadata-match.
- Telegram: заголовки уведомлений (готово/ошибка/рассинхрон) берутся из
  display_name — консистентно с веб-UI; сезон подтягивается автоматически.
- Telegram: в сообщениях об ошибке — и заголовок, и #id загрузки (ULID)
  для быстрого поиска по логам.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-04 11:50:04 +03:00
co-authored by Claude Opus 4.8
parent 5d5456fa68
commit 280204db18
8 changed files with 64 additions and 32 deletions
-24
View File
@@ -364,30 +364,6 @@ auto/review»),
## Низкий
### Баг: ссылка на запись TVDB всегда `/series/` (для фильмов ведёт не туда)
`metadata.TVDB.Search` знает тип запроса (`series`/`movie`,
[tvdb.go](../internal/metadata/tvdb.go) строки 156–159 — он идёт в API), но
URL кандидата хардкодит `.../dereferrer/series/{id}` (там же, строка 179)
**независимо от типа**. Для фильма ссылка ведёт на `/series/{id}` вместо
`/movie/{id}`, хотя идентификатор верный. Пример: «Последний единорог», id
3015 → отдаём `https://www.thetvdb.com/dereferrer/series/3015`, рабочая —
`https://www.thetvdb.com/dereferrer/movie/3015`. `matchURL`/`sourceMatchURL`
(`internal/httpapi/review.go`) предпочитают сохранённый URL кандидата над
`providerURL` (который тип учитывает верно), поэтому неверный `/series/`
виден в UI. Фикс — подставлять тип запроса в URL (одна строка); заодно
свериться, что `providerURL` не расходится по типам.
> Аудит спек↔код (2026-07-03) подтвердил баг и выявил, что спека
> `metadata-match` теперь тоже «узаконивает» его: требование «Кандидат несёт
> URL» задаёт для TVDB единственный формат `/dereferrer/series/{id}` без
> различения типа. Фикс должен править и код, и это требование (movie-вариант
> по аналогии с TMDB).
Связано: [recognition.md](specs/recognition.md) (сверка с базой, кандидаты),
`openspec/specs/metadata-match` (требование «Кандидат несёт URL»), пакеты
`metadata`, `httpapi`.
### Панель действий ревью вне htmx-свопа блока источника
При выборе источника одним кликом обновляется только блок источника