diff --git a/.opencode/skills/avtourist/SKILL.md b/.opencode/skills/avtourist/SKILL.md new file mode 100644 index 0000000..517e627 --- /dev/null +++ b/.opencode/skills/avtourist/SKILL.md @@ -0,0 +1,99 @@ +# avtourist + +Проект: avtourist-surgut.ru — автоюрист в Сургуте. + +Стек: Astro (SSR) + PocketBase + Tailwind CSS. + +## Коллекции PocketBase + +- `posts` — статьи блога +- `reviews` — отзывы +- `comments` — комментарии +- `cases` — кейсы +- `consultations` — консультации +- `users` — пользователи +- `post_votes` — голоса за посты + +## Структура проекта + +``` +frontend/ +├── src/ +│ ├── pages/ +│ │ ├── index.astro # Главная +│ │ ├── services/ # Услуги +│ │ ├── cases/ # Кейсы +│ │ ├── blog/ # Блог +│ │ ├── api/ # API эндпоинты +│ │ └── auth/ # Авторизация +│ ├── layouts/ # Layouts +│ ├── lib/ # PocketBase клиент +│ └── globalInterfaces.ts # Типы +``` + +## Категории блога + +- ДТП +- Лишение прав +- Страховые споры +- Штрафы ГИБДД +- Возмещение ущерба +- Судебные дела + +## Категории услуг + +- Возврат прав +- Оспаривание штрафов +- Страховые споры (ОСАГО, КАСКО) +- ДТП и здоровье +- Представительство в суде +- Обжалование постановлений + +## Категории кейсов + +- insurance — страховые +- rights — лишение прав +- accident — ДТП +- court — судебные +- consultation — консультации + +## Компоненты + +Использовать готовые компоненты из проекта: +- ServiceCard — карточка услуги +- CaseCard — карточка кейса +- ReviewCard — карточка отзыва +- ArticleCard — карточка статьи + +## Типы + +Все типы определены в `frontend/src/globalInterfaces.ts`: +- Post +- Review +- Case +- DocumentItem +- CompanyInfo + +## API-эндпоинты + +- `/api/posts` — список постов +- `/api/posts/[slug]` — один пост +- `/api/reviews` — отзывы +- `/api/comments` — комментарии +- `/api/votes` — голоса +- `/api/consultation` — форма консультации +- `/api/auth/*` — авторизация + +## Переменные окружения + +``` +PB_POCKETBASE_URL=http://127.0.0.1:8090 +``` + +## Правила + +1. Все запросы к PB — на сервере (frontmatter) +2. Использовать типы из globalInterfaces.ts +3. Не использовать any +4. Компоненты — только .astro с Tailwind +5. API-эндпоинты — в src/pages/api/ \ No newline at end of file diff --git a/.opencode/skills/common b/.opencode/skills/common new file mode 120000 index 0000000..daee0ca --- /dev/null +++ b/.opencode/skills/common @@ -0,0 +1 @@ +C:/Users/Serg/.config/opencode/skills \ No newline at end of file diff --git a/frontend/src/components/home/Steps.astro b/frontend/src/components/home/Steps.astro index c318047..63ce9f3 100644 --- a/frontend/src/components/home/Steps.astro +++ b/frontend/src/components/home/Steps.astro @@ -53,9 +53,9 @@ const {
- Мы создали прозрачную систему взаимодействия, чтобы вы всегда знали, на каком этапе находится ваше дело -
++ 4 шага до результата. Оплата только за победу в суде. +
diff --git a/frontend/src/components/services/AboutTabs.astro b/frontend/src/components/services/AboutTabs.astro index ef17ad8..f289fd5 100644 --- a/frontend/src/components/services/AboutTabs.astro +++ b/frontend/src/components/services/AboutTabs.astro @@ -48,9 +48,9 @@ const finalSectionDesc = sectionDesc || defaultProps.sectionDesc; const defaultTabsData = { problem: { - title: "Остановка инспектором — критически важный момент", - description: "Большинство водителей теряют свои права именно на этапе остановки и общения с инспектором до начала оформления протокола. В этот момент важно знать свои права и фиксировать любые нарушения.", - description2: "Инспекторы часто допускают нарушения: не разъясняют права, проводят освидетельствование без понятых, не предоставляют информацию о порядке обжалования. Чем раньше подключится юрист — тем больше шансов на успех.", + title: "Потеря прав в 70% случаев происходит при остановке", + description: "**Потеря прав происходит на этапе остановки.** 70% дел проиграны из-за ошибок в первые минуты после остановки. Без юриста водитель не знает своих прав и не фиксирует нарушения инспектора.", + description2: "**Инспектор обязан соблюдать процедуру.** При нарушении — основание для прекращения дела. Инспектор должен: разъяснить права, проводить освидетельствование при понятых или на камеру, выдать копию протокола.", items: [ "Нарушение процедуры остановки и освидетельствования", "Отсутствие понятых или видеофиксации", @@ -62,9 +62,9 @@ const defaultTabsData = { barWidth: 70 }, approach: { - title: "Оперативная защита с первой минуты", - description: "Мы обеспечиваем юридическое сопровождение с момента остановки инспектором. Контролируем каждый шаг: законность требований, порядок освидетельствования, правильность заполнения документов.", - description2: "Наша задача — не допустить нарушений ещё на этапе оформления. Если протокол составлен с ошибками — это основание для прекращения дела.", + title: "Защита с момента остановки", + description: "**Юридическое сопровождение начинается сразу после остановки.** Контролируем каждый шаг: законность требований, порядок освидетельствования, правильность заполнения документов.", + description2: "**Задача юриста — не допустить нарушений при оформлении.** Если протокол составлен с ошибками — это основание для прекращения дела.", items: [ { icon: "📞", title: "Консультация по телефону", desc: "Правильное поведение при остановке" }, { icon: "🚗", title: "Выезд на место", desc: "Защита при оформлении" }, @@ -83,11 +83,11 @@ const defaultTabsData = { }, guarantees: { title: "Работаем на результат", - description: "Мы берёмся только за дела с реальными перспективами. Если защита на раннем этапе не помогла — мы вернём оплату за услугу.", - description2: "Если протокол составлен без нарушений — мы честно скажем об этом на первой консультации и предложим стратегию защиты на следующих этапах.", + description: "**Берёмся только за дел�� с реальными перспективами.** Если защита на раннем этапе не помогла — возвращаем оплату за услугу.", + description2: "Если протокол составлен без нарушений — честно скажем об этом на первой консультации и предложим стратегию защиты на следующих этапах.", items: [ { title: "Бесплатная оценка", desc: "Честный анализ перспектив дела на консультации" }, - { title: "Возврат денег", desc: "Если защита не сработала — вернём оплату" }, + { title: "Возврат денег", desc: "Если защита не сработала — возвращаем оплату" }, { title: "Договор", desc: "Официальный договор с прописанными условиями" }, { title: "Оперативность", desc: "Выезд на место в течение 30 минут" } ] @@ -109,15 +109,15 @@ const finalTabsData = tabsDataProp || defaultTabsData;{finalTabsData.approach.description}
+{finalTabsData.approach.description2}
- Наш клиент стал участником серьёзного ДТП, в котором виновником - был признан другой водитель. Автомобиль клиента получил значительные - повреждения. -
-- Страховая компания по КАСКО выплатила 320 000 ₽, - однако реальная стоимость ущерба составила 600 000 ₽. -
-- Виновник ДТП отказался добровольно возмещать разницу, ссылаясь - на то, что у него есть ОСАГО и все претензии нужно предъявлять - страховым компаниям. + Страховая по КАСКО выплатила 320 000 ₽, а реальный ущерб составил 600 000 ₽. + Клиент стал участником серьёзного ДТП, автомобиль получил значительные повреждения. + Виновник отказался добровольно возмещать разницу.
Похожий случай? Закажите бесплатную консультацию — оценим перспективы вашего дела.
+ Получить консультацию +Похожий случай? Закажите бесплатную консультацию — оценим перспективы вашего дела.
+ Получить консультацию +Суд, изучив представленные доказательства и видеозаписи, - пришёл к выводу о недоказанности вины нашего клиента. + пришёл к выводу о недоказанности вины клиента.
Дело прекращено за отсутствием состава правонарушения. @@ -136,6 +131,10 @@ import AdBanner from "@components/base/AdBanner.astro";
Похожий случай? Закажите бесплатную консультацию — оценим перспективы вашего дела.
+ Получить консультацию +