Merge branch 'dev' of https://github.com/redrockjs/ocenka-web into dev
137
.github/workflows/main.yaml
vendored
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
name: Build and deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'main'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Notify Telegram start building
|
||||||
|
uses: appleboy/telegram-action@master
|
||||||
|
with:
|
||||||
|
to: ${{ secrets.TELEGRAM_CHAT_ID }}
|
||||||
|
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
|
||||||
|
message: |
|
||||||
|
🚀 Запуск сборки!
|
||||||
|
Сервер: ${{ secrets.SERVER_NAME }}
|
||||||
|
Репозиторий: ${{ github.repository }}
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
tags: smallbuster/ocenka-web:latest
|
||||||
|
build-args: |
|
||||||
|
NEXT_PUBLIC_MAIL_USER=${{ secrets.NEXT_PUBLIC_MAIL_USER }}
|
||||||
|
NEXT_PUBLIC_MAIL_PASS=${{ secrets.NEXT_PUBLIC_MAIL_PASS }}
|
||||||
|
NEXT_PUBLIC_MAIL_FROM=${{ secrets.NEXT_PUBLIC_MAIL_FROM }}
|
||||||
|
NEXT_PUBLIC_MAIL_TO=${{ secrets.NEXT_PUBLIC_MAIL_TO }}
|
||||||
|
NEXT_PUBLIC_MAIL_SECURE_KEY=${{ secrets.NEXT_PUBLIC_MAIL_SECURE_KEY }}
|
||||||
|
|
||||||
|
- name: Notify Telegram about success
|
||||||
|
if: success()
|
||||||
|
uses: appleboy/telegram-action@master
|
||||||
|
with:
|
||||||
|
to: ${{ secrets.TELEGRAM_CHAT_ID }}
|
||||||
|
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
|
||||||
|
message: |
|
||||||
|
✅ Сборка успешно завершена!
|
||||||
|
Сервер: ${{ secrets.SERVER_NAME }}
|
||||||
|
Репозиторий: ${{ github.repository }}
|
||||||
|
Ветка: ${{ github.ref_name }}
|
||||||
|
Коммит: ${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Notify Telegram about failure
|
||||||
|
if: failure()
|
||||||
|
uses: appleboy/telegram-action@master
|
||||||
|
with:
|
||||||
|
to: ${{ secrets.TELEGRAM_CHAT_ID }}
|
||||||
|
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
|
||||||
|
message: |
|
||||||
|
❌ Сборка проекта неудачна!
|
||||||
|
Сервер: ${{ secrets.SERVER_NAME }}
|
||||||
|
Репозиторий: ${{ github.repository }}
|
||||||
|
Ветка: ${{ github.ref_name }}
|
||||||
|
Коммит: ${{ github.sha }}
|
||||||
|
Подробности: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
runs-on: self-hosted
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Notify Telegram start deploy
|
||||||
|
uses: appleboy/telegram-action@master
|
||||||
|
with:
|
||||||
|
to: ${{ secrets.TELEGRAM_CHAT_ID }}
|
||||||
|
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
|
||||||
|
message: |
|
||||||
|
🐳 Запуск деплоя!
|
||||||
|
Сервер: ${{ secrets.SERVER_NAME }}
|
||||||
|
Репозиторий: ${{ github.repository }}
|
||||||
|
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up Docker Compose
|
||||||
|
run: |
|
||||||
|
docker compose version
|
||||||
|
|
||||||
|
- name: Stop and remove existing containers
|
||||||
|
run: |
|
||||||
|
docker compose -f docker-compose.yaml down || true
|
||||||
|
|
||||||
|
- name: Pull Docker images
|
||||||
|
run: |
|
||||||
|
docker compose -f docker-compose.yaml pull
|
||||||
|
|
||||||
|
- name: Start containers
|
||||||
|
run: |
|
||||||
|
docker compose -f docker-compose.yaml up -d
|
||||||
|
|
||||||
|
- name: Notify Telegram about success
|
||||||
|
if: success()
|
||||||
|
uses: appleboy/telegram-action@master
|
||||||
|
with:
|
||||||
|
to: ${{ secrets.TELEGRAM_CHAT_ID }}
|
||||||
|
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
|
||||||
|
message: |
|
||||||
|
✅ Деплой успешно завершен!
|
||||||
|
Сервер: ${{ secrets.SERVER_NAME }}
|
||||||
|
Репозиторий: ${{ github.repository }}
|
||||||
|
Ветка: ${{ github.ref_name }}
|
||||||
|
Коммит: ${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Notify Telegram about failure
|
||||||
|
if: failure()
|
||||||
|
uses: appleboy/telegram-action@master
|
||||||
|
with:
|
||||||
|
to: ${{ secrets.TELEGRAM_CHAT_ID }}
|
||||||
|
token: ${{ secrets.TELEGRAM_BOT_TOKEN }}
|
||||||
|
message: |
|
||||||
|
❌ Деплой не удался!
|
||||||
|
Сервер: ${{ secrets.SERVER_NAME }}
|
||||||
|
Репозиторий: ${{ github.repository }}
|
||||||
|
Ветка: ${{ github.ref_name }}
|
||||||
|
Коммит: ${{ github.sha }}
|
||||||
|
Подробности: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||||
6
.idea/compiler.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="TypeScriptCompiler">
|
||||||
|
<option name="useServicePoweredTypesWasEnabledByExperiment" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
190
.idea/workspace.xml
generated
@@ -5,31 +5,105 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment="">
|
<list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/src/shared/lib/metaInfo/index.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/src/shared/lib/metaInfo/metaInfo.ts" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/src/shared/lib/phoneBeautify/index.ts" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/package-lock.json" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/entities/base-menu/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/entities/base-menu/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/api/og/route.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/api/og/route.ts" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/entities/beauty-button/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/entities/beauty-button/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/contacts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/contacts/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/entities/callback-form/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/entities/callback-form/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/cookies/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/cookies/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/entities/connect/style.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/entities/connect/style.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/borodin-vitalij-petrovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/borodin-vitalij-petrovich/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/entities/order-schema/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/entities/order-schema/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/gjulmamedov-javar-firmamed-ogly/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/gjulmamedov-javar-firmamed-ogly/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/entities/top-menu/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/entities/top-menu/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/jancen-jana-nikolaevna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/jancen-jana-nikolaevna/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/feature/article/consultation/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/feature/article/consultation/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/kaminskij-dmitrij-olegovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/kaminskij-dmitrij-olegovich/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/feature/article/documents/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/feature/article/documents/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/kolodij-aleksandr-sergeevich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/kolodij-aleksandr-sergeevich/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/feature/article/partners/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/feature/article/partners/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/mikova-inna-georgievna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/mikova-inna-georgievna/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/feature/article/related-articles/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/feature/article/related-articles/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/mitjaev-aleksej-aleksandrovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/mitjaev-aleksej-aleksandrovich/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/feature/article/sidebar/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/feature/article/sidebar/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/feature/contacts/licence-slider/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/feature/contacts/licence-slider/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/feature/contacts/yandex-map/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/feature/contacts/yandex-map/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/contacts/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/contacts/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/autotech/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/autotech/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/buhgalter/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/buhgalter/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/category/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/category/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/shared/lib/clickOutside/useClickOutside.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/lib/clickOutside/useClickOutside.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/computer/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/computer/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/shared/lib/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/lib/index.ts" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/document/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/document/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/shared/lib/phoneBeautify/phoneBeautify.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/lib/phoneBeautify/phoneBeautify.ts" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/finans/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/finans/styles.module.scss" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/widgets/consultation-modal/ui.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/widgets/consultation-modal/ui.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/kadastr/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/kadastr/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/pocherk/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/pocherk/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/pozhar/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/pozhar/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/recenzii/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/recenzii/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/stroit/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/stroit/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/tech-crim/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/tech-crim/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/tovar/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/tovar/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/trasologia/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/trasologia/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/expertise/zem-stroy/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/expertise/zem-stroy/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/borodin/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/borodin/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/category/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/category/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/elchischev/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/elchischev/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/gulmamedov/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/gulmamedov/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/kaminskiy/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/kaminskiy/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/kolodiy/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/kolodiy/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/mikova/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/mikova/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/mityaev/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/mityaev/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/polinov/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/polinov/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/volkova-goncharova/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/volkova-goncharova/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/experts/yancen/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/experts/yancen/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/home/call-us/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/home/call-us/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/banki/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/banki/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/bankrotstvo/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/bankrotstvo/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/category/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/category/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/dolgi/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/dolgi/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/dolzhnikam/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/dolzhnikam/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/predstavitelstvo/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/predstavitelstvo/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/sdelki/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/sdelki/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/spor-dtp/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/spor-dtp/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/spor-semejnye/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/spor-semejnye/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/spor-strahovye/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/spor-strahovye/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/spor-trudovye/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/spor-trudovye/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/jurist/spor-zemel-imush/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/jurist/spor-zemel-imush/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/avtomobilja-dlja-suda/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/avtomobilja-dlja-suda/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/category/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/category/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/cennyh-bumag/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/cennyh-bumag/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-banka-vtb/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-banka-vtb/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-banka/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-banka/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-ipoteki/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-ipoteki/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-notariusa/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-notariusa/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-opeki/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-opeki/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-opredelenija-stoimosti-ushherba/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-opredelenija-stoimosti-ushherba/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-sberbanka/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-sberbanka/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/dlja-strahovanija/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/dlja-strahovanija/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/garazha/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/garazha/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/imushhestva-dlja-bankrotstva/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/imushhestva-dlja-bankrotstva/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/imushhestva-dlja-vnesenija-v-ustavnoj-kapital/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/imushhestva-dlja-vnesenija-v-ustavnoj-kapital/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/imushhestva-dlja-vstuplenija-v-nasledstvo/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/imushhestva-dlja-vstuplenija-v-nasledstvo/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/jekspertiza-i-recenzirovanie-otcheta-ob-ocenke/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/jekspertiza-i-recenzirovanie-otcheta-ob-ocenke/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/kvartiry/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/kvartiry/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/mashin-i-oborudovanija/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/mashin-i-oborudovanija/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/morskih-i-rechnyh-sudov/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/morskih-i-rechnyh-sudov/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/motociklov-i-mototehniki/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/motociklov-i-mototehniki/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/nedvizhimosti-dlja-suda/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/nedvizhimosti-dlja-suda/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/nedvizhimosti/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/nedvizhimosti/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/nematerialnyh-aktivov/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/nematerialnyh-aktivov/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/nezavershennogo-stroitelstva/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/nezavershennogo-stroitelstva/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/nezavisimaja/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/nezavisimaja/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/nezhilogo-pomeshhenija/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/nezhilogo-pomeshhenija/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/ocenka-imushhestva-pri-razvode/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/ocenka-imushhestva-pri-razvode/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/ofisa/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/ofisa/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/rynochnoj-stoimosti-avtomobilja/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/rynochnoj-stoimosti-avtomobilja/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/sooruzhenij/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/sooruzhenij/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/spectehniki/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/spectehniki/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/stoimosti-arendnoj-stavki/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/stoimosti-arendnoj-stavki/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/stoimosti-predprijatija-biznesa/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/stoimosti-predprijatija-biznesa/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/ushherba-nedvizhimosti/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/ushherba-nedvizhimosti/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/ushherba-ot-pozhara/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/ushherba-ot-pozhara/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/ushherba-ot-zaliva/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/ushherba-ot-zaliva/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/ushherba-v-dtp/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/ushherba-v-dtp/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/uts-utraty-tovarnoj-stoimosti-avtomobilja/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/uts-utraty-tovarnoj-stoimosti-avtomobilja/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/vozdushnyh-sudov-i-letatelnyh-apparatov/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/vozdushnyh-sudov-i-letatelnyh-apparatov/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/zdanija/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/zdanija/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/zemel/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/zemel/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/zemelnogo-uchastka/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/zemelnogo-uchastka/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/views/ocenka/zhilogo-doma/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/ocenka/zhilogo-doma/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/widgets/breadcrumbs/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/widgets/breadcrumbs/styles.module.scss" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/widgets/cookie-notice/styles.module.scss" beforeDir="false" afterPath="$PROJECT_DIR$/src/widgets/cookie-notice/styles.module.scss" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -37,7 +111,7 @@
|
|||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="DarkyenusTimeTracker">
|
<component name="DarkyenusTimeTracker">
|
||||||
<option name="totalTimeSeconds" value="226823" />
|
<option name="totalTimeSeconds" value="247180" />
|
||||||
<option name="gitIntegration" value="true" />
|
<option name="gitIntegration" value="true" />
|
||||||
<option name="naggedAbout" value="1" />
|
<option name="naggedAbout" value="1" />
|
||||||
</component>
|
</component>
|
||||||
@@ -65,36 +139,39 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent"><![CDATA[{
|
<component name="PropertiesComponent">{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
"ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.git.unshallow": "true",
|
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||||
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
"RunOnceActivity.git.unshallow": "true",
|
||||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
||||||
"git-widget-placeholder": "dev",
|
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||||
"ignore.virus.scanning.warn.message": "true",
|
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||||
"javascript.preferred.runtime.type.id": "node",
|
"git-widget-placeholder": "dev",
|
||||||
"js.debugger.nextJs.config.created.client": "true",
|
"ignore.virus.scanning.warn.message": "true",
|
||||||
"js.debugger.nextJs.config.created.server": "true",
|
"javascript.preferred.runtime.type.id": "node",
|
||||||
"junie.onboarding.icon.badge.shown": "true",
|
"js.debugger.nextJs.config.created.client": "true",
|
||||||
"list.type.of.created.stylesheet": "SCSS",
|
"js.debugger.nextJs.config.created.server": "true",
|
||||||
"node.js.detected.package.eslint": "true",
|
"junie.onboarding.icon.badge.shown": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"list.type.of.created.stylesheet": "SCSS",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.detected.package.tslint": "true",
|
||||||
"nodejs_package_manager_path": "npm",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"npm.Next.js: server-side.executor": "Run",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"prettierjs.PrettierConfiguration.Package": "C:\\dev-projects\\ocenka-web\\node_modules\\prettier",
|
"nodejs_package_manager_path": "npm",
|
||||||
"settings.editor.selected.configurable": "terminal",
|
"npm.Next.js: server-side.executor": "Run",
|
||||||
"to.speed.mode.migration.done": "true",
|
"prettierjs.PrettierConfiguration.Package": "C:\\dev-personal\\ocenka-web\\node_modules\\prettier",
|
||||||
"ts.external.directory.path": "C:\\dev-projects\\ocenka-web\\node_modules\\typescript\\lib",
|
"settings.editor.selected.configurable": "terminal",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"to.speed.mode.migration.done": "true",
|
||||||
|
"ts.external.directory.path": "C:\\dev-personal\\ocenka-web\\node_modules\\typescript\\lib",
|
||||||
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="MoveFile.RECENT_KEYS">
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
|
<recent name="C:\dev-personal\ocenka-web" />
|
||||||
<recent name="C:\dev-personal\ocenka-web\public\images" />
|
<recent name="C:\dev-personal\ocenka-web\public\images" />
|
||||||
<recent name="C:\dev-personal\ocenka-web\src\widgets" />
|
<recent name="C:\dev-personal\ocenka-web\src\widgets" />
|
||||||
<recent name="C:\dev-personal\ocenka-web\src\widgets\sidebar" />
|
<recent name="C:\dev-personal\ocenka-web\src\widgets\sidebar" />
|
||||||
@@ -139,9 +216,12 @@
|
|||||||
<workItem from="1764825390464" duration="26961000" />
|
<workItem from="1764825390464" duration="26961000" />
|
||||||
<workItem from="1765196288370" duration="332000" />
|
<workItem from="1765196288370" duration="332000" />
|
||||||
<workItem from="1765196704782" duration="4455000" />
|
<workItem from="1765196704782" duration="4455000" />
|
||||||
<workItem from="1765279298291" duration="3352000" />
|
<workItem from="1765279298291" duration="3813000" />
|
||||||
<workItem from="1765365738711" duration="1288000" />
|
<workItem from="1765435962765" duration="4004000" />
|
||||||
<workItem from="1765367128544" duration="6366000" />
|
<workItem from="1765453944194" duration="1010000" />
|
||||||
|
<workItem from="1765455074110" duration="492000" />
|
||||||
|
<workItem from="1765455582502" duration="5006000" />
|
||||||
|
<workItem from="1765517372241" duration="14202000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
20
Dockerfile
@@ -13,6 +13,19 @@ RUN npm install --frozen-lockfile
|
|||||||
# Копируем все файлы проекта
|
# Копируем все файлы проекта
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
# Аргумент сборки для переменной окружения
|
||||||
|
ARG NEXT_PUBLIC_MAIL_USER
|
||||||
|
ARG NEXT_PUBLIC_MAIL_PASS
|
||||||
|
ARG NEXT_PUBLIC_MAIL_FROM
|
||||||
|
ARG NEXT_PUBLIC_MAIL_TO
|
||||||
|
ARG NEXT_PUBLIC_MAIL_SECURE_KEY
|
||||||
|
|
||||||
|
ENV NEXT_PUBLIC_MAIL_USER=$NEXT_PUBLIC_MAIL_USER \
|
||||||
|
NEXT_PUBLIC_MAIL_PASS=$NEXT_PUBLIC_MAIL_PASS \
|
||||||
|
NEXT_PUBLIC_MAIL_FROM=$NEXT_PUBLIC_MAIL_FROM \
|
||||||
|
NEXT_PUBLIC_MAIL_TO=$NEXT_PUBLIC_MAIL_TO \
|
||||||
|
NEXT_PUBLIC_MAIL_SECURE_KEY=$NEXT_PUBLIC_MAIL_SECURE_KEY
|
||||||
|
|
||||||
# Собираем приложение
|
# Собираем приложение
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
@@ -21,7 +34,12 @@ FROM node:22-alpine AS runner
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
ENV NODE_ENV=production \
|
ENV NODE_ENV=production \
|
||||||
NEXT_TELEMETRY_DISABLED=1
|
NEXT_TELEMETRY_DISABLED=1 \
|
||||||
|
NEXT_PUBLIC_MAIL_USER=$NEXT_PUBLIC_MAIL_USER \
|
||||||
|
NEXT_PUBLIC_MAIL_PASS=$NEXT_PUBLIC_MAIL_PASS \
|
||||||
|
NEXT_PUBLIC_MAIL_FROM=$NEXT_PUBLIC_MAIL_FROM \
|
||||||
|
NEXT_PUBLIC_MAIL_TO=$NEXT_PUBLIC_MAIL_TO \
|
||||||
|
NEXT_PUBLIC_MAIL_SECURE_KEY=$NEXT_PUBLIC_MAIL_SECURE_KEY
|
||||||
|
|
||||||
# Включаем node пользователя
|
# Включаем node пользователя
|
||||||
RUN addgroup -g 1001 -S nodejs
|
RUN addgroup -g 1001 -S nodejs
|
||||||
|
|||||||
141
package-lock.json
generated
@@ -15,7 +15,7 @@
|
|||||||
"libphonenumber-js": "^1.12.9",
|
"libphonenumber-js": "^1.12.9",
|
||||||
"next": "^15.5.7",
|
"next": "^15.5.7",
|
||||||
"nodemailer": "7.0.11",
|
"nodemailer": "7.0.11",
|
||||||
"puppeteer": "^24.32.0",
|
"puppeteer": "^24.32.1",
|
||||||
"react": "19.1.1",
|
"react": "19.1.1",
|
||||||
"react-dom": "19.1.1",
|
"react-dom": "19.1.1",
|
||||||
"react-hook-form": "^7.60.0",
|
"react-hook-form": "^7.60.0",
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
"@types/react": "19.1.11",
|
"@types/react": "19.1.11",
|
||||||
"@types/react-dom": "19.1.8",
|
"@types/react-dom": "19.1.8",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"eslint": "^9",
|
"eslint": "^9.39.1",
|
||||||
"eslint-config-next": "15.5.2",
|
"eslint-config-next": "15.5.2",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"lint-staged": "^16.1.2",
|
"lint-staged": "^16.1.2",
|
||||||
@@ -97,9 +97,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint-community/eslint-utils": {
|
"node_modules/@eslint-community/eslint-utils": {
|
||||||
"version": "4.7.0",
|
"version": "4.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
|
||||||
"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
|
"integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -139,13 +139,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/config-array": {
|
"node_modules/@eslint/config-array": {
|
||||||
"version": "0.20.1",
|
"version": "0.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz",
|
||||||
"integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==",
|
"integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/object-schema": "^2.1.6",
|
"@eslint/object-schema": "^2.1.7",
|
||||||
"debug": "^4.3.1",
|
"debug": "^4.3.1",
|
||||||
"minimatch": "^3.1.2"
|
"minimatch": "^3.1.2"
|
||||||
},
|
},
|
||||||
@@ -154,19 +154,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/config-helpers": {
|
"node_modules/@eslint/config-helpers": {
|
||||||
"version": "0.2.3",
|
"version": "0.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz",
|
||||||
"integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==",
|
"integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@eslint/core": "^0.17.0"
|
||||||
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/core": {
|
"node_modules/@eslint/core": {
|
||||||
"version": "0.14.0",
|
"version": "0.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
|
||||||
"integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
|
"integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -201,9 +204,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "9.29.0",
|
"version": "9.39.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz",
|
||||||
"integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==",
|
"integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -214,9 +217,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/object-schema": {
|
"node_modules/@eslint/object-schema": {
|
||||||
"version": "2.1.6",
|
"version": "2.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz",
|
||||||
"integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
|
"integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -224,32 +227,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/plugin-kit": {
|
"node_modules/@eslint/plugin-kit": {
|
||||||
"version": "0.3.2",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz",
|
||||||
"integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==",
|
"integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/core": "^0.15.0",
|
"@eslint/core": "^0.17.0",
|
||||||
"levn": "^0.4.1"
|
"levn": "^0.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
|
|
||||||
"version": "0.15.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz",
|
|
||||||
"integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/json-schema": "^7.0.15"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@hookform/resolvers": {
|
"node_modules/@hookform/resolvers": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.1.1.tgz",
|
||||||
@@ -2035,20 +2025,6 @@
|
|||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/b4a": {
|
|
||||||
"version": "1.7.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
|
|
||||||
"integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"peerDependencies": {
|
|
||||||
"react-native-b4a": "*"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"react-native-b4a": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/balanced-match": {
|
"node_modules/balanced-match": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||||
@@ -3057,26 +3033,25 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "9.29.0",
|
"version": "9.39.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz",
|
||||||
"integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
|
"integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.8.0",
|
||||||
"@eslint-community/regexpp": "^4.12.1",
|
"@eslint-community/regexpp": "^4.12.1",
|
||||||
"@eslint/config-array": "^0.20.1",
|
"@eslint/config-array": "^0.21.1",
|
||||||
"@eslint/config-helpers": "^0.2.1",
|
"@eslint/config-helpers": "^0.4.2",
|
||||||
"@eslint/core": "^0.14.0",
|
"@eslint/core": "^0.17.0",
|
||||||
"@eslint/eslintrc": "^3.3.1",
|
"@eslint/eslintrc": "^3.3.1",
|
||||||
"@eslint/js": "9.29.0",
|
"@eslint/js": "9.39.1",
|
||||||
"@eslint/plugin-kit": "^0.3.1",
|
"@eslint/plugin-kit": "^0.4.1",
|
||||||
"@humanfs/node": "^0.16.6",
|
"@humanfs/node": "^0.16.6",
|
||||||
"@humanwhocodes/module-importer": "^1.0.1",
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
"@humanwhocodes/retry": "^0.4.2",
|
"@humanwhocodes/retry": "^0.4.2",
|
||||||
"@types/estree": "^1.0.6",
|
"@types/estree": "^1.0.6",
|
||||||
"@types/json-schema": "^7.0.15",
|
|
||||||
"ajv": "^6.12.4",
|
"ajv": "^6.12.4",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
"cross-spawn": "^7.0.6",
|
"cross-spawn": "^7.0.6",
|
||||||
@@ -5607,9 +5582,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/puppeteer": {
|
"node_modules/puppeteer": {
|
||||||
"version": "24.32.0",
|
"version": "24.32.1",
|
||||||
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.32.0.tgz",
|
"resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.32.1.tgz",
|
||||||
"integrity": "sha512-exyxHPV5DSsigIhM/pzLcyzl5XU4Dp5lNP+APwIeStDxAdYqpMnJ1qN0QHXghjJx+cQJczby+ySH5rgv/5GQLw==",
|
"integrity": "sha512-wa8vGswFjH1iCyG6bGGydIYssEBluXixbMibK4x2x6/lIAuR87gF+c+Jjzom2Wiw/dDOtuki89VBurRWrgYaUA==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -5617,7 +5592,7 @@
|
|||||||
"chromium-bidi": "11.0.0",
|
"chromium-bidi": "11.0.0",
|
||||||
"cosmiconfig": "^9.0.0",
|
"cosmiconfig": "^9.0.0",
|
||||||
"devtools-protocol": "0.0.1534754",
|
"devtools-protocol": "0.0.1534754",
|
||||||
"puppeteer-core": "24.32.0",
|
"puppeteer-core": "24.32.1",
|
||||||
"typed-query-selector": "^2.12.0"
|
"typed-query-selector": "^2.12.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -5628,9 +5603,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/puppeteer-core": {
|
"node_modules/puppeteer-core": {
|
||||||
"version": "24.32.0",
|
"version": "24.32.1",
|
||||||
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.32.0.tgz",
|
"resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.32.1.tgz",
|
||||||
"integrity": "sha512-MqzLLeJjqjtHK9J44+KE3kjtXXhFpPvg+AvXl/oy/jB8MeeNH66/4MNotOTqGZ6MPaxWi51YJ1ASga6OIff6xw==",
|
"integrity": "sha512-GdWTOgy3RqaW6Etgx93ydlVJ4FBJ6TmhMksG5W7v4uawKAzLHNj33k4kBQ1SFZ9NvoXNjhdQuIQ+uik2kWnarA==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@puppeteer/browsers": "2.11.0",
|
"@puppeteer/browsers": "2.11.0",
|
||||||
@@ -6609,6 +6584,20 @@
|
|||||||
"streamx": "^2.15.0"
|
"streamx": "^2.15.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/tar-stream/node_modules/b4a": {
|
||||||
|
"version": "1.7.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
|
||||||
|
"integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"peerDependencies": {
|
||||||
|
"react-native-b4a": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"react-native-b4a": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/text-decoder": {
|
"node_modules/text-decoder": {
|
||||||
"version": "1.2.3",
|
"version": "1.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
|
||||||
@@ -6618,6 +6607,20 @@
|
|||||||
"b4a": "^1.6.4"
|
"b4a": "^1.6.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/text-decoder/node_modules/b4a": {
|
||||||
|
"version": "1.7.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
|
||||||
|
"integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"peerDependencies": {
|
||||||
|
"react-native-b4a": "*"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"react-native-b4a": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/tinyglobby": {
|
"node_modules/tinyglobby": {
|
||||||
"version": "0.2.14",
|
"version": "0.2.14",
|
||||||
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
"libphonenumber-js": "^1.12.9",
|
"libphonenumber-js": "^1.12.9",
|
||||||
"next": "^15.5.7",
|
"next": "^15.5.7",
|
||||||
"nodemailer": "7.0.11",
|
"nodemailer": "7.0.11",
|
||||||
"puppeteer": "^24.32.0",
|
"puppeteer": "^24.32.1",
|
||||||
"react": "19.1.1",
|
"react": "19.1.1",
|
||||||
"react-dom": "19.1.1",
|
"react-dom": "19.1.1",
|
||||||
"react-hook-form": "^7.60.0",
|
"react-hook-form": "^7.60.0",
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
"@types/react": "19.1.11",
|
"@types/react": "19.1.11",
|
||||||
"@types/react-dom": "19.1.8",
|
"@types/react-dom": "19.1.8",
|
||||||
"clsx": "^2.1.1",
|
"clsx": "^2.1.1",
|
||||||
"eslint": "^9",
|
"eslint": "^9.39.1",
|
||||||
"eslint-config-next": "15.5.2",
|
"eslint-config-next": "15.5.2",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"lint-staged": "^16.1.2",
|
"lint-staged": "^16.1.2",
|
||||||
|
|||||||
4
public/BingSiteAuth.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<users>
|
||||||
|
<user>4B63A47B97DDCABE6EE4E276394ED761</user>
|
||||||
|
</users>
|
||||||
BIN
public/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
public/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
1
public/google33cf6327f5b28464.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
google-site-verification: google33cf6327f5b28464.html
|
||||||
BIN
public/images/opengraph/expertise/auto.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/expertise/buh.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/expertise/computer.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/images/opengraph/expertise/crime.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/opengraph/expertise/documents.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/opengraph/expertise/finance.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/opengraph/expertise/kadastr.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/opengraph/expertise/ocenka.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/opengraph/expertise/pocherk.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/expertise/pojar.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/expertise/recenzia.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/expertise/stroika.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/images/opengraph/expertise/tovar.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/expertise/trasologia.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/expertise/zemlya.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/justice/bankrot.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/images/opengraph/justice/jurid-dolgi.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/justice/pomosch-doljnikam.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
public/images/opengraph/justice/predstavitelstvo.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
public/images/opengraph/justice/sdelki.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/justice/spori-semeinye.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/justice/spori-strah.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public/images/opengraph/justice/spori-trud.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
public/images/opengraph/justice/spori-zem-imushestv.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/justice/spory-dtp.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
public/images/opengraph/justice/vozvrat-strahovki.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/opengraph/main.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/commerce/arenda.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/commerce/building.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/commerce/commerce.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/images/opengraph/ocenka/commerce/nezavers.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/images/opengraph/ocenka/commerce/office.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/commerce/zdanie.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/commerce/zemlya.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/ipoteka/sber.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/ocenka/ipoteka/vtb.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/images/opengraph/ocenka/property/business.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images/opengraph/ocenka/property/cenn-bumagi.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/property/nedviga.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/property/nmt.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images/opengraph/ocenka/property/oborudov.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
public/images/opengraph/ocenka/property/recenzia.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/ocenka/property/spec-tehnika.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/ocenka/residential/cottage.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/residential/garazh.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/residential/kvartira.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/residential/pojar.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/ocenka/residential/uchastok.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/opengraph/ocenka/residential/uscherb.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/residential/zaliv.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/ocenka/situation/bank.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/situation/bankrot.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/situation/ipoteka.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/situation/nasledstvo.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
public/images/opengraph/ocenka/situation/nedvijimost-sud.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/situation/nezavisim.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/ocenka/situation/notarius.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/situation/opeka.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/situation/razvod.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/ocenka/situation/strahovka.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/images/opengraph/ocenka/situation/uscherb.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/opengraph/ocenka/situation/ustavnoi.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/transport/auto-rynok.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
public/images/opengraph/ocenka/transport/auto-sud.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/images/opengraph/ocenka/transport/avia.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/opengraph/ocenka/transport/dtp.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/images/opengraph/ocenka/transport/moto.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/ocenka/transport/sea-boats.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
public/images/opengraph/ocenka/transport/uts.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
6
public/yandex_df77543931ea96af.html
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<script type="text/javascript" src="https://gc.kis.v2.scr.kaspersky-labs.com/FD126C42-EBFA-4E12-B309-BB3FDD723AC1/main.js?attr=WdycdvKErtA4OOMLLZj8TMinCk1INjI5LK_lPoQnj-hjo5rsBSpPa0D7Wb_k5J9AqmjXAmygADVNH55GSqwL27FejKdWrMD-jMeFraCEU92uBeFOKeoEYdHddLviDW0s" charset="UTF-8"></script></head>
|
||||||
|
<body>Verification: df77543931ea96af</body>
|
||||||
|
</html>
|
||||||
555
public/yml_ditraso.yml
Normal file
@@ -0,0 +1,555 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
|
<yml_catalog date="2020-01-08 13:54">
|
||||||
|
<shop>
|
||||||
|
<name>ООО "ДИ ТРАСО"</name>
|
||||||
|
<company>ООО "ДИ ТРАСО"</company>
|
||||||
|
<url>ocenka-sochi.ru</url>
|
||||||
|
<platform>WordPress</platform>
|
||||||
|
<version>5</version>
|
||||||
|
<email>spo-71@ya.ru</email>
|
||||||
|
<currencies>
|
||||||
|
<currency id="RUR" rate="1" />
|
||||||
|
</currencies>
|
||||||
|
<categories>
|
||||||
|
<category id="1">Экспертиза</category>
|
||||||
|
<category id="2">Юриспруденция</category>
|
||||||
|
<category id="3">Оценка</category>
|
||||||
|
</categories>
|
||||||
|
<delivery-options>
|
||||||
|
<option cost="1" days="1" />
|
||||||
|
</delivery-options>
|
||||||
|
<cpa>1</cpa>
|
||||||
|
<offers>
|
||||||
|
<offer id="1">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/avtoekspertiza/</url>
|
||||||
|
<price>2500</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Автотехническая экспертиза</name>
|
||||||
|
<description>Автотехническая экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="2">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/buhgalterskaya/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Бухгалтерская экспертиза</name>
|
||||||
|
<description>Бухгалтерская экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="3">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/kadastrovaya/</url>
|
||||||
|
<price>10000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Кадастровая экспертиза</name>
|
||||||
|
<description>Кадастровая экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="4">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/kompyuterno-tekhnicheskaya/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Компьютерно-техническая экспертиза</name>
|
||||||
|
<description>Компьютерно-техническая экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="5">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/kompyuterno-tekhnicheskaya/ekspertiza-bytovoj-tekhniki/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Экспертиза бытовой техники</name>
|
||||||
|
<description>Экспертиза бытовой техники</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="6">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/kompyuterno-tekhnicheskaya/fototekhnicheskaya-ekspertiza/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Фототехническая экспертиза </name>
|
||||||
|
<description>Фототехническая экспертиза </description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="7">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/kompyuterno-tekhnicheskaya/informacionno-kompyuternaya-ekspertiza/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Информационно-компьютерная экспертиза </name>
|
||||||
|
<description>Информационно-компьютерная экспертиза </description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="8">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/stroitelnaya/</url>
|
||||||
|
<price>15000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Строительно-техническая экспертиза</name>
|
||||||
|
<description>Строительно-техническая экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="9">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/stroitelnaya/ekspertiza-kachestva-remonta/</url>
|
||||||
|
<price>15000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Экспертиза качества ремонта</name>
|
||||||
|
<description>Экспертиза качества ремонта</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="10">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/stroitelnaya/ekspertiza-razdeleniya-nedvizhimosti/</url>
|
||||||
|
<price>15000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Экспертиза разделения недвижимости</name>
|
||||||
|
<description>Экспертиза разделения недвижимости</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="11">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/stroitelnaya/ekspertiza-stroitelnyh-proektov/</url>
|
||||||
|
<price>25000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Экспертиза строительных проектов</name>
|
||||||
|
<description>Экспертиза строительных проектов</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="12">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/stroitelnaya/ekspertiza-ushcherba-posle-zaliva-ili-pozhara/</url>
|
||||||
|
<price>15000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Экспертиза ущерба после залива или пожара</name>
|
||||||
|
<description>Экспертиза ущерба после залива или пожара</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="13">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/stroitelnaya/issledovanie-razrusheniya-stroitelnyh-obektov/</url>
|
||||||
|
<price>20000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Исследование разрушения строительных объектов </name>
|
||||||
|
<description>Исследование разрушения строительных объектов </description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="14">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/stroitelnaya/tekhnicheskoe-obsledovanie-zdanij-i-sooruzhenij/</url>
|
||||||
|
<price>15000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Техническое обследование зданий и сооружений</name>
|
||||||
|
<description>Техническое обследование зданий и сооружений</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="15">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/tehniko-kriminalisticheskaya/</url>
|
||||||
|
<price>16000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Технико-криминалистическая экспертиза</name>
|
||||||
|
<description>Технико-криминалистическая экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="16">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/tehniko-kriminalisticheskaya/pocherkovedcheskaya-ekspertiza/</url>
|
||||||
|
<price>20000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Почерковедческая экспертиза</name>
|
||||||
|
<description>Почерковедческая экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="17">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/tehniko-kriminalisticheskaya/portretnaya-ekspertiza/</url>
|
||||||
|
<price>16000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Портретная экспертиза </name>
|
||||||
|
<description>Портретная экспертиза </description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="18">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/tehniko-kriminalisticheskaya/tekhnicheskaya-ekspertiza-dokumentov/</url>
|
||||||
|
<price>16000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Техническая экспертиза документов </name>
|
||||||
|
<description>Техническая экспертиза документов </description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="19">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/tovarovedcheskaya/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Товароведческая экспертиза </name>
|
||||||
|
<description>Товароведческая экспертиза </description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="20">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/tovarovedcheskaya/ekspertiza-neprodovolstvennyh-tovarov/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Экспертиза непродовольственных товаров</name>
|
||||||
|
<description>Экспертиза непродовольственных товаров</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="21">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/tovarovedcheskaya/ekspertiza-prodovolstvennyh-tovarov/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Экспертиза продовольственных товаров</name>
|
||||||
|
<description>Экспертиза продовольственных товаров</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="22">
|
||||||
|
<url>https://ocenka-sochi.ru/ekspertiza/trasologicheskaya/</url>
|
||||||
|
<price>8000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>1</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Трасологическая экспертиза</name>
|
||||||
|
<description>Трасологическая экспертиза</description>
|
||||||
|
<param name="Произвольный параметр">Экспертиза</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="23">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/bankrotstvo-fizicheskih-lic/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Банкротство физических лиц</name>
|
||||||
|
<description>Банкротство физических лиц</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="24">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/pomosh-dolzhnikam/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Помощь должникам </name>
|
||||||
|
<description>Помощь должникам </description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="25">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/predstavitelstvo-v-sude/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Представительство в суде</name>
|
||||||
|
<description>Представительство в суде</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="26">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/semejnye-i-nasledstvennye-spory/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Семейные и наследственные споры </name>
|
||||||
|
<description>Семейные и наследственные споры </description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="27">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/soprovozhdenie-sdelok-sostavlenie-dogovorov-konsultaciya/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Сопровождение сделок и составление договоров</name>
|
||||||
|
<description>Сопровождение сделок и составление договоров</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="28">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/spory-po-dtp/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Споры по ДТП</name>
|
||||||
|
<description>Споры по ДТП</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="29">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/spory-s-zastroishikami/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Споры с застройщиком</name>
|
||||||
|
<description>Споры с застройщиком</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="30">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/strahovye-spory/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Страховые споры</name>
|
||||||
|
<description>Страховые споры</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="31">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/trudovye-spory/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Трудовые споры</name>
|
||||||
|
<description>Трудовые споры</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="32">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/vozvrat-strahovki-i-komissij-bankov/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Возврат страховки и комиссий банков</name>
|
||||||
|
<description>Возврат страховки и комиссий банков</description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="33">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/vzyskanie-dolgov-s-juridicheskih-lic/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Взыскание долгов с юридических лиц </name>
|
||||||
|
<description>Взыскание долгов с юридических лиц </description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="34">
|
||||||
|
<url>https://ocenka-sochi.ru/jurist/zemelnye-i-imushhestvennye-spory/</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>2</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Земельные и имущественные споры </name>
|
||||||
|
<description>Земельные и имущественные споры </description>
|
||||||
|
<param name="Произвольный параметр">Юриспруденция</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="35">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/aktivy-predpriyatiya</url>
|
||||||
|
<price>1000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка активов предприятия </name>
|
||||||
|
<description>Оценка активов предприятия </description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="36">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/arendnoy-platy/</url>
|
||||||
|
<price>8000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка арендной платы </name>
|
||||||
|
<description>Оценка арендной платы </description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="37">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/avtomobilya/</url>
|
||||||
|
<price>2000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка автомобиля</name>
|
||||||
|
<description>Оценка автомобиля</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="38">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/biznesa/</url>
|
||||||
|
<price>8000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка бизнеса</name>
|
||||||
|
<description>Оценка бизнеса</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="39">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/dlya-notariusa/</url>
|
||||||
|
<price>1500</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка для нотариуса</name>
|
||||||
|
<description>Оценка для нотариуса</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="40">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/dlya-vstupleniya-v-nasledstvo/</url>
|
||||||
|
<price>1500</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка для вступления в наследство</name>
|
||||||
|
<description>Оценка для вступления в наследство</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="41">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/dlya-zaloga/</url>
|
||||||
|
<price>4000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка для залога</name>
|
||||||
|
<description>Оценка для залога</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="42">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/imushchestva-posle-razvoda/</url>
|
||||||
|
<price>2000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка имущества после развода</name>
|
||||||
|
<description>Оценка имущества после развода</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="43">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/intellektualnoy-sobstvennosti/</url>
|
||||||
|
<price>16500</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка интеллектуальной собственности</name>
|
||||||
|
<description>Оценка интеллектуальной собственности</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="44">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/nedvizhimosti/</url>
|
||||||
|
<price>2000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка недвижимости</name>
|
||||||
|
<description>Оценка недвижимости</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="45">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/nedvizhimosti/dlya-ipoteki-sberbanka/</url>
|
||||||
|
<price>3500</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка для ипотеки сбербанка</name>
|
||||||
|
<description>Оценка для ипотеки сбербанка</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="46">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/nedvizhimosti/kvartiry/</url>
|
||||||
|
<price>3800</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка квартиры</name>
|
||||||
|
<description>Оценка квартиры</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="47">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/nedvizhimosti/sklada/</url>
|
||||||
|
<price>6000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка склада</name>
|
||||||
|
<description>Оценка склада</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="48">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/nedvizhimosti/zemli/</url>
|
||||||
|
<price>5000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка земли</name>
|
||||||
|
<description>Оценка земли</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="49">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/nedvizhimosti/zhilogo-doma/</url>
|
||||||
|
<price>5000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка жилого дома</name>
|
||||||
|
<description>Оценка жилого дома</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="50">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/sudna/</url>
|
||||||
|
<price>2000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка судна</name>
|
||||||
|
<description>Оценка судна</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="51">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/transport/</url>
|
||||||
|
<price>2000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name>Оценка транспорта</name>
|
||||||
|
<description>Оценка транспорта</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="52">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/ushcherba-posle-pozhara/</url>
|
||||||
|
<price>5000</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name> Оценка ущерба после пожара </name>
|
||||||
|
<description> Оценка ущерба после пожара </description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
<offer id="53">
|
||||||
|
<url>https://ocenka-sochi.ru/ocenka/ushcherba-posle-zaliva/</url>
|
||||||
|
<price>2500</price>
|
||||||
|
<currencyId>RUR</currencyId>
|
||||||
|
<categoryId>3</categoryId>
|
||||||
|
<picture>https://ocenka-sochi.ru/wp-content/uploads/2019/06/%D0%94%D0%98-%D0%A2%D0%A0%D0%90%D0%A1%D0%9E-logo.png</picture>
|
||||||
|
<name> Оценка ущерба после залива</name>
|
||||||
|
<description> Оценка ущерба после залива</description>
|
||||||
|
<param name="Произвольный параметр">Оценка</param>
|
||||||
|
</offer>
|
||||||
|
</offers>
|
||||||
|
</shop>
|
||||||
|
</yml_catalog>
|
||||||
@@ -1,19 +1,32 @@
|
|||||||
|
import { headers } from 'next/headers';
|
||||||
import { Contacts } from '@/views';
|
import { Contacts } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
import { metaInfo } from '@shared/lib';
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Контакты',
|
title: 'Адрес и телефон офиса',
|
||||||
description:
|
description: `Услуги оценки имущества и проведение судебных экспертиз Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
companyName: 'Компания ДИТРАСО',
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
phone: '+7 (900) 241-34-34',
|
ogImageUrl: '/images/opengraph/main.png',
|
||||||
url: 'https://ocenka-sochi.ru',
|
|
||||||
ogImageTitle: 'Оценка и экспертиза',
|
|
||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = metaInfo(metainfo);
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Contacts />;
|
return <Contacts />;
|
||||||
|
|||||||
@@ -1,19 +1,32 @@
|
|||||||
import { Cookie } from '@/views';
|
import { Cookie } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
import { metaInfo } from '@shared/lib';
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Независимая оценка и судебная экспертиза',
|
title: 'Соглашение об использовании систем аналитики',
|
||||||
description:
|
description: `Услуги оценки имущества и проведение судебных экспертиз Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
companyName: 'Компания ДИТРАСО',
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
phone: '+7 (900) 241-34-34',
|
ogImageUrl: '/images/opengraph/main.png',
|
||||||
url: 'https://ocenka-sochi.ru',
|
|
||||||
ogImageTitle: 'Оценка и экспертиза',
|
|
||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = metaInfo(metainfo);
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Cookie />;
|
return <Cookie />;
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { AutoTech } from '@/views';
|
import { AutoTech } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Автотехническая экспертиза | Компания ДИТРАСО',
|
title: 'Автотехническая экспертиза',
|
||||||
description:
|
description: `Проведение автотехнической экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/auto.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <AutoTech />;
|
return <AutoTech />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Buhgalter } from '@/views';
|
import { Buhgalter } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Бухгалтерская экспертиза | Компания ДИТРАСО',
|
title: 'Бухгалтерская экспертиза',
|
||||||
description:
|
description: `Проведение бухгалтерской экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/buh.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Buhgalter />;
|
return <Buhgalter />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Document } from '@/views';
|
import { Document } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Экспертиза документов | Компания ДИТРАСО',
|
title: 'Экспертиза документов',
|
||||||
description:
|
description: `Экспертиза документов. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/buh.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Document />;
|
return <Document />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Finans } from '@/views';
|
import { Finans } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Финансово-экономическая экспертиза | Компания ДИТРАСО',
|
title: 'Финансово-экономическая экспертиза',
|
||||||
description:
|
description: `Проведение финансово-экономической экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/finance.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Finans />;
|
return <Finans />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Kadastr } from '@/views';
|
import { Kadastr } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Кадастровая экспертиза | Компания ДИТРАСО',
|
title: 'Кадастровая экспертиза',
|
||||||
description:
|
description: `Проведение кадастровой экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/kadastr.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Kadastr />;
|
return <Kadastr />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Computer } from '@/views';
|
import { Computer } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Компьютерно-техническая экспертиза | Компания ДИТРАСО',
|
title: 'Компьютерно-техническая экспертиза',
|
||||||
description:
|
description: `Проведение компьютерно-технической экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/computer.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Computer />;
|
return <Computer />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { ExpertiseCategory } from '@/views';
|
import { ExpertiseCategory } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Проведение экспертиз | Компания ДИТРАСО',
|
title: 'Проведение судебных экспертиз',
|
||||||
description:
|
description: `Услуги оценки имущества и проведение судебных экспертиз Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/main.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function ExpertizaPage() {
|
export default function ExpertizaPage() {
|
||||||
return <ExpertiseCategory />;
|
return <ExpertiseCategory />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Pocherk } from '@/views';
|
import { Pocherk } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Почерковедческая экспертиза | Компания ДИТРАСО',
|
title: 'Почерковедческая экспертиза',
|
||||||
description:
|
description: `Проведение почерковедческой экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/pocherk.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Pocherk />;
|
return <Pocherk />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Pozhar } from '@/views';
|
import { Pozhar } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Пожарно-техническая экспертиза | Компания ДИТРАСО',
|
title: 'Пожарно-техническая экспертиза',
|
||||||
description:
|
description: `Проведение пожарно-технической экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/pojar.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Pozhar />;
|
return <Pozhar />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Recenzii } from '@/views';
|
import { Recenzii } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Строительно-техническая экспертиза | Компания ДИТРАСО',
|
title: 'Рецензирование экспертизы',
|
||||||
description:
|
description: `Рецензирование экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/recenzia.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Recenzii />;
|
return <Recenzii />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Stroit } from '@/views';
|
import { Stroit } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Рецензирование экспертизы | Компания ДИТРАСО',
|
title: 'Строительно-техническая экспертиза',
|
||||||
description:
|
description: `Проведение строительно-технической экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/stroika.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Stroit />;
|
return <Stroit />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { TechCrim } from '@/views';
|
import { TechCrim } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Технико-криминалистическая экспертиза | Компания ДИТРАСО',
|
title: 'Технико-криминалистическая экспертиза',
|
||||||
description:
|
description: `Проведение технико-криминалистической экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/crime.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <TechCrim />;
|
return <TechCrim />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Tovar } from '@/views';
|
import { Tovar } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Товароведческая экспертиза | Компания ДИТРАСО',
|
title: 'Товароведческая экспертиза',
|
||||||
description:
|
description: `Проведение товароведческой экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/tovar.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Tovar />;
|
return <Tovar />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { Trasologia } from '@/views';
|
import { Trasologia } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Трасологическая экспертиза | Компания ДИТРАСО',
|
title: 'Трасологическая экспертиза',
|
||||||
description:
|
description: `Проведение трасологической экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/trasologia.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Trasologia />;
|
return <Trasologia />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,33 @@
|
|||||||
import { ZemStroy } from '@/views';
|
import { ZemStroy } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Земле-устроительная экспертиза | Компания ДИТРАСО',
|
title: 'Землеустроительная экспертиза',
|
||||||
description:
|
description: `Проведение землеустроительной экспертизы. Лицензированные эксперты. Экспертиза принимается судом. Тел.: ${phoneBeautify(CONTACTS.PHONE)}. Предварительный анализ - бесплатно!`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре. Тел. +7 (900) 241-34-34',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
|
ogImageUrl: '/images/opengraph/expertise/zemlya.png',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ZemStroy />;
|
return <ZemStroy />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,32 @@
|
|||||||
import { ExpertBorodin } from '@/views';
|
import { ExpertBorodin } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
import { metaInfo } from '@shared/lib';
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Эксперт - Бородин Виталий Петрович',
|
title: 'Эксперт - Бородин Виталий Петрович',
|
||||||
description:
|
description: `Оценщики и судебные эксперты в Сочи, ${CONTACTS.COMPANY_FULL}. Сертифицированы РОО. Консультация - бесплатно! Тел.: ${phoneBeautify(CONTACTS.PHONE)}.`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
companyName: 'Компания ДИТРАСО',
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
phone: '+7 (900) 241-34-34',
|
ogImageUrl: '/images/opengraph/main.png',
|
||||||
url: 'https://ocenka-sochi.ru',
|
|
||||||
ogImageTitle: 'Оценка и экспертиза',
|
|
||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = metaInfo(metainfo);
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertBorodin />;
|
return <ExpertBorodin />;
|
||||||
|
|||||||
@@ -1,19 +1,32 @@
|
|||||||
import { ExpertGulmamedov } from '@/views';
|
import { ExpertGulmamedov } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
import { metaInfo } from '@shared/lib';
|
import { metaInfo, phoneBeautify } from '@shared/lib';
|
||||||
|
import { headers } from 'next/headers';
|
||||||
|
import { TMetainfo } from '@shared/types/metainfo';
|
||||||
|
import { CONTACTS } from '@shared/const/contacts';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo: TMetainfo = {
|
||||||
title: 'Эксперт - Гюльмамедов Явар Фирмамед-оглы',
|
title: 'Эксперт - Гюльмамедов Явар Фирмамед-оглы',
|
||||||
description:
|
description: `Оценщики и судебные эксперты в Сочи, ${CONTACTS.COMPANY_FULL}. Сертифицированы РОО. Консультация - бесплатно! Тел.: ${phoneBeautify(CONTACTS.PHONE)}.`,
|
||||||
'Услуги независимой оценки и судебной экспертизы в Сочи и Краснодаре.',
|
companyName: CONTACTS.COMPANY_FULL,
|
||||||
companyName: 'Компания ДИТРАСО',
|
phone: phoneBeautify(CONTACTS.PHONE),
|
||||||
phone: '+7 (900) 241-34-34',
|
ogImageUrl: '/images/opengraph/main.png',
|
||||||
url: 'https://ocenka-sochi.ru',
|
|
||||||
ogImageTitle: 'Оценка и экспертиза',
|
|
||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = metaInfo(metainfo);
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const h = await headers();
|
||||||
|
const referer = h.get('referer') ?? '';
|
||||||
|
const host = h.get('host') ?? '';
|
||||||
|
const proto = h.get('x-forwarded-proto') ?? '';
|
||||||
|
const path = referer ? new URL(referer).pathname : '';
|
||||||
|
|
||||||
|
const metainfoExtended = Object.assign({}, metainfo, {
|
||||||
|
host: `${proto}://${host}`,
|
||||||
|
path: path,
|
||||||
|
});
|
||||||
|
|
||||||
|
return metaInfo(metainfoExtended);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertGulmamedov />;
|
return <ExpertGulmamedov />;
|
||||||
|
|||||||