diff --git a/.gitignore b/.gitignore index 15b04bc..8bc7188 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ prisma/migrations/*.sql.bak # Claude .claude/ +.vercel diff --git a/apps/web/app/blocks/ceo/CeoPageClient.tsx b/apps/web/app/blocks/ceo/CeoPageClient.tsx index 16aa473..a8a292f 100644 --- a/apps/web/app/blocks/ceo/CeoPageClient.tsx +++ b/apps/web/app/blocks/ceo/CeoPageClient.tsx @@ -51,6 +51,13 @@ const LLM_CEO_TEXT = ` const CHANGELOG: ChangelogEntry[] = [ + { + version: "v1.2", + date: "25.03.2026", + changes: [ + "Убраны горизонтальные отступы: padding 40px 48px → 40px 0 (как на реальном сайте)", + ], + }, { version: "v1.1", date: "24.03.2026", @@ -79,7 +86,7 @@ export default function CeoPageClient() { {/* LLM блок */} - +

diff --git a/apps/web/components/layout/Sidebar.tsx b/apps/web/components/layout/Sidebar.tsx index 8ac54ef..b986fcf 100644 --- a/apps/web/components/layout/Sidebar.tsx +++ b/apps/web/components/layout/Sidebar.tsx @@ -167,7 +167,7 @@ export function Sidebar() { color: "var(--bb-sidebar-text-muted)", }} > - Sprint 5.5 · v0.5.5 + Sprint 6 · v0.6.0 ); diff --git a/apps/web/components/ui/BlockMetaBar.tsx b/apps/web/components/ui/BlockMetaBar.tsx index f34951a..b25faf9 100644 --- a/apps/web/components/ui/BlockMetaBar.tsx +++ b/apps/web/components/ui/BlockMetaBar.tsx @@ -134,8 +134,9 @@ export function BlockMetaBar({ path, defaultVersion, defaultIsInPreview, default if (apiDown || !apiUrl) return; setSavingVersion('saving'); try { - // 1. Update block metadata - const updated = await patch({ version: defaultVersion, changelog: defaultChangelog }); + // 1. Update block metadata (prefer current API version over hardcoded default) + const currentVersion = meta?.version ?? defaultVersion; + const updated = await patch({ version: currentVersion, changelog: defaultChangelog }); if (updated) { setMeta(updated); setVersionInput(updated.version); @@ -147,7 +148,7 @@ export function BlockMetaBar({ path, defaultVersion, defaultIsInPreview, default await fetch(`${apiUrl}/blocks/snapshots?path=${encodeURIComponent(path)}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ version: defaultVersion, changelog: defaultChangelog, html, css }), + body: JSON.stringify({ version: currentVersion, changelog: defaultChangelog, html, css }), }); await fetchSnapshots(); } catch { /* snapshot capture may fail if container not found */ } diff --git a/docs/LLM_CONTEXT.md b/docs/LLM_CONTEXT.md index d071151..0315fc1 100644 --- a/docs/LLM_CONTEXT.md +++ b/docs/LLM_CONTEXT.md @@ -2,9 +2,9 @@ ## Клиника ухо, горло, нос им. проф. Е.Н.Оленевой -**Версия контекста:** 4.4 +**Версия контекста:** 4.5 **Дата обновления:** 2026-03-25 -**Актуальный спринт:** Sprint 5.5 +**Актуальный спринт:** Sprint 6 **Сайт клиники:** https://oclinica.ru **Брендбук (локально):** http://localhost:3001 **Брендбук (production):** https://web-oclinica.vercel.app @@ -291,10 +291,16 @@ SVG-версия ожидается (не получена от клиники). | `/components/forms` | ✅ Готова | Форм-контролы — Input/Textarea/Select/Checkbox/Radio/Toggle | | `/components/cards` | ✅ Sprint 4 | Карточки — врач, услуга, новость, отзыв, цена + бейджи/теги/алерты | | `/components/*` | 🔜 Sprint 4–5 | Модалки, таблицы, навигация | -| `/blocks/hero` | ✅ Sprint 5.5 v1.2 | Hero-баннер: H1 36px #cb9768, заголовок 22px #333, кнопка pill, фон #f9f4e7 | -| `/blocks/doctors` | ✅ Sprint 5.5 v1.2 | Врачи: H2 36px #000, статистика #60959c без фона, 6 реальных фото | -| `/blocks/*` | 🔜 Sprint 5 | Отзывы, формы, новости, footer | -| `/pages/*` | 🔜 Sprint 9–11 | Главная, заболевание, врачи, цены, контакты | +| `/blocks/navigation` | ✅ Sprint 5 v1.3 | Шапка: топ-бар, логотип, главное меню с подменю | +| `/blocks/hero` | ✅ Sprint 5 v1.3 | Hero-баннер: H1 36px #cb9768, заголовок 22px #333, кнопка pill, фон #f9f4e7 | +| `/blocks/ceo` | ✅ Sprint 5 v1.2 | Вводный текст: специализация клиники, вопросы-стимулы | +| `/blocks/doctors` | ✅ Sprint 5 v1.2 | Врачи: H2 36px #000, статистика #60959c без фона, 6 реальных фото | +| `/blocks/reviews` | ✅ Sprint 5 v1.1 | Отзывы: карусель, кавычка, стрелки навигации | +| `/blocks/contact-forms` | ✅ Sprint 5 v1.2 | Формы записи: «Будьте здоровы!» + «Узнайте стоимость» | +| `/blocks/news` | ✅ Sprint 5 v1.1 | Новости: 4 карточки, фон #f2fee6 | +| `/blocks/contact` | ✅ Sprint 5 v1.1 | Footer: 4 колонки ссылок, адреса, соцсети | +| `/pages/preview` | ✅ Sprint 5.5 | Просмотр страницы: сборка блоков с toggle «В превью» | +| `/pages/*` | 🔜 Sprint 6 | Главная, заболевание, врачи, цены, контакты | --- @@ -484,6 +490,7 @@ CSS-классы в `globals.css`. Компонент: `@/components/ui/Button` | 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 с подменю, блоки обновлены из предыдущей сессии | +| 4.5 | 2026-03-25 | Sprint 5/5.5 завершены: все 8 блоков /lor задокументированы, CEO v1.2, исправлен баг saveFullVersion() (откат версии), таблица блоков обновлена | --- diff --git a/docs/SPRINTS.md b/docs/SPRINTS.md index bf95e60..16245bd 100644 --- a/docs/SPRINTS.md +++ b/docs/SPRINTS.md @@ -178,7 +178,7 @@ --- -## Sprint 5 — Все блоки текущего сайта +## Sprint 5 — Все блоки текущего сайта ✅ ЗАВЕРШЁН **Цель:** Задокументировать ВСЕ блоки страницы perm.oclinica.ru/lor за один спринт. Источник: скриншот страницы + CSS сайта. Только фронтенд, mock-данные. @@ -234,7 +234,7 @@ - [x] FE: LLM-блоки на hero v1.1 и doctors v1.1 - [x] Docs: Типографика сайта — реальные стили на 23.03.2026 (новый раздел в /foundation/typography) - [x] Docs: Цвета — исправлен #f9f4e7 (Hero), #b8e6ed (форма), #e9e4d4 (пилюли) -- [ ] FE: Убрать `soon` у Hero и Doctors в Sidebar +- [x] FE: Убрать `soon` у Hero и Doctors в Sidebar - [x] FE: CEO-блок v1.1 - [x] FE: Блоки отзывов, форм записи, новостей — компоненты + страницы документации - [x] FE: Сравнение ВСЕХ блоков с реальным сайтом и синхронизация (24.03.2026) @@ -256,13 +256,16 @@ - BlockMetaBar: загружает version + changelog из API, fallback на defaultVersion/defaultChangelog - Компонент BlockChangelog: отображает историю версий из API или из кода - Надпись «API офлайн» заменена на серую точку -- [ ] FE: Footer +- [x] FE: Footer (блок `/blocks/contact` готов) -**Результат спринта:** Hero v1.2, Doctors v1.2, Reviews v1.1, ContactForms v1.1, News v1.1 — стили синхронизированы с реальным сайтом. Метаданные блоков хранятся в БД. +- [x] FE: CEO-блок v1.2 — убраны горизонтальные отступы (padding 40px 48px → 40px 0) +- [x] FE: Исправлен баг BlockMetaBar.saveFullVersion() — использовал defaultVersion вместо meta.version, что откатывало версию в БД при сохранении снапшота + +**Результат спринта:** Hero v1.3, Doctors v1.2, CEO v1.2, Reviews v1.1, ContactForms v1.2, News v1.1, Navigation v1.3, Contact v1.1 — все блоки /lor задокументированы. Метаданные блоков хранятся в БД. Система снапшотов работает корректно. --- -## Sprint 5.5 — «Просмотр текущей страницы» (внеочередной) +## Sprint 5.5 — «Просмотр текущей страницы» (внеочередной) ✅ ЗАВЕРШЁН **Цель:** Добавить интерактивный раздел брендбука, который собирает главную страницу из уже задокументированных блоков. Показывает живой превью того, как выглядит сайт на основе данных брендбука.