Просмотр: блок «Распознано как» — таблица поле→значение, +сезон/режиссёр

Блок распознавания на /download/{id} переведён из карточки с постером в
единую таблицу kv (поле слева, значение справа) — убирает неоднозначность
трёх одинаковых названий. Поля: название, ориг. название, тип, сезон
(для сериала), год, режиссёр (зарезервировано «—»), база, уверенность.
Мёртвый CSS карточки/постера удалён.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-04 08:26:43 +03:00
co-authored by Claude Opus 4.8
parent 1f4267a046
commit 1387afe94f
3 changed files with 14 additions and 26 deletions
+4
View File
@@ -32,6 +32,7 @@ type downloadDetailView struct {
IsSeries bool
RecTitle string
OriginalTitle string
Season string // сводка сезонов для сериала (пусто для фильма)
Year int
Provider string
ProviderID string
@@ -110,6 +111,9 @@ func (s *server) handleDownload(w http.ResponseWriter, r *http.Request) {
view.IsSeries = rd.Plan.Type == "series"
view.RecTitle = rd.Plan.Title
view.OriginalTitle = rd.Plan.OriginalTitle
if view.IsSeries {
view.Season = seasonSummary(rd.Plan)
}
view.Year = rd.Plan.Year
switch rd.Provider {
case "", "none":
-14
View File
@@ -434,18 +434,6 @@ table.tbl .size{font-family:var(--mono);color:var(--text-dim);white-space:nowrap
/* ---------- 17. Страница загрузки ---------- */
.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--sp-4);align-items:start}
/* распознано как — карточка с постером */
.meta-card{display:flex;gap:var(--sp-4);align-items:flex-start}
.poster{flex:none;width:104px;height:156px;border-radius:var(--r-md);overflow:hidden;
border:1px solid var(--border);
background-image:repeating-linear-gradient(135deg,var(--surface-2) 0 9px,var(--surface-3) 9px 18px);
display:grid;place-items:center}
.poster span{font-family:var(--mono);font-size:10px;color:var(--text-faint);
background:var(--surface);padding:2px 6px;border-radius:4px}
.meta-body{flex:1;min-width:0}
.meta-body .h{font-size:var(--fs-lg);font-weight:700;letter-spacing:-.01em;margin:0 0 2px;line-height:1.2}
.meta-body .o{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text-faint);margin:0 0 var(--sp-3)}
/* key-value список */
.kv{display:grid;grid-template-columns:auto 1fr;gap:7px var(--sp-4);font-size:var(--fs-sm);margin:0}
.kv dt{color:var(--text-faint);white-space:nowrap}
@@ -491,8 +479,6 @@ table.tbl .size{font-family:var(--mono);color:var(--text-dim);white-space:nowrap
.nav a{padding:6px 9px}
.toolbar{flex-direction:column;align-items:stretch}
.detail-grid{grid-template-columns:1fr}
.meta-card{flex-direction:column}
.poster{width:88px;height:132px}
}
/* доступность фокуса */
+10 -12
View File
@@ -41,18 +41,16 @@
<div class="section">
<div class="section-head"><h2>Распознано как</h2></div>
{{if .HasPlan}}
<div class="meta-card">
<div class="meta-body">
<p class="h">{{.RecTitle}}</p>
{{if .OriginalTitle}}<p class="o">{{.OriginalTitle}}</p>{{end}}
<dl class="kv">
<dt>Тип</dt><dd>{{if .IsSeries}}сериал{{else if eq .MediaType "movie"}}фильм{{else}}{{.MediaType}}{{end}}</dd>
{{if .Year}}<dt>Год</dt><dd>{{.Year}}</dd>{{end}}
<dt>База</dt><dd>{{if .Provider}}{{if .MatchURL}}<a class="ext-link" href="{{.MatchURL}}" target="_blank" rel="noopener">{{.Provider}} · {{.ProviderID}} ↗</a>{{else}}{{.Provider}} · <span class="mono">{{.ProviderID}}</span>{{end}}{{else if .NoBase}}без базы{{else}}{{end}}</dd>
{{if .Confidence}}<dt>Уверенность</dt><dd class="mono">{{.Confidence}}</dd>{{end}}
</dl>
</div>
</div>
<dl class="kv">
<dt>Название</dt><dd>{{.RecTitle}}</dd>
<dt>Ориг. название</dt><dd class="mono">{{if .OriginalTitle}}{{.OriginalTitle}}{{else}}<span class="faint"></span>{{end}}</dd>
<dt>Тип</dt><dd>{{if .IsSeries}}сериал{{else if eq .MediaType "movie"}}фильм{{else}}{{.MediaType}}{{end}}</dd>
{{if .IsSeries}}<dt>Сезон</dt><dd>{{if .Season}}{{.Season}}{{else}}<span class="faint"></span>{{end}}</dd>{{end}}
<dt>Год</dt><dd>{{if .Year}}{{.Year}}{{else}}<span class="faint"></span>{{end}}</dd>
<dt>Режиссёр</dt><dd><span class="faint"></span></dd>
<dt>База</dt><dd>{{if .Provider}}{{if .MatchURL}}<a class="ext-link" href="{{.MatchURL}}" target="_blank" rel="noopener">{{.Provider}} · {{.ProviderID}} ↗</a>{{else}}{{.Provider}} · <span class="mono">{{.ProviderID}}</span>{{end}}{{else if .NoBase}}без базы{{else}}<span class="faint"></span>{{end}}</dd>
<dt>Уверенность</dt><dd class="mono">{{if .Confidence}}{{.Confidence}}{{else}}<span class="faint"></span>{{end}}</dd>
</dl>
{{else}}
<p class="muted" style="margin:0">Ещё не распознано.</p>
{{end}}