Files
jellybit/openspec/changes/archive/2026-06-29-review-external-links/tasks.md
T
avandClaude dfa182a5a9 Ссылки на внешние базы в ревью (recognition)
Каждый кандидат внешней базы метаданных (TMDB/TVDB/TVMaze) теперь несёт
URL на страницу элемента — при ревью можно кликнуть и проверить матч.
URL формируется клиентом провайдера при поиске, сохраняется в БД
(metadata_candidate.url) и отображается ссылкой в веб-интерфейсе.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-29 20:09:20 +03:00

2.1 KiB
Raw Blame History

1. Слой метаданных — генерация URL

  • 1.1 Добавить поле URL в структуру metadata.Candidate (internal/metadata/metadata.go)
  • 1.2 Заполнять URL в TMDB.Search: https://www.themoviedb.org/movie/{id} (фильм) или https://www.themoviedb.org/tv/{id} (сериал)
  • 1.3 Заполнять URL в TVDB.Search: https://www.thetvdb.com/dereferrer/series/{id}
  • 1.4 Заполнять URL в TVMaze.Search: https://www.tvmaze.com/shows/{id} (нативный id, не теговый)
  • 1.5 Обновить тесты клиентов метаданных (tmdb_test.go, tvdb_test.go, tvmaze_test.go) — проверить наличие URL в результатах Search

2. БД — хранение URL

  • 2.1 Создать миграцию internal/store/migrations/0004_candidate_url.sql — добавить колонку url TEXT в metadata_candidate
  • 2.2 Добавить поле URL (sql.NullString) в структуру store.MetadataCandidate
  • 2.3 Обновить CreateCandidates — сохранять url в INSERT
  • 2.4 Обновить docs/specs/database.md — актуализировать ER-схему (колонка url)

3. Конвертация candidate → store

  • 3.1 В worker.toStoreCandidates пробрасывать URL из metadata.Candidate в store.MetadataCandidate

4. HTTP API и шаблон

  • 4.1 Добавить поле URL в candidateView (internal/httpapi/review.go)
  • 4.2 Пробросить URL из store.MetadataCandidate в candidateView при сборе данных ревью
  • 4.3 В шаблоне web/templates/review.html добавить колонку «ссылка» в таблицу кандидатов с <a target="_blank">

5. Проверка

  • 5.1 task test — все тесты проходят
  • 5.2 task lint — без ошибок
  • 5.3 openspec validate --strict — валидация спеки