Browse Source

docs: close Sprint 5/5.5, prepare Sprint 6

- fix: CeoBlock padding 40px 48px → 40px 0 (v1.2)
- fix: BlockMetaBar.saveFullVersion() used defaultVersion instead of meta.version, causing version rollback in DB on snapshot save
- docs: mark Sprint 5 and 5.5 as completed in SPRINTS.md
- docs: update LLM_CONTEXT v4.5 — all 8 blocks documented, Sprint 6 current
- chore: Sidebar version → Sprint 6 · v0.6.0
- chore: add .vercel to .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
main
AR 15 M4 2 months ago
parent
commit
eda348deea
  1. 1
      .gitignore
  2. 11
      apps/web/app/blocks/ceo/CeoPageClient.tsx
  3. 2
      apps/web/components/blocks/CeoBlock.tsx
  4. 2
      apps/web/components/layout/Sidebar.tsx
  5. 7
      apps/web/components/ui/BlockMetaBar.tsx
  6. 19
      docs/LLM_CONTEXT.md
  7. 13
      docs/SPRINTS.md

1
.gitignore vendored

@ -29,3 +29,4 @@ prisma/migrations/*.sql.bak
# Claude # Claude
.claude/ .claude/
.vercel

11
apps/web/app/blocks/ceo/CeoPageClient.tsx

@ -51,6 +51,13 @@ const LLM_CEO_TEXT = `
const CHANGELOG: ChangelogEntry[] = [ const CHANGELOG: ChangelogEntry[] = [
{
version: "v1.2",
date: "25.03.2026",
changes: [
"Убраны горизонтальные отступы: padding 40px 48px → 40px 0 (как на реальном сайте)",
],
},
{ {
version: "v1.1", version: "v1.1",
date: "24.03.2026", date: "24.03.2026",
@ -79,7 +86,7 @@ export default function CeoPageClient() {
</h1> </h1>
<BlockMetaBar <BlockMetaBar
path={BLOCK_PATH} path={BLOCK_PATH}
defaultVersion="v1.1" defaultVersion="v1.2"
defaultIsInPreview={false} defaultIsInPreview={false}
defaultChangelog={CHANGELOG} defaultChangelog={CHANGELOG}
onSnapshotSelect={setSnapshot} onSnapshotSelect={setSnapshot}
@ -179,7 +186,7 @@ export default function CeoPageClient() {
</section> </section>
{/* LLM блок */} {/* LLM блок */}
<LlmBlock path="/blocks/ceo" version="v1.1" specText={LLM_CEO_TEXT}> <LlmBlock path="/blocks/ceo" version="v1.2" specText={LLM_CEO_TEXT}>
<LlmSection title="Структура блока" /> <LlmSection title="Структура блока" />
<LlmTable <LlmTable
headers={["Часть", "Содержимое", "Примечание"]} headers={["Часть", "Содержимое", "Примечание"]}

2
apps/web/components/blocks/CeoBlock.tsx

@ -15,7 +15,7 @@ export function CeoBlock() {
fontSize: 14, fontSize: 14,
lineHeight: 1.75, lineHeight: 1.75,
color: "#374151", color: "#374151",
padding: "40px 48px", padding: "40px 0",
}} }}
> >
<p> <p>

2
apps/web/components/layout/Sidebar.tsx

@ -167,7 +167,7 @@ export function Sidebar() {
color: "var(--bb-sidebar-text-muted)", color: "var(--bb-sidebar-text-muted)",
}} }}
> >
Sprint 5.5 · v0.5.5 Sprint 6 · v0.6.0
</div> </div>
</aside> </aside>
); );

7
apps/web/components/ui/BlockMetaBar.tsx

