196526ffc4
- Add "Сохранить версию" button to BlockMetaBar that persists current version + changelog from code to PostgreSQL via PATCH API - Update navigation page: menu items section now renders like live example with underlined links, hover dropdowns, and submenus - Restore uncommitted changes from previous session (thirsty-mayer worktree): navigation v1.3 with dropdowns, updated hero/ceo/doctors/reviews/news/ contact-forms/footer blocks, navData.ts extraction, seed updates - Extract nav menu data to shared navData.ts module Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
170 lines
6.2 KiB
TypeScript
170 lines
6.2 KiB
TypeScript
import 'dotenv/config';
|
|
import { PrismaPg } from '@prisma/adapter-pg';
|
|
import { PrismaClient } from '@prisma/client';
|
|
|
|
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL });
|
|
const prisma = new PrismaClient({ adapter });
|
|
|
|
const BLOCKS = [
|
|
{
|
|
path: '/blocks/navigation',
|
|
name: 'Шапка / Навигация',
|
|
version: 'v1.3',
|
|
isInPreview: true,
|
|
changelog: [
|
|
{ version: 'v1.3', date: '24.03.2026', changes: [
|
|
'Подменю: выпадающие списки при hover',
|
|
'Hover-эффект: бежевый фон #f5f0e6',
|
|
'Пункты подчёркнуты, без разделителей',
|
|
'Все пункты чёрного цвета #000',
|
|
]},
|
|
{ version: 'v1.2', date: '24.03.2026', changes: [
|
|
'Убрана рамка и тень вокруг шапки',
|
|
'3 столбца: логотип | ссылки | телефон+кнопка',
|
|
'Реальный логотип logo-main.png',
|
|
]},
|
|
{ version: 'v1.1', date: '24.03.2026', changes: [
|
|
'Адрес: «К. Цеткин, 9», ссылки, телефон 25px, меню 18px',
|
|
]},
|
|
{ version: 'v1.0', date: '23.03.2026', changes: ['Топ-бар, логотип, главное меню из 8 пунктов'] },
|
|
],
|
|
},
|
|
{
|
|
path: '/blocks/hero',
|
|
name: 'Hero-баннер',
|
|
version: 'v1.3',
|
|
isInPreview: true,
|
|
changelog: [
|
|
{ version: 'v1.3', date: '24.03.2026', changes: [
|
|
'Счётчик: «Поделиться ✉ 98572» (было «👁 98 573 просмотра»)',
|
|
'Убраны кнопки VK/FB/TW',
|
|
]},
|
|
{ version: 'v1.2', date: '24.03.2026', changes: [
|
|
'H1: цвет #cb9768, размер 36px (было ~20px #53514e)',
|
|
'Заголовок баннера: 22px #333 (было 16px #111827)',
|
|
'CTA-кнопка: pill-стиль (было outline)',
|
|
'Дефис в H1: «–» → «-»',
|
|
]},
|
|
{ version: 'v1.1', date: '23.03.2026', changes: [
|
|
'Единый фон #f9f4e7 (ранее разбит на две зоны)',
|
|
'Реальное фото врача с пациентом',
|
|
]},
|
|
],
|
|
},
|
|
{
|
|
path: '/blocks/ceo',
|
|
name: 'Вводный текст (CEO-блок)',
|
|
version: 'v1.1',
|
|
isInPreview: false,
|
|
changelog: [
|
|
{ version: 'v1.1', date: '24.03.2026', changes: [
|
|
'Адрес: «ул. Цитная, 9» → «ул. Клары Цеткин, 9»',
|
|
'Цвет ссылок: #52b4bd (было #0089c3)',
|
|
]},
|
|
{ version: 'v1.0', date: '23.03.2026', changes: ['Текст специализации клиники, вопросы-стимулы'] },
|
|
],
|
|
},
|
|
{
|
|
path: '/blocks/doctors',
|
|
name: 'Наши врачи',
|
|
version: 'v1.2',
|
|
isInPreview: true,
|
|
changelog: [
|
|
{ version: 'v1.2', date: '24.03.2026', changes: [
|
|
'H2: 36px #000000 (было ~30px #111827)',
|
|
'line-height: 38px',
|
|
]},
|
|
{ version: 'v1.1', date: '23.03.2026', changes: [
|
|
'6 реальных фото врачей с сайта',
|
|
'Статистика без фона, только border-bottom #60959c',
|
|
]},
|
|
],
|
|
},
|
|
{
|
|
path: '/blocks/reviews',
|
|
name: 'Отзывы',
|
|
version: 'v1.1',
|
|
isInPreview: true,
|
|
changelog: [
|
|
{ version: 'v1.1', date: '24.03.2026', changes: [
|
|
'H2: 36px #000000 (было ~20px #111827)',
|
|
'line-height: 38px',
|
|
]},
|
|
{ version: 'v1.0', date: '23.03.2026', changes: [
|
|
'Карусель отзывов: кавычка, текст, стрелки',
|
|
]},
|
|
],
|
|
},
|
|
{
|
|
path: '/blocks/contact-forms',
|
|
name: 'Формы записи',
|
|
version: 'v1.2',
|
|
isInPreview: true,
|
|
changelog: [
|
|
{ version: 'v1.2', date: '24.03.2026', changes: [
|
|
'Кнопка: bb-btn-lg 18px bold (было bb-btn-md 14px)',
|
|
'border-radius кнопки: 4px (было 7px)',
|
|
]},
|
|
{ version: 'v1.1', date: '24.03.2026', changes: [
|
|
'H2: 36px #000000',
|
|
'Фон формы 1: #b8e6ed → #d4f6f8',
|
|
'Фон формы 2: #ffffff → #d4f6f8 (обе формы на одном фоне)',
|
|
]},
|
|
{ version: 'v1.0', date: '23.03.2026', changes: [
|
|
'Две формы записи: «Будьте здоровы!» и «Узнайте стоимость операции»',
|
|
]},
|
|
],
|
|
},
|
|
{
|
|
path: '/blocks/news',
|
|
name: 'Новости',
|
|
version: 'v1.1',
|
|
isInPreview: true,
|
|
changelog: [
|
|
{ version: 'v1.1', date: '24.03.2026', changes: [
|
|
'H2: 36px #000000',
|
|
'Фон секции: #fff → #f2fee6 (светло-зелёный)',
|
|
]},
|
|
{ version: 'v1.0', date: '23.03.2026', changes: [
|
|
'4 карточки новостей в ряд, кнопка «Все новости»',
|
|
]},
|
|
],
|
|
},
|
|
{
|
|
path: '/blocks/contact',
|
|
name: 'Подвал / Контакт',
|
|
version: 'v1.1',
|
|
isInPreview: false,
|
|
changelog: [
|
|
{ version: 'v1.1', date: '24.03.2026', changes: [
|
|
'Колонка «О клинике»: 13 ссылок по реальному сайту (было 7)',
|
|
'Колонка «Заболевания»: 5 категорий (было 6 конкретных диагнозов)',
|
|
'Колонка «Вопрос-ответ»: 6 пунктов по реальному сайту',
|
|
'Колонка «Операции»: 11 операций (было 6)',
|
|
'Два адреса: Клары Цеткин 9 + Газеты Звезда 31А',
|
|
'Два графика работы по филиалам',
|
|
'Соцсети: добавлен Дзен',
|
|
]},
|
|
{ version: 'v1.0', date: '23.03.2026', changes: ['4 колонки ссылок, адрес, часы работы'] },
|
|
],
|
|
},
|
|
];
|
|
|
|
async function main() {
|
|
for (const block of BLOCKS) {
|
|
await prisma.block.upsert({
|
|
where: { path: block.path },
|
|
update: { version: block.version, isInPreview: block.isInPreview, changelog: block.changelog },
|
|
create: block,
|
|
});
|
|
}
|
|
console.log(`Seeded ${BLOCKS.length} blocks`);
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
})
|
|
.finally(() => prisma.$disconnect());
|