## Why
Пользователь не видит, что за картинка приложена к новости в карточке кандидата:
в шаблоне `candidates.html` для постов с `media_path` показывается только бейдж
«🖼 медиа», а само изображение не отображается. В `web/app.py` нет роута, который
отдаёт медиа-файл (есть только /static для bootstrap), поэтому `
` некуда указывать.
Аналогично в `published.html` медиа не показывается.
## What Changes
- Добавить в `web/app.py` роут `GET /media/{filename}` (с авторизацией, как у других
роутов), который отдаёт файл из `/opt/vesti/media/` или `/opt/vesti/media/media/`
(исторический баг путей: у старых постов media_path = `media/media/`).
Безопасно: только basename (защита от path traversal), отдаём FileResponse.
- В `candidates.html` и `published.html` для постов с `media_path` выводить
`
`
(направление на роут; если файла нет — не показывать/плейсхолдер).
- Медиа в карточке: фото/видео. Для изображений — `
`, для видео — `