@ -134,8 +134,9 @@ export function BlockMetaBar({ path, defaultVersion, defaultIsInPreview, default
if (apiDown || !apiUrl) return; if (apiDown || !apiUrl) return;
setSavingVersion('saving'); setSavingVersion('saving');
try { try {
// 1. Update block metadata // 1. Update block metadata (prefer current API version over hardcoded default)
const updated = await patch({ version: defaultVersion, changelog: defaultChangelog }); const currentVersion = meta?.version ?? defaultVersion;
const updated = await patch({ version: currentVersion, changelog: defaultChangelog });
if (updated) { if (updated) {
setMeta(updated); setMeta(updated);
setVersionInput(updated.version); setVersionInput(updated.version);
@ -147,7 +148,7 @@ export function BlockMetaBar({ path, defaultVersion, defaultIsInPreview, default
await fetch(`${apiUrl}/blocks/snapshots?path=${encodeURIComponent(path)}`, { await fetch(`${apiUrl}/blocks/snapshots?path=${encodeURIComponent(path)}`, {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, 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(); await fetchSnapshots();
} catch { /* snapshot capture may fail if container not found */ } } catch { /* snapshot capture may fail if container not found */ }

19
docs/LLM_CONTEXT.md

@ -2,9 +2,9 @@
## Клиника ухо, горло, нос им. проф. Е.Н.Оленевой ## Клиника ухо, горло, нос им. проф. Е.Н.Оленевой
**Версия контекста:** 4.4 **Версия контекста:** 4.5
**Дата обновления:** 2026-03-25 **Дата обновления:** 2026-03-25
**Актуальный спринт:** Sprint 5.5 **Актуальный спринт:** Sprint 6
**Сайт клиники:** https://oclinica.ru **Сайт клиники:** https://oclinica.ru
**Брендбук (локально):** http://localhost:3001 **Брендбук (локально):** http://localhost:3001
**Брендбук (production):** https://web-oclinica.vercel.app **Брендбук (production):** https://web-oclinica.vercel.app
@ -291,10 +291,16 @@ SVG-версия ожидается (не получена от клиники).
| `/components/forms` | ✅ Готова | Форм-контролы — Input/Textarea/Select/Checkbox/Radio/Toggle | | `/components/forms` | ✅ Готова | Форм-контролы — Input/Textarea/Select/Checkbox/Radio/Toggle |
| `/components/cards` | ✅ Sprint 4 | Карточки — врач, услуга, новость, отзыв, цена + бейджи/теги/алерты | | `/components/cards` | ✅ Sprint 4 | Карточки — врач, услуга, новость, отзыв, цена + бейджи/теги/алерты |
| `/components/*` | 🔜 Sprint 4–5 | Модалки, таблицы, навигация | | `/components/*` | 🔜 Sprint 4–5 | Модалки, таблицы, навигация |
| `/blocks/hero` | ✅ Sprint 5.5 v1.2 | Hero-баннер: H1 36px #cb9768, заголовок 22px #333, кнопка pill, фон #f9f4e7 | | `/blocks/navigation` | ✅ Sprint 5 v1.3 | Шапка: топ-бар, логотип, главное меню с подменю |
| `/blocks/doctors` | ✅ Sprint 5.5 v1.2 | Врачи: H2 36px #000, статистика #60959c без фона, 6 реальных фото | | `/blocks/hero` | ✅ Sprint 5 v1.3 | Hero-баннер: H1 36px #cb9768, заголовок 22px #333, кнопка pill, фон #f9f4e7 |
| `/blocks/*` | 🔜 Sprint 5 | Отзывы, формы, новости, footer | | `/blocks/ceo` | ✅ Sprint 5 v1.2 | Вводный текст: специализация клиники, вопросы-стимулы |
| `/pages/*` | 🔜 Sprint 9–11 | Главная, заболевание, врачи, цены, контакты | | `/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.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.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.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() (откат версии), таблица блоков обновлена |
--- ---

13
docs/SPRINTS.md

@ -178,7 +178,7 @@
--- ---
## Sprint 5 — Все блоки текущего сайта ## Sprint 5 — Все блоки текущего сайта ✅ ЗАВЕРШЁН
**Цель:** Задокументировать ВСЕ блоки страницы perm.oclinica.ru/lor за один спринт. **Цель:** Задокументировать ВСЕ блоки страницы perm.oclinica.ru/lor за один спринт.
Источник: скриншот страницы + CSS сайта. Только фронтенд, mock-данные. Источник: скриншот страницы + CSS сайта. Только фронтенд, mock-данные.
@ -234,7 +234,7 @@
- [x] FE: LLM-блоки на hero v1.1 и doctors v1.1 - [x] FE: LLM-блоки на hero v1.1 и doctors v1.1
- [x] Docs: Типографика сайта — реальные стили на 23.03.2026 (новый раздел в /foundation/typography) - [x] Docs: Типографика сайта — реальные стили на 23.03.2026 (новый раздел в /foundation/typography)
- [x] Docs: Цвета — исправлен #f9f4e7 (Hero), #b8e6ed (форма), #e9e4d4 (пилюли) - [x] Docs: Цвета — исправлен #f9f4e7 (Hero), #b8e6ed (форма), #e9e4d4 (пилюли)
- [ ] FE: Убрать `soon` у Hero и Doctors в Sidebar - [x] FE: Убрать `soon` у Hero и Doctors в Sidebar
- [x] FE: CEO-блок v1.1 - [x] FE: CEO-блок v1.1
- [x] FE: Блоки отзывов, форм записи, новостей — компоненты + страницы документации - [x] FE: Блоки отзывов, форм записи, новостей — компоненты + страницы документации
- [x] FE: Сравнение ВСЕХ блоков с реальным сайтом и синхронизация (24.03.2026) - [x] FE: Сравнение ВСЕХ блоков с реальным сайтом и синхронизация (24.03.2026)
@ -256,13 +256,16 @@
- BlockMetaBar: загружает version + changelog из API, fallback на defaultVersion/defaultChangelog - BlockMetaBar: загружает version + changelog из API, fallback на defaultVersion/defaultChangelog
- Компонент BlockChangelog: отображает историю версий из API или из кода - Компонент BlockChangelog: отображает историю версий из API или из кода
- Надпись «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 — «Просмотр текущей страницы» (внеочередной) ✅ ЗАВЕРШЁН
**Цель:** Добавить интерактивный раздел брендбука, который собирает главную страницу из уже задокументированных блоков. **Цель:** Добавить интерактивный раздел брендбука, который собирает главную страницу из уже задокументированных блоков.
Показывает живой превью того, как выглядит сайт на основе данных брендбука. Показывает живой превью того, как выглядит сайт на основе данных брендбука.

Loading…
Cancel
Save