import PocketBase from 'pocketbase';

const PB_URL = process.env.POCKETBASE_URL || 'http://127.0.0.1:8090';
const ADMIN_EMAIL = process.env.PB_ADMIN_EMAIL;
const ADMIN_PASSWORD = process.env.PB_ADMIN_PASSWORD;

const NEW_POST = {
  title: 'Протокол и постановление ГИБДД: отличия и что важно знать',
  description: 'Разбираемся в двух ключевых документах при нарушении ПДД. Что такое протокол, что такое постановление и как понимание разницы помогает защитить свои права.',
  author: 'Автоюрист',
  category: 'Штрафы ГИБДД',
  categoryColor: 'bg-green',
  date: '2024-04-15',
  readTime: '7 мин',
  readmeTime: '7',
  image: '',
  slug: 'protocol-vs-resolution',
  draft: false,
  content: `<h2>Введение</h2>
<p style="text-align: justify;">Многие водители путают два документа, которые сотрудники ГИБДД составляют при нарушении правил дорожного движения — протокол и постановление. Между тем, это принципиально разные документы с разными юридическими последствиями. Понимание разницы поможет вам правильно оценить ситуацию и при необходимости защитить свои права.</p>

<h2>Что такое протокол</h2>
<p style="text-align: justify;">Протокол — это документ, фиксирующий факт совершения административного правонарушения. Его составляет инспектор ГИБДД на месте остановки вашего транспортного средства.</p>

<p style="text-align: justify;"><strong>Протокол содержит:</strong></p>
<blockquote>
<ul>
<li>✅ Дату, время и место составления</li>
<li>✅ Данные инспектора (должность, звание, ФИО)</li>
<li>✅ Сведения о нарушителе (ваши данные)</li>
<li>✅ Описание нарушения со ссылкой на статью КоАП</li>
<li>✅ Объяснения нарушителя и свидетелей</li>
</ul>
</blockquote>

<blockquote>
<p><strong>Важно:</strong> Протокол — это не решение о наказании, а лишь документ, фиксирующий нарушение. После составления протокола материалы передаются для рассмотрения.</p>
</blockquote>

<h3>Когда составляется протокол</h3>
<p style="text-align: justify;">Протокол составляется при любом нарушении ПДД, независимо от того, какое наказание предусмотрено — предупреждение, штраф или лишение прав. Это обязательный первичный документ.</p>

<h2>Что такое постановление</h2>
<p style="text-align: justify;">Постановление — это итоговый документ, который выносится по результатам рассмотрения дела об административном правонарушении. Именно постановление устанавливает вину и назначает наказание.</p>

<p style="text-align: justify;"><strong>Постановление содержит:</strong></p>
<blockquote>
<ul>
<li>✅ Результаты рассмотрения дела</li>
<li>✅ Признание виновным или невиновным</li>
<li>✅ Назначенное наказание (размер штрафа, срок лишения прав)</li>
<li>✅ Порядок обжалования</li>
</ul>
</blockquote>

<h3>Когда выносится постановление</h3>
<p style="text-align: justify;">Постановление выносится после того, как материалы дела изучаются должностным лицом (инспектором, начальником подразделения) или судом. Если вы согласны с нарушением, постановление может быть вынесено сразу на месте.</p>

<h2>Ключевые отличия</h2>
<div class="comparison-grid">
  <div class="grid-row grid-header">
    <div class="grid-cell">Критерий</div>
    <div class="grid-cell">Протокол</div>
    <div class="grid-cell">Постановление</div>
  </div>
  <div class="grid-row">
    <div class="grid-cell cell-label"><strong>Назначение</strong></div>
    <div class="grid-cell">Фиксация нарушения</div>
    <div class="grid-cell">Решение о вине и наказании</div>
  </div>
  <div class="grid-row">
    <div class="grid-cell cell-label"><strong>Кто составляет</strong></div>
    <div class="grid-cell">Инспектор на месте</div>
    <div class="grid-cell">Уполномоченное лицо после рассмотрения</div>
  </div>
  <div class="grid-row">
    <div class="grid-cell cell-label"><strong>Оспаривание</strong></div>
    <div class="grid-cell">Можно указать несогласие</div>
    <div class="grid-cell">Обжалование в течение 10 дней</div>
  </div>
  <div class="grid-row">
    <div class="grid-cell cell-label"><strong>Юридическая сила</strong></div>
    <div class="grid-cell">Документ-основание</div>
    <div class="grid-cell">Исполнительный документ</div>
  </div>
  <div class="grid-row">
    <div class="grid-cell cell-label"><strong>Последствия</strong></div>
    <div class="grid-cell">Передача дела на рассмотрение</div>
    <div class="grid-cell">Штраф, лишение прав, предупреждение</div>
  </div>
</div>

<h2>На что обратить внимание водителю</h2>

<h3>При подписании протокола</h3>
<blockquote>
<ol>
<li><strong>Внимательно читайте</strong> весь текст перед подписью</li>
<li><strong>Укажите «не согласен»</strong> в графе объяснений, если считаете себя невиновным</li>
<li><strong>Запишите данные свидетелей</strong>, если они есть</li>
<li><strong>Проследите</strong>, чтобы инспектор зафиксировал все обстоятельства</li>
</ol>
</blockquote>

<h3>После получения постановления</h3>
<blockquote>
<ol>
<li><strong>Проверьте сроки</strong> — на обжалование даётся 10 дней</li>
<li><strong>Сохраните копию</strong> постановления</li>
<li><strong>Оплатите штраф</strong> в течение 60 дней (или 20 дней со скидкой 50%)</li>
<li><strong>Не игнорируйте</strong> — неоплаченные штрафы приводят к проблемам</li>
</ol>
</blockquote>

<h2>Заключение</h2>
<p style="text-align: justify;">Протокол и постановление — это разные этапы одного процесса привлечения к ответственности. Протокол фиксирует нарушение, постановление налагает наказание. Зная эту разницу, вы сможете:</p>
<blockquote>
<ul>
<li>✅ Правильно реагировать на действия инспектора</li>
<li>✅ Грамотно защитить свои интересы при обжаловании</li>
<li>✅ Не пропустить сроки для оспаривания</li>
</ul>
</blockquote>

<p style="text-align: justify;">Если вы получили протокол или постановление и считаете, что нарушения не было — обращайтесь за консультацией к автоюристу. Правильно составленная жалоба может отменить незаконное решение.</p>`,
};

