astro_avtourist/scripts/create-post.ts

168 lines
9.7 KiB
TypeScript
Raw Permalink Normal View History

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();