diff --git a/scripts/fix-introduction-h2.ts b/scripts/fix-introduction-h2.ts new file mode 100644 index 0000000..e3965bd --- /dev/null +++ b/scripts/fix-introduction-h2.ts @@ -0,0 +1,121 @@ +import PocketBase from 'pocketbase'; + +const PB_URL = 'https://avt-back.ru'; +const ADMIN_EMAIL = 'redibedi2019@gmail.com'; +const ADMIN_PASSWORD = 'Stalin4444'; + +// Посты с "Введение" на production +const PROBLEMATIC_POSTS = [ + { + id: 'e8or2rfsrpoly19', + title: 'Скрытие с места ДТП', + slug: 'skrytie-s-mesta-dtp' + }, + { + id: 'no247l14oxw156i', + title: 'Отказ от подписи в протоколе ГИБДД', + slug: 'otkaz-ot-podpisi-v-protokole-gibdd' + }, + { + id: 'eflpgypt1r78q3q', + title: 'За рулем на лекарствах', + slug: 'lekarstva-za-rulem-lishenie-prav' + }, + { + id: 'kmt2cpiu47jsp9c', + title: 'Лишение прав за встречку', + slug: 'lishenie-prav-za-vstrechku-12-15' + }, + { + id: '87u3tnboztln5w1', + title: 'Независимая экспертиза после ДТП', + slug: 'nezavisimaya-ekspertiza-posle-dtp' + }, + { + id: 'ewq7fbjbgpo12iv', + title: 'Консультация автоюриста', + slug: 'avtoyurist-surgut-besplatnaya-konsultaciya' + }, + { + id: '656dhm888yebhc8', + title: 'Протокол и постановление ГИБДД', + slug: 'protocol-ili-postanovlenie' + }, + { + id: 'f54gic3amc1rmjx', + title: '5 ошибок при заполнении протокола', + slug: '5-oshibok-voditelya-pri-zapolnenii-protokola-gibdd' + } +]; + +// Эмодзи по категории (приблизительно) +function getEmojiForTitle(title: string): string { + const lower = title.toLowerCase(); + if (lower.includes('дтп') || lower.includes('авария') || lower.includes('столкновен')) return '⚖️'; + if (lower.includes('лишени') || lower.includes('прав')) return '🚗'; + if (lower.includes('протокол') || lower.includes('гибдд') || lower.includes('штраф')) return '📋'; + if (lower.includes('эксперт')) return '🔍'; + if (lower.includes('консульт')) return '💡'; + return '⚖️'; +} + +async function fixIntroductionH2() { + const pb = new PocketBase(PB_URL); + + try { + await pb.admins.authWithPassword(ADMIN_EMAIL, ADMIN_PASSWORD); + console.log('✅ Подключено к PocketBase\n'); + } catch (e) { + console.error('❌ Ошибка авторизации:', e); + process.exit(1); + } + + let fixed = 0; + let errors = 0; + + for (const post of PROBLEMATIC_POSTS) { + try { + // Получаем текущий пост + const current = await pb.collection('posts').getOne(post.id); + const content = current.content || ''; + + // Проверяем что действительно начинается с "Введение" + if (!content.includes('