const UPDATE_EXISTING = true;
const EXISTING_POST_ID = 'ippq714mm4dec7k';

async function createPost() {
  if (!ADMIN_EMAIL || !ADMIN_PASSWORD) {
    console.error('❌ Укажите PB_ADMIN_EMAIL и PB_ADMIN_PASSWORD в .env');
    process.exit(1);
  }

  const pb = new PocketBase(PB_URL);

  try {
    await pb.admins.authWithPassword(ADMIN_EMAIL, ADMIN_PASSWORD);
    console.log('✅ Подключено к PocketBase');
  } catch (e) {
    console.error('❌ Ошибка авторизации admin');
    process.exit(1);
  }

  try {
    let post;
    if (UPDATE_EXISTING && EXISTING_POST_ID) {
      post = await pb.collection('posts').update(EXISTING_POST_ID, NEW_POST);
      console.log('✅ Пост обновлён');
    } else {
      post = await pb.collection('posts').create(NEW_POST);
      console.log('✅ Пост создан');
    }
    console.log('   ID:', post.id);
    console.log('   title:', post.title);
    console.log('   slug:', post.slug);
  } catch (e: any) {
    if (e.data?.message?.includes('already exists')) {
      console.log('ℹ️  Пост уже существует');
    } else {
      console.error('❌ Ошибка:', e.data || e.message);
    }
  }
}

createPost();