- Moved /components/navigation → /blocks/navigation
- Updated Sidebar: navigation is now first item in "Блоки"
- Updated PreviewClient block path
- Updated seed block path
- Updated SPRINTS.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Prisma schema: added `changelog Json @default("[]")` to Block model
- Migration: 20260324141120_add_changelog_field
- Seed: 8 blocks with actual versions (v1.0–v1.2) and changelog entries
- API: PATCH /blocks/by-path accepts changelog field
- CORS: accept any localhost port (regex pattern)
- BlockChangelog component: renders version history from API or fallback
- BlockMetaBar: loads changelog from API, passes to BlockChangelog
- Removed "API офлайн" text, replaced with subtle gray dot
- Added defaultChangelog prop for offline fallback
- Block pages: removed hardcoded changelog JSX, use defaultChangelog prop
- Updated SPRINTS.md with completed tasks
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
BlockMetaBar now falls back to localStorage for preview toggle when
NestJS API is unavailable. PreviewClient reads localStorage state
and listens for bb-preview-change events to stay in sync.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
NavigationBlock extracted from navigation/page.tsx into reusable component.
Preview now shows real header (ready: true) as first block — 3 of 8 ready.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The header is the first block on the real site — added it to the
preview BLOCKS array so it shows as placeholder before Hero.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New route /pages/preview with empty state ("Создать") and assembled preview
- Preview assembles real site blocks in order (Hero + Doctors ready, rest placeholders)
- localStorage persists created state; "Пересобрать" resets it
- Extracted HeroBlock and DoctorsBlock as reusable components
- Refactored hero and doctors pages to import from components/blocks/
- Sidebar: added "Просмотр страницы" link, bumped to Sprint 5.5 · v0.5.5
- SPRINTS.md: added Sprint 5.5 plan with summary table row
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Sprint 5: ALL site blocks in one sprint (header, hero, CEO text, doctors,
reviews, contact forms, news, footer) — taken from real perm.oclinica.ru/lor
- Sprint 6: Page assemblies (home, disease, doctors)
- Sprint 7: Duplicate/variant system for components and blocks
- Sprint 8: Duplicate/variant system for pages (templates per section)
- Sprint 9: Remaining pages (prices, contacts, doctor profile)
- Sprint 10: Final polish and deploy
Sidebar: added Variants section, reordered Blocks to match real page flow,
removed Experiments section.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- All 6 Oracal brand colors updated to exact catalog RGB values
- Contrast table recalculated for new hex values
- Color mapping notes updated (typography of differences)
- Logo color variants updated with new hex refs
- CSS vars section updated
- Transport hex refs updated
- Color rules updated (white on 073M/066M/050M/080M, dark on 053M/081M)
- Section 9a: button variants now match real site (primary/outline/teal/pill)
- Section 9a: form controls match real site (height 50px, border #ccc)
- Section 7: /components/cards added as Sprint 4 in progress
- History: version 4.0 added
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add 27 offline photos (navigation + transport) that were missing from git
but referenced by Sprint 2 pages
- SPRINTS.md: mark Sprint 3 as ЗАВЕРШЁН with actual results documented
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Создан компонент components/llm/LlmBlock.tsx (use client):
LlmBlock, LlmSection, LlmTable, LlmRules — переиспользуемый
паттерн для LLM-спецификаций на всех страницах брендбука
- /foundation/colors: добавлен раздел «LLM-спецификация» (v2.1)
· таблица фирменных цветов Oracal (7 шт.)
· таблица цветов сайта oclinica.ru (11 шт., +3 новых: коралловый,
светло-жёлтый, светло-зелёный)
· таблица контрастности WCAG 2.1
· правила применения ✓/✕
· кнопка «Скопировать» — plain text для LLM
- /foundation/typography: добавлен раздел «LLM-спецификация» (v2.0)
· таблица шрифтов DINPro vs Fira Sans
· шкала DINPro (6 стилей)
· шкала Fira Sans (11 стилей, включая letter-spacing)
· применение по носителям + правила ✓/✕
- docs/LLM_CONTEXT.md: создан сводный машиночитаемый файл бренда
Версия 2.1: все цвета, типографика, логотип, оффлайн, CSS-vars,
правила — единый контекст для AI при работе с брендом клиники
- docs/TZ.md: добавлено требование ФТ-03-LLM
- docs/SPRINTS.md: задачи LLM-блоков в Sprint 3–8
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Визуальное сравнение фирменной палитры с реальными цветами сайта:
- 4 пары с соответствием (053M↔#63bac3, 073M↔#60959c, 066M↔#52b4bd, 081M↔#bf9975)
- 2 Oracal-цвета без аналога на сайте (050M, 080M)
- 3 цвета только сайта без Oracal-кода (текст #464646, серый #949290, крем #e9e4d4)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Добавлен массив WEB_COLORS (8 цветов из CSS темы oclinica.ru)
- Добавлен компонент WebColorCard с группой, счётчиком применений, HEX/RGB/HSL
- Новый раздел «Цвета с сайта» со ссылкой на CSS-источник в интерфейсе
- TZ.md: ОВ-07 — зафиксирован URL темы clinic_bootstrap_mobile и метод извлечения
Источник CSS: perm.oclinica.ru/sites/all/themes/clinic_bootstrap_mobile/css/style.css
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Навигация: макет Кабинет 04 + карточка врача из PDF, фото дверей 13 и 31, указатели по этажам
- Транспорт: рендер макета трамвая из PDF вместо CSS-заглушки
- Тайтлы: единый формат «Раздел. Цифровой брендбук Клиники ухо, горло, нос им. проф. Е.Н.Оленевой» на всех страницах
- Сайдбар: убран пункт «Печать» (нет данных из брендбука)
- SPRINTS.md: обновлены фактические результаты Sprint 2
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Извлечены 2 фото (стр.11 PDF): бежевый и синий варианты
- Убран CSS-макет, добавлены реальные фото с подписями и цветовыми чипами
- Обновлено описание: два варианта формы
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- TZ.md: хостинг (Vercel), стек (актуальные версии Next.js 16/NestJS 11/Prisma 7/pnpm 10/Tailwind 4),
раздел 12.2 с командой деплоя, закрыты ОВ-02 и ОВ-06
- SPRINTS.md: в Sprint 2 — ссылка на production URL; Sprint 12 — уточнены задачи деплоя
- docs/DEPLOY.md: новый файл — инструкция по деплою фронтенда, локальной разработке,
план автодеплоя через Gitea Actions, варианты хостинга бэкенда
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- colors/page.tsx: Record<string, unknown> вместо Record<string, string>
- next.config.ts: turbopack.root только в development (Vercel conflict fix)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- PNG логотипа извлечён из PDF (PyMuPDF + Pillow), прозрачный фон (numpy)
- Инвертированный логотип: CSS filter brightness(0) invert(1) на прозрачном PNG
- Исправлено название: «Клиника ухо, горло, нос им. проф. Е.Н.Оленевой»
- PostgreSQL переведён на порт 5433 (5432 занят на хосте)
- next.config.ts: turbopack.root для монорепо
- docs/SPRINTS.md: Sprint 1 помечен ✅ ЗАВЕРШЁН
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
По данным PDF-брендбука клиники:
BRANDBOOK_SCOPE.md:
- Типографика: добавлен DINPro как фирменный шрифт бренда (DINPro = оффлайн/печать, Fira Sans = веб)
- Логотип: иерархия версий («Общий» и «Основной»), правила, размеры на форме
- Новый раздел 6: Оффлайн элементы (форма, бейджи 70×30мм, навигация Oracal, трамваи, печать)
TZ.md:
- ФТ-01: добавлен раздел «Оффлайн элементы» в навигацию
- ФТ-15–17: требования к странице «Логотип» (PNG в Sprint 1, вектор позже)
- ФТ-20–22: уточнена типографика — оба шрифта с правилами применения
- ФТ-43–49: полные требования к разделу «Оффлайн элементы»
- Стек: DINPro добавлен в таблицу технологий
- ОВ-05: закрыт (логотип в Sprint 1), добавлен ОВ-06 (HEX-коды Oracal)
SPRINTS.md:
- Sprint 1: добавлены 9 задач по странице «Логотип» (PNG, иерархия, охранная зона, правила)
- Sprint 2: добавлены задачи по DINPro + 5 страниц раздела «Оффлайн элементы»
- Сводная таблица обновлена
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>