openspec: архив 14 завершённых change-ов (веб-фиксы, crawler-queue, own-content-hub, publisher-service); спеки влиты в openspec/specs

This commit is contained in:
kpa39l
2026-09-16 17:01:00 +00:00
parent 584582a48c
commit 771f6a8276
88 changed files with 1632 additions and 3 deletions
@@ -0,0 +1,3 @@
schema: spec-driven
created: 2026-09-14
skip_specs: true
@@ -0,0 +1,44 @@
## Design
### 1. `web/templates/base.html` — отступ под fixed-top navbar
Текущее:
```css
body { padding-top: 1.5rem; background: #f5f6fa; }
```
Правка:
```css
body { padding-top: 4.5rem; background: #f5f6fa; }
```
Пояснение: Bootstrap `navbar fixed-top` имеет высоту по умолчанию 56px (3.5rem).
`padding-top: 4.5rem` = 72px → заголовок страницы больше не перекрывается меню.
Это правка глобальная — применится и к /candidates, и /published, и /metrics
(там отступ сейчас тоже недостаточен).
### 2. `web/templates/published.html` — ID поста на карточке
Текущее (строка 9):
```html
<span class="badge bg-secondary">{{ p.direction or '?' }}</span>
```
Правка:
```html
<span class="badge bg-secondary">#{{ p.id }} · {{ p.direction or '?' }}</span>
```
ID поста виден сразу на каждой карточке, рядом с направлением — как в списке
кандидатов.
## Верификация
- `openspec validate fix-published-page` — чисто.
- Проверка без перезапуска: `curl -s -b cookies http://127.0.0.1:8400/published`
→ в html:
- `padding-top: 4.5rem` присутствует в `<style>`;
- на карточках есть `#<id>` (например, `#136`, `#1013`).
- Рестарт `sudo systemctl restart vesti-web`, повторный curl — то же.
- Визуально: заголовок «Опубликованные посты» не перекрывается меню
(проверка в браузере).
@@ -0,0 +1,41 @@
## Why
На странице опубликованных постов (`/published`):
1. Заголовок «Опубликованные посты» перекрывается верхним меню. Причина:
`base.html` использует `navbar fixed-top` (position: fixed, поверх контента),
а `body` имеет только `padding-top: 1.5rem` (24px) — этого недостаточно:
Bootstrap fixed-top navbar высотой ~56px перекрывает первые ~32px контента.
Заголовок оказывается под меню.
2. На карточках постов нет ID — невозможно быстро сослаться на конкретный пост
(в интерфейсе кандидатов ID есть: `#153`, `#136` и т.д.). При обсуждении
«опубликуй/исправь пост такой-то» приходится искать по тексту.
## What Changes
- В `web/templates/base.html`:
- Увеличить `body { padding-top }` с `1.5rem` до `4.5rem` (~72px), чтобы
контент не заезжал под fixed-top navbar (56px + отступ).
- В `web/templates/published.html`:
- Добавить ID поста в карточку. Самый заметный вариант — в заголовок
рядом с направлением: `<span class="badge bg-secondary">#{{ p.id }} · {{ p.direction or '?' }}</span>`,
чтобы ID был виден сразу, как в кандидатах. Альтернатива — маленькая
подпись в шапке карточки.
## Why Not
- Не менять `fixed-top` на статичную навигацию: меню должно оставаться доступным
при скролле длинного списка опубликованных.
- Не добавлять ID отдельной строкой: визуальный шум; лучше в существующем
бейдже направления.
- Не трогать кандидатов (там ID уже есть).
## Impact
- Файлы: `web/templates/base.html`, `web/templates/published.html`.
- Данные: без миграций БД.
- Сервис: `vesti-web` (:8400) — перезапуск не требуется для Jinja2-шаблонов
(шаблоны читаются с диска при каждом рендере, `tpl` без кэша).
Тем не менее для надёжности — `sudo systemctl restart vesti-web`.
- Rollback: откатить правки шаблонов (git revert).
@@ -0,0 +1,10 @@
# fix-published-page
- [x] Создан OpenSpec change (proposal/design) — `skip_specs: true`
- [x] base.html: `body { padding-top: 4.5rem }` (отступ под fixed-top navbar)
- [x] published.html: на карточке ID поста `#{{ p.id }} · {{ p.direction }}`
- [x] `openspec validate fix-published-page` — чисто
- [x] Проверка: curl /published → padding-top 4.5rem + ID на карточках
- [x] Рестарт vesti-web
- [x] Обновить STATUS.md / TODO.md
- [x] Git push в gitverse