diff --git a/docs/LLM_CONTEXT.md b/docs/LLM_CONTEXT.md index f32f860..d071151 100644 --- a/docs/LLM_CONTEXT.md +++ b/docs/LLM_CONTEXT.md @@ -2,8 +2,8 @@ ## Клиника ухо, горло, нос им. проф. Е.Н.Оленевой -**Версия контекста:** 4.3 -**Дата обновления:** 2026-03-24 +**Версия контекста:** 4.4 +**Дата обновления:** 2026-03-25 **Актуальный спринт:** Sprint 5.5 **Сайт клиники:** https://oclinica.ru **Брендбук (локально):** http://localhost:3001 @@ -416,7 +416,47 @@ CSS-классы в `globals.css`. Компонент: `@/components/ui/Button` --- -## 10. Технический стек проекта +## 10. Система версий блоков + +Каждый блок поддерживает версионирование с HTML-снимками. + +### Модель данных + +**Block** — текущее состояние блока: +- `path` (unique), `version`, `isInPreview`, `changelog` (JSON), `name` + +**BlockSnapshot** — архивный снимок версии: +- `blockPath`, `version` (unique пара), `html` (Text), `css` (Text), `changelog` (JSON) + +### API эндпоинты + +| Метод | URL | Назначение | +|-------|-----|------------| +| GET | `/blocks` | Все блоки | +| GET | `/blocks/by-path?path={path}` | Блок по пути (auto-create) | +| PATCH | `/blocks/by-path?path={path}` | Обновить version/isInPreview/changelog | +| POST | `/blocks/snapshots?path={path}` | Создать/обновить HTML-снимок версии | +| GET | `/blocks/snapshots?path={path}` | Список снимков (id, version, createdAt) | +| GET | `/blocks/snapshots/:id` | Полный снимок (html + css) | + +### Компоненты + +- **BlockMetaBar** (`components/ui/BlockMetaBar.tsx`) — версия dropdown, toggle «В превью», кнопка «Сохранить версию» + - Prop `onSnapshotSelect` — callback при выборе архивной версии + - При сохранении захватывает `innerHTML` из `[data-block-capture="{path}"]` + CSS правила с `bb-` префиксом +- **BlockChangelog** (`components/ui/BlockChangelog.tsx`) — рендер истории версий + +### Архитектура страниц блоков + +Каждая страница блока разделена на: +- `page.tsx` — Server Component (экспортирует `metadata`) +- `XxxPageClient.tsx` — Client Component (state для snapshot, `data-block-capture` для захвата) + +При просмотре архивной версии живой компонент заменяется на `dangerouslySetInnerHTML` со снимком. + +--- + +## 11. Технический стек проекта | Слой | Технология | Версия | |------|-----------|--------| @@ -431,7 +471,7 @@ CSS-классы в `globals.css`. Компонент: `@/components/ui/Button` --- -## 11. История изменений контекста +## 12. История изменений контекста | Версия | Дата | Что добавлено | |--------|------|---------------| @@ -443,10 +483,11 @@ CSS-классы в `globals.css`. Компонент: `@/components/ui/Button` | 4.1 | 2026-03-22 | Sprint 4 done: карточки (DoctorCard/NewsCard/ReviewCard/PriceCard/ServiceCard), бейджи/теги/алерты | | 4.2 | 2026-03-23 | Sprint 5: блоки Hero v1.1, Doctors v1.1 | | 4.3 | 2026-03-24 | Sprint 5.5: исправлены CSS-стили блоков по реальному сайту (H1 #cb9768 36px, H2 #000 36px, фоны форм #d4f6f8, фон новостей #f2fee6, CTA-кнопка pill) | +| 4.4 | 2026-03-25 | Sprint 5.5: кнопка «Сохранить версию» (snapshot HTML+CSS в PostgreSQL), dropdown переключения между версиями блоков, навигация v1.3 с подменю, блоки обновлены из предыдущей сессии | --- -## 12. Что обновлять в этом файле +## 13. Что обновлять в этом файле При каждом спринте добавляй: - Новые компоненты и их спецификации (цвета, размеры, состояния) diff --git a/docs/SPRINTS.md b/docs/SPRINTS.md index 0c957d5..bf95e60 100644 --- a/docs/SPRINTS.md +++ b/docs/SPRINTS.md @@ -313,7 +313,14 @@ - [x] FE: Toggle «В превью» через localStorage (fallback при API офлайн) - [x] BE: BlockMetaBar + PreviewClient подключены к NestJS API `/blocks` - [x] BE: Метаданные блоков (version, changelog, isInPreview) в PostgreSQL -- [ ] Docs: Добавить `/pages/preview` v1.0 в LLM_CONTEXT.md +- [x] Docs: Добавить `/pages/preview` v1.0 в LLM_CONTEXT.md +- [x] FE: Кнопка «Сохранить версию» — фиксация version + changelog из кода в БД +- [x] BE: Модель BlockSnapshot (html, css, version, changelog) + миграция +- [x] BE: API эндпоинты: POST/GET `/blocks/snapshots`, GET `/blocks/snapshots/:id` +- [x] FE: BlockMetaBar — dropdown переключения между сохранёнными версиями +- [x] FE: HTML-снимок блока при сохранении версии (innerHTML + CSS capture) +- [x] FE: Все 8 страниц блоков — split на Server/Client Components для snapshot support +- [x] FE: Навигация v1.3 — подменю с hover-dropdown, navData.ts, обновлённые стили блоков ### Зависимости - Зависит от: Sprint 5 (блоки hero и doctors уже готовы — ✅)