feat(mera): оферта, политика возврата и утверждённая политика ПДн + реквизиты #2874

Merged
lekss361 merged 1 commit from feat/mera-legal-docs into main 2026-08-13 17:13:16 +00:00
8 changed files with 1143 additions and 146 deletions

View file

@ -251,6 +251,31 @@ meraocenka.ru {
}
}
# Короткие адреса юридических документов. Именно они напечатаны ВНУТРИ
# самих документов (оферта ссылается на meraocenka.ru/refund, политика
# возврата — на meraocenka.ru/oferta) и уходят в заявку эквайеру, поэтому
# обязаны резолвиться сами по себе, а не только длинным
# /trade-in/mera-public/<doc>. Обратное направление тоже рабочее: длинный
# путь ловит handle ниже — навигация внутри сайта ходит по нему, потому что
# то же поддерево открывается и с gendsgn.ru/trade-in/mera-public, где
# короткого /oferta нет.
#
# `rewrite`, а не `redir`: адрес в строке браузера должен остаться коротким
# — модератор эквайера открывает ссылку из заявки и видит ровно тот URL,
# который в ней указан. Каноничность для поисковиков задана отдельно, через
# `alternates.canonical` на каждой из трёх страниц.
#
# Пути перечислены поимённо, а не шаблоном: allowlist-by-default этого
# site-блока — часть периметра (#2545), и превращать его в «любой корневой
# путь проксируется» ради трёх страниц нельзя.
@meraLegalDocs path /oferta /refund /privacy
handle @meraLegalDocs {
rewrite * /trade-in/mera-public{path}
reverse_proxy tradein-frontend:3000 {
header_up -X-Authenticated-User
}
}
# Подстраницы САМОГО лэндинга. Нужны с момента мержа #2615: футер ссылается
# на политику обработки ПДн через next/link (`PRIVACY_PATH`), а Next с
# basePath эмитит её как /trade-in/mera-public/privacy. Без этого handle

View file

@ -5,6 +5,8 @@
# 1. meraocenka.ru отдаёт 200 анонимно (публичный лэндинг).
# 1b. Подстраница лэндинга /trade-in/mera-public/privacy отдаёт 200 —
# политика ПДн, на которую ссылается футер.
# 1c. Короткие адреса /oferta, /refund, /privacy отдают 200 — эти URL
# напечатаны внутри самих юридических документов и уходят эквайеру.
# 2. meraocenka.ru/v2 и /trade-in/v2, /trade-in/api/* (B2B-пути) отдают 404 —
# allowlist-by-default, НЕ были случайно проброшены на B2B-дерево
# tradein-frontend. Проверяются обе формы — с basePath-префиксом и без.
@ -52,6 +54,15 @@ check "meraocenka.ru root — public 200" "$BASE_MERA/" 200
# обязательный по 152-ФЗ документ станет недоступен с публичной страницы.
check "meraocenka.ru privacy — public 200" "$BASE_MERA/trade-in/mera-public/privacy" 200
# 1c. Короткие адреса юридических документов. Это НЕ дубль проверки 1b: именно
# эти три URL напечатаны внутри самих документов и уходят в заявку
# эквайеру — если rewrite выпадет из Caddyfile, оферта будет ссылаться на
# 404, и заявку завернут. Проверяем все три поимённо, потому что и в
# Caddyfile они перечислены поимённо (allowlist, не шаблон).
check "meraocenka.ru/oferta — public 200" "$BASE_MERA/oferta" 200
check "meraocenka.ru/refund — public 200" "$BASE_MERA/refund" 200
check "meraocenka.ru/privacy — public 200" "$BASE_MERA/privacy" 200
# 2. B2B-путь на публичном домене — 404 (allowlist-by-default), не 200/401.
check "meraocenka.ru/v2 — B2B path must 404" "$BASE_MERA/v2" 404

View file

@ -1,15 +1,17 @@
/**
* SiteFooter подвал. Серверный компонент.
*
* Что здесь честно ОТСУТСТВУЕТ:
* - Реквизиты юрлица/ИП. В репозитории их нет (поиск по коду, бэкенду и
* разметке не дал ни наименования, ни ИНН/ОГРН), а выдумывать реквизиты
* оператора персональных данных на публичной странице нельзя. Блок
* рендерится, как только `LEGAL_ENTITY` в content.ts перестанет быть null;
* заполнить обязательно до открытия домена наружу 152-ФЗ требует
* идентифицируемого оператора.
* - E-mail поддержки: реального адреса в коде тоже нет. Единственный
* проверяемый канал телеграм-бот из `v2/SupportChatContext.tsx`.
* 2026-08-13: блоки реквизитов и почты, которых здесь раньше не было, теперь
* рендерятся данные появились (`LEGAL_ENTITY`, `SUPPORT_EMAIL` в content.ts),
* и это не косметика: наименование, ИНН, ОГРН и работающий контакт на странице
* с офертой прямое требование модерации эквайера и условие идентифицируемости
* оператора по 152-ФЗ. Значения импортируются, а не пишутся строками: тот же
* набор рендерят оферта и политика ПДн, и разъехаться они не должны.
*
* Ссылки на документы ведут по ВНУТРЕННИМ путям (`OFFER_PATH` и соседи), а не
* по коротким meraocenka.ru/oferta: короткие адреса существуют только на
* публичном хосте (rewrite в Caddy), а это же поддерево открывается и с
* gendsgn.ru/trade-in/mera-public там короткая ссылка ушла бы в 404.
*
* Внешняя ссылка проверяется `safeUrl` (правило frontend.md: ничего в href без
* валидации схемы) и открывается в новой вкладке с rel="noreferrer".
@ -21,8 +23,11 @@ import { safeUrl } from "@/lib/safeUrl";
import {
LEGAL_ENTITY,
OFFER_PATH,
PRIVACY_PATH,
REFUND_PATH,
REGION_NAME,
SUPPORT_EMAIL,
SUPPORT_TELEGRAM_LABEL,
SUPPORT_TELEGRAM_URL,
} from "../content";
@ -49,6 +54,12 @@ export function SiteFooter() {
<div>
<p className={styles.footerTitle}>Связаться</p>
<p className={styles.footerText}>
Почта:{" "}
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>
</p>
{telegramHref ? (
<p className={styles.footerText}>
Поддержка в Telegram:{" "}
@ -61,14 +72,22 @@ export function SiteFooter() {
{SUPPORT_TELEGRAM_LABEL}
</a>
</p>
) : (
<p className={styles.footerText}>Контакты появятся к запуску.</p>
)}
) : null}
</div>
<div>
<p className={styles.footerTitle}>Документы</p>
<ul className={styles.footerLinks} role="list">
<li>
<Link className={styles.link} href={OFFER_PATH}>
Публичная оферта
</Link>
</li>
<li>
<Link className={styles.link} href={REFUND_PATH}>
Политика возврата
</Link>
</li>
<li>
<Link className={styles.link} href={PRIVACY_PATH}>
Обработка персональных данных
@ -82,8 +101,8 @@ export function SiteFooter() {
<span>© {year} МЕРА</span>
{LEGAL_ENTITY && (
<span>
{LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn},{" "}
{LEGAL_ENTITY.address}
{LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn}, ОГРН{" "}
{LEGAL_ENTITY.ogrn}, {LEGAL_ENTITY.address}
</span>
)}
<span>

View file

@ -77,20 +77,119 @@ export const SUPPORT_TELEGRAM_URL = "https://t.me/MERAsupport_bot";
export const SUPPORT_TELEGRAM_LABEL = "@MERAsupport_bot";
/**
* Реквизиты оператора персональных данных (наименование юрлица/ИП, ИНН, адрес).
* `null` потому что в репозитории их НЕТ: поиск по коду, бэкенду и разметке
* не дал ни ООО/ИП, ни ИНН/ОГРН. Выдумывать реквизиты на публичной странице
* нельзя, поэтому блок реквизитов просто не рендерится, пока значение null.
* Заполнить перед публичным запуском (обязательное требование 152-ФЗ).
* Почта поддержки единственный письменный канал, названный в оферте, в
* политике возврата и в политике обработки ПДн. Один адрес на все три
* документа сознательно: разные адреса в оферте и в политике возврата первое,
* за что цепляется модерация эквайера, и первое, что теряется при передаче
* обращения внутри компании.
*
* Домен именно `meraocenka.ru`, а не корпоративный `pr-flat.ru`: адрес стоит в
* публичных документах рядом с доменом сервиса и уходит в кассовый чек, где
* расхождение доменов читается как несовпадение продавца и сайта.
*/
export const SUPPORT_EMAIL = "support@meraocenka.ru";
/**
* Реквизиты Исполнителя (он же оператор персональных данных). Заполнены
* 2026-08-13 по данным владельца; ОГРН/ИНН/адрес сверены с открытыми данными
* ЕГРЮЛ (rusprofile, РБК Компании) в исходном сообщении владельца ОГРН был с
* опечаткой (028028), верный 028281.
*
* ЭТО ЕДИНСТВЕННОЕ МЕСТО, где реквизиты живут на фронте: подвал, оферта,
* политика возврата и политика ПДн обязаны рендерить эти поля, а не повторять
* строки руками иначе при смене адреса или директора страницы разъедутся, и
* разъедутся именно те, которые никто не перечитывает.
*
* `LEGAL_ENTITY !== null` продуктовый гейт платного контура (G6 из
* `mera-b2c-paid-flow-decision.md`): нет реквизитов нет продажи. Обратное
* неверно: заполненные реквизиты сами по себе НЕ включают приём оплаты (за это
* отвечает отдельный флаг платёжного контура, которого ещё нет).
*/
export const LEGAL_ENTITY: {
/** Полное фирменное наименование — как в ЕГРЮЛ. */
name: string;
/** Краткое наименование для строк, где полное не помещается (подвал). */
shortName: string;
inn: string;
kpp: string;
ogrn: string;
/** Юридический адрес одной строкой. */
address: string;
} | null = null;
/** Фактический адрес (для переписки), если отличается от юридического. */
actualAddress: string;
/** ФИО директора в именительном падеже. */
director: string;
bank: {
name: string;
/** Расчётный счёт. */
account: string;
bik: string;
/** Корреспондентский счёт. */
corrAccount: string;
};
} | null = {
name: "Общество с ограниченной ответственностью «ПРОЕКТ ФЛЭТ»",
shortName: "ООО «ПРОЕКТ ФЛЭТ»",
inn: "6685046029",
kpp: "668501001",
ogrn: "1136685028281",
address: "620075, Свердловская область, г. Екатеринбург, ул. Малышева, стр. 51, офис 1",
actualAddress: "г. Екатеринбург, ул. Добролюбова, д. 3",
director: "Копылов Артём Николаевич",
bank: {
name: "АО «Т-Банк»",
account: "40702810910000104076",
bik: "044525974",
corrAccount: "30101810145250000974",
},
};
/** Внутренний маршрут страницы про обработку персональных данных. */
/**
* Внутренние маршруты юридических страниц (то, что понимает next/link с
* basePath=/trade-in). Публично они же доступны короткими адресами
* meraocenka.ru/privacy, /oferta, /refund короткие пути раздаёт Caddy
* (rewrite на это же поддерево), и ИМЕННО короткие напечатаны в самих
* документах и уйдут в заявку эквайеру.
*
* Навигация внутри сайта ходит по внутренним путям, а не по коротким: короткий
* `/oferta` существует только на хосте meraocenka.ru, а то же поддерево
* открывается и с gendsgn.ru/trade-in/mera-public там ссылка на `/oferta`
* ушла бы в 404. Канонический адрес для внешнего мира проставлен на каждой
* странице через `alternates.canonical` (см. PUBLIC_ORIGIN ниже).
*/
export const PRIVACY_PATH = "/mera-public/privacy";
export const OFFER_PATH = "/mera-public/oferta";
export const REFUND_PATH = "/mera-public/refund";
/** Канонический публичный origin сервиса — база для canonical-ссылок. */
export const PUBLIC_ORIGIN = "https://meraocenka.ru";
/** Короткие публичные адреса тех же страниц (то, что напечатано в документах). */
export const PUBLIC_PRIVACY_URL = `${PUBLIC_ORIGIN}/privacy`;
export const PUBLIC_OFFER_URL = `${PUBLIC_ORIGIN}/oferta`;
export const PUBLIC_REFUND_URL = `${PUBLIC_ORIGIN}/refund`;
/**
* Цена одного расчёта, . Названа в оферте (п. 4.1) и в политике возврата
* поэтому живёт здесь, а не литералом в двух документах сразу.
*
* Публикация цены в оферте НЕ означает, что приём оплаты включён:
* платёжного контура в коде ещё нет, а `PUBLIC_ESTIMATE_ENABLED` выше по-
* прежнему `false`. Оферта опубликована раньше кнопки намеренно её наличие
* с ценой и реквизитами является входным требованием модерации эквайера.
*/
export const SERVICE_PRICE_RUB = 150;
/** Редакция юридических документов — одна дата на оферту и политику возврата. */
export const LEGAL_DOCS_REVISION = "13 августа 2026 г.";
/**
* Реквизиты приказа, которым утверждена политика обработки ПДн. Политика по
* ст. 18.1 152-ФЗ обязана быть именно УТВЕРЖДЁННЫМ документом оператора
* страница без этой строки (как было до 2026-08-13) заявку эквайера не
* проходит и требованию закона не отвечает.
*/
export const PRIVACY_APPROVAL = "приказом директора № 1 от 13 августа 2026 г.";
/**
* Сколько месяцев на нашей стороне хранится ссылка/строка оплаченного отчёта

View file

@ -894,3 +894,52 @@
display: grid;
gap: 6px;
}
/* Подзаголовок юридического документа: «Редакция от » / «Утверждена приказом
». Сидит вплотную под h1 отсюда отрицательная компенсация верхнего
отступа заголовка не нужна, но собственный нижний отступ больше, чем у
обычного абзаца: строка отделяет шапку документа от его тела. */
.docMeta {
margin: 0 0 20px;
font-size: 14px;
line-height: 1.5;
color: var(--m-muted);
}
/* Блок реквизитов (dl) оферта, раздел 13, и политика ПДн, раздел 2.
Двухколоночный grid на широком экране, одна колонка на узком: реквизиты
читают глазами по вертикали (ИНН, ОГРН, счёт), и перенос длинного номера
на вторую строку хуже, чем узкий столбец подписей. */
.docRequisites {
margin: 0 0 10px;
display: grid;
gap: 8px;
}
.docRequisites > div {
display: grid;
grid-template-columns: minmax(0, 11em) minmax(0, 1fr);
gap: 4px 14px;
align-items: baseline;
}
@media (max-width: 520px) {
.docRequisites > div {
grid-template-columns: minmax(0, 1fr);
}
}
.docRequisites dt {
font-size: 13px;
line-height: 1.5;
color: var(--m-muted);
}
.docRequisites dd {
margin: 0;
font-size: 15px;
line-height: 1.6;
color: var(--m-body);
/* Номер счёта/ОГРН не должен растягивать страницу на узком экране. */
overflow-wrap: anywhere;
}

View file

@ -0,0 +1,480 @@
import type { Metadata } from "next";
import Link from "next/link";
import {
LEGAL_DOCS_REVISION,
LEGAL_ENTITY,
PRIVACY_PATH,
PUBLIC_OFFER_URL,
PUBLIC_REFUND_URL,
REFUND_PATH,
SERVICE_PRICE_RUB,
SUPPORT_EMAIL,
} from "../content";
import styles from "../landing.module.css";
/**
* Публичная оферта на оказание информационно-аналитических услуг «МЕРА».
*
* ОТКУДА ТЕКСТ. Редакция владельца от 13.08.2026 (docx), перенесённая сюда
* дословно; в исходнике на месте почты стоял плейсхолдер `[адрес электронной
* почты]` — подставлен `SUPPORT_EMAIL`, реквизиты в разделе 13 рендерятся из
* `LEGAL_ENTITY`. Ни одна формулировка не переписана «по смыслу»: это
* договорный документ, и расхождение с утверждённой владельцем редакцией не
* стилистическая правка, а другой договор.
*
* ПОЧЕМУ ЭТО СТРАНИЦА, А НЕ PDF. Оферта обязана быть доступна по постоянному
* адресу без скачивания это требование модерации эквайера и условие
* доказуемости акцепта (п. 2.2: акцепт = оплата, значит текст на момент оплаты
* должен быть публично зафиксирован). Короткий адрес meraocenka.ru/oferta
* раздаёт Caddy (rewrite на этот маршрут) именно он напечатан в самом
* документе, в политике возврата и уйдёт в заявку эквайеру.
*
* ЧЕГО ЗДЕСЬ НАМЕРЕННО НЕТ:
* - Ставки НДС числом. П. 4.1 говорит «включая НДС по ставке, применяемой
* Исполнителем в соответствии с действующим законодательством» у
* владельца УСН «доходы-расходы» с НДС 5% на 2026 год и другой режим с
* 2027-го; формулировка переживает переход без переиздания оферты, а
* конкретная ставка живёт там, где обязана в реквизитах кассового чека.
* - Обещания PDF-отчёта и личного кабинета: платёжного контура в коде ещё
* нет, состав Результата описан ровно так, как его описывает раздел 6.
*
* СВЯЗЬ С КОДОМ. Цена (`SERVICE_PRICE_RUB`) и реквизиты (`LEGAL_ENTITY`)
* импортируются из `content.ts`, а не пишутся строкой: те же значения рендерит
* подвал и политика возврата, и разъехаться они не должны.
*/
export const metadata: Metadata = {
title: "Публичная оферта — МЕРА",
description:
"Публичная оферта на оказание информационно-аналитических услуг сервиса «МЕРА».",
alternates: { canonical: PUBLIC_OFFER_URL },
};
export default function MeraPublicOfferPage() {
const entity = LEGAL_ENTITY;
return (
<main id="content" className={styles.main} tabIndex={-1}>
<div className={`${styles.container} ${styles.doc}`}>
<Link
className={`${styles.link} ${styles.docBack}`}
href="/mera-public"
>
На главную
</Link>
<h1 className={styles.h2}>Публичная оферта</h1>
<p className={styles.docMeta}>
на оказание информационно-аналитических услуг сервиса «МЕРА»
(meraocenka.ru). Редакция от {LEGAL_DOCS_REVISION}
</p>
{!entity ? (
<p>
Реквизиты Исполнителя не опубликованы до их публикации оферта не
действует и оплата на сайте не принимается.
</p>
) : (
<>
<h2>1. Термины и определения</h2>
<p>
1.1. «Исполнитель» {entity.name}, реквизиты которого указаны в
разделе 13 настоящей Оферты.
</p>
<p>
1.2. «Сайт» интернет-сайт, расположенный по адресу
meraocenka.ru, включая все его страницы и поддомены.
</p>
<p>
1.3. «Сервис» или «МЕРА» программа для ЭВМ, размещённая на Сайте
и предназначенная для автоматизированного формирования
индикативного расчёта ориентировочной рыночной стоимости объекта
недвижимости на основании характеристик, введённых пользователем.
</p>
<p>
1.4. «Заказчик» любое дееспособное физическое лицо либо
юридическое лицо / индивидуальный предприниматель, оплатившее
Услугу на условиях настоящей Оферты.
</p>
<p>
1.5. «Услуга» оказываемая Исполнителем услуга по формированию и
предоставлению Заказчику Результата по одному обращению к Сервису.
</p>
<p>
1.6. «Результат» или «Расчёт» сформированное Сервисом
индикативное значение ориентировочной рыночной стоимости объекта
недвижимости, отображаемое в интерфейсе Сайта и/или направляемое
на электронную почту Заказчика.
</p>
<p>
1.7. «Оферта» настоящий документ, размещённый в свободном
доступе в сети Интернет по адресу {PUBLIC_OFFER_URL}.
</p>
<h2>2. Общие положения</h2>
<p>
2.1. Настоящая Оферта является публичным предложением Исполнителя
заключить договор оказания услуг на изложенных ниже условиях в
соответствии со ст. 435 и п. 2 ст. 437 Гражданского кодекса РФ.
</p>
<p>
2.2. Оферта считается акцептованной Заказчиком, а договор
заключённым на условиях настоящей Оферты с момента совершения
Заказчиком действий, свидетельствующих об акцепте, а именно
оплаты стоимости Услуги в порядке, установленном разделом 4
настоящей Оферты (ст. 438 ГК РФ).
</p>
<p>
2.3. Заказчик, не согласный с условиями настоящей Оферты, не
вправе производить оплату Услуги и обязан покинуть Сайт.
</p>
<p>
2.4. К отношениям Сторон, не урегулированным настоящей Офертой,
применяется законодательство Российской Федерации, включая, если
Заказчиком является физическое лицо, действующее для личных,
семейных, бытовых нужд, не связанных с предпринимательской
деятельностью, Закон РФ от 07.02.1992 2300-1 «О защите прав
потребителей».
</p>
<h2>3. Предмет Оферты</h2>
<p>
3.1. Исполнитель обязуется оказать Заказчику Услугу сформировать
и предоставить Заказчику доступ к Результату, а Заказчик обязуется
оплатить Услугу в порядке и на условиях, установленных настоящей
Офертой.
</p>
<p>
3.2. Услуга оказывается дистанционно, посредством сети Интернет,
без необходимости личного присутствия Заказчика.
</p>
<p>
3.3. Характер и правовой статус Результата определены разделом 6
настоящей Оферты Заказчику надлежит ознакомиться с ним до
совершения оплаты.
</p>
<h2>4. Стоимость Услуги и порядок оплаты</h2>
<p>
4.1. Стоимость одной Услуги (одного Расчёта) составляет{" "}
{SERVICE_PRICE_RUB} (сто пятьдесят) рублей 00 копеек, включая НДС
по ставке, применяемой Исполнителем в соответствии с действующим
законодательством РФ.
</p>
<p>
4.2. Оплата производится Заказчиком в безналичном порядке через
платёжную форму на Сайте с использованием банковских карт
платёжных систем и/или иных способов оплаты, поддерживаемых
платёжным сервисом, подключённым Исполнителем.
</p>
<p>
4.3. Обязанность Заказчика по оплате Услуги считается исполненной
с момента зачисления денежных средств на расчётный счёт
Исполнителя либо на счёт платёжного сервиса, обслуживающего
расчёты Исполнителя.
</p>
<p>
4.4. Исполнитель направляет Заказчику кассовый чек в соответствии
с Федеральным законом от 22.05.2003 54-ФЗ на номер телефона или
адрес электронной почты, указанные Заказчиком при оплате. Заказчик
обязан указать корректные и действующие контактные данные для
получения чека.
</p>
<p>
4.5. Стоимость Услуги может быть изменена Исполнителем в
одностороннем порядке путём публикации новой редакции Оферты на
Сайте. Новая стоимость применяется к Услугам, оплаченным после
публикации новой редакции, и не имеет обратной силы.
</p>
<h2>5. Момент оказания Услуги</h2>
<p>
5.1. Услуга считается оказанной Исполнителем в полном объёме и
надлежащим образом с момента наступления любого из следующих
событий, в зависимости от того, какое из них наступит раньше:
</p>
<ul>
<li>
отображения Результата в интерфейсе Сайта Заказчику после ввода
характеристик объекта и подтверждения оплаты;
</li>
<li>
направления Результата на адрес электронной почты, указанный
Заказчиком при оплате.
</li>
</ul>
<p>
5.2. Ввиду массового и автоматизированного характера Услуги
отдельный акт оказания услуг Сторонами не составляется и не
подписывается. Факт формирования и предоставления Результата
фиксируется автоматически в системе Сайта (запись в системном
журнале с указанием даты, времени и идентификатора операции) и
является достаточным и надлежащим доказательством оказания Услуги
в полном объёме.
</p>
<p>
5.3. Услуга оплачивается Заказчиком за факт формирования и
предоставления Результата, а не за конкретное числовое значение,
определённое Сервисом, и не за соответствие такого значения
ожиданиям Заказчика или дальнейшим действиям Заказчика на его
основании. Характер и ограничения Результата установлены разделом
6 настоящей Оферты.
</p>
<p>
5.4. Заказчик вправе направить Исполнителю мотивированное
обращение относительно факта оказания Услуги (то есть относительно
того, был ли Результат фактически сформирован и предоставлен) в
течение 24 (двадцати четырёх) часов с момента, определённого п.
5.1 настоящей Оферты. По истечении указанного срока Услуга
считается оказанной Исполнителем в полном объёме и принятой
Заказчиком без замечаний к факту и полноте её оказания.
</p>
<p>
5.5. Если по техническим причинам на стороне Сайта или Сервиса
Результат не был сформирован либо не был предоставлен Заказчику в
течение 15 (пятнадцати) минут с момента подтверждения оплаты по п.
4.3, Услуга считается неоказанной. В этом случае применяется
порядок возврата денежных средств, установленный п. 8.3 настоящей
Оферты.
</p>
<h2>
6. Характер и статус Результата ограничение ответственности
</h2>
<p>
6.1. Результат, формируемый Сервисом и предоставляемый Заказчику,
является результатом автоматизированной обработки введённых
Заказчиком данных и носит исключительно индикативный
(ориентировочный, вероятностный) информационно-аналитический
характер.
</p>
<p>
6.2. Результат не является отчётом об оценке по смыслу
Федерального закона от 29.07.1998 135-ФЗ «Об оценочной
деятельности в Российской Федерации», не составляется субъектом
оценочной деятельности и не обладает юридической силой,
установленной указанным законом для отчёта об оценке.
</p>
<p>
6.3. Результат не предназначен для использования и не может быть
использован в качестве обязательного к применению значения
рыночной стоимости объекта недвижимости в случаях, когда
законодательством РФ предусмотрено обязательное проведение оценки,
в том числе для целей: ипотечного кредитования; судебных
разбирательств; нотариальных действий; сделок с участием
государственного или муниципального имущества; иных случаев, прямо
предусмотренных законодательством РФ.
</p>
<p>
6.4. Точность Результата зависит от полноты и достоверности
характеристик объекта, введённых Заказчиком. Исполнитель не
проверяет и не может проверить достоверность введённых Заказчиком
данных и не несёт ответственности за отклонение Результата от
фактической рыночной стоимости объекта, вызванное
недостоверностью, неполнотой или неточностью введённых данных.
</p>
<p>
6.5. Исполнитель не несёт ответственности за любые решения,
действия или бездействие Заказчика либо третьих лиц, основанные на
Результате, включая решения о покупке, продаже, зачёте объекта
недвижимости по программам трейд-ин или иным образом.
</p>
<h2>7. Права и обязанности Сторон</h2>
<p>
7.1. Исполнитель обязуется обеспечить функционирование Сервиса и
предоставить Заказчику Результат при условии поступления оплаты и
корректного заполнения Заказчиком формы ввода характеристик
объекта.
</p>
<p>
7.2. Заказчик обязуется предоставлять достоверные характеристики
объекта для формирования Результата и указывать корректные
контактные данные, необходимые для направления кассового чека.
</p>
<p>
7.3. Исполнитель вправе приостановить оказание Услуги на время
проведения технических, профилактических и иных работ, необходимых
для поддержания работоспособности Сайта и Сервиса.
</p>
<p>
7.4. Исполнитель вправе в одностороннем порядке изменять условия
настоящей Оферты с публикацией новой редакции на Сайте не менее
чем за 3 (три) календарных дня до её вступления в силу, за
исключением случаев, требующих немедленного изменения в силу
закона.
</p>
<h2>8. Порядок возврата денежных средств</h2>
<p>
8.0. Условия настоящего раздела дублируются и подробно раскрыты в
отдельном документе {" "}
<Link className={styles.link} href={REFUND_PATH}>
Политике возврата денежных средств
</Link>
, размещённой по адресу {PUBLIC_REFUND_URL}. В случае расхождений
между настоящим разделом и указанным документом применяется
настоящая Оферта.
</p>
<p>
8.1. Общее правило. Услуга, оказанная в соответствии с разделом 5
настоящей Оферты, считается исполненной Исполнителем в полном
объёме. После наступления момента, установленного п. 5.1, оплата
возврату не подлежит, за исключением случаев, прямо
предусмотренных настоящим разделом и законодательством РФ.
</p>
<p>
8.2. Отказ от Услуги до её оказания. В соответствии со ст. 782
Гражданского кодекса РФ Заказчик вправе отказаться от Услуги в
любой момент до наступления момента её оказания, установленного п.
5.1 настоящей Оферты, уведомив Исполнителя по контактным данным,
указанным в разделе 13. В этом случае уплаченные денежные средства
возвращаются Заказчику в полном объёме, поскольку формирование
Результата не влечёт для Исполнителя расходов, подлежащих
отдельному возмещению за счёт Заказчика.
</p>
<p>
8.3. Технический сбой (Услуга не оказана). Если Результат не был
предоставлен Заказчику по причинам, указанным в п. 5.5 настоящей
Оферты, денежные средства возвращаются Заказчику в полном объёме
автоматически, без необходимости подачи Заказчиком отдельного
заявления или обращения, в срок не позднее 3 (трёх) рабочих дней с
момента фиксации Сервисом факта неоказания Услуги.
</p>
<p>
8.4. Иные основания возврата. Денежные средства также подлежат
возврату в полном объёме в случаях: повторного списания денежных
средств вследствие технической ошибки платёжной формы Сайта;
списания денежных средств по операции, не санкционированной
Заказчиком, при подтверждении данного факта банком-эмитентом
карты Заказчика.
</p>
<p>
8.5. Для возврата денежных средств по основаниям п. 8.4 Заказчик
направляет обращение на {SUPPORT_EMAIL}, указав дату и
приблизительное время оплаты, сумму и последние 4 цифры номера
карты, с которой производилась оплата. Исполнитель рассматривает
обращение и принимает решение в срок не позднее 10 (десяти)
рабочих дней с момента его получения.
</p>
<p>
8.6. Возврат денежных средств во всех случаях производится тем же
способом, которым была произведена оплата, если иной способ не
согласован Сторонами дополнительно.
</p>
<p>
8.7. Настоящий раздел не ограничивает права Заказчика,
являющегося потребителем по смыслу Закона РФ от 07.02.1992
2300-1 «О защите прав потребителей»: в части, в которой условия
настоящего раздела противоречили бы правам, гарантированным
Заказчику указанным Законом, применяются положения Закона.
</p>
<h2>9. Персональные данные</h2>
<p>
9.1. Обработка персональных данных Заказчика осуществляется
Исполнителем в соответствии с{" "}
<Link className={styles.link} href={PRIVACY_PATH}>
Политикой обработки персональных данных
</Link>
, размещённой на Сайте и являющейся неотъемлемой частью настоящей
Оферты.
</p>
<h2>10. Ответственность Сторон</h2>
<p>
10.1. За неисполнение или ненадлежащее исполнение обязательств по
настоящей Оферте Стороны несут ответственность в соответствии с
законодательством РФ.
</p>
<p>
10.2. Совокупная ответственность Исполнителя перед Заказчиком по
настоящей Оферте ограничена суммой, уплаченной Заказчиком за
соответствующую Услугу, за исключением случаев, когда
законодательством РФ установлено иное (в частности, в отношении
прав потребителей).
</p>
<p>
10.3. Исполнитель не несёт ответственности за невозможность
оказания Услуги вследствие обстоятельств непреодолимой силы, а
также сбоев в работе сетей связи, интернет-провайдеров, платёжных
систем и иных третьих лиц, не находящихся под контролем
Исполнителя.
</p>
<h2>11. Срок действия Оферты</h2>
<p>
11.1. Оферта действует бессрочно с момента размещения на Сайте до
момента её отзыва Исполнителем либо замены новой редакцией.
</p>
<h2>12. Разрешение споров</h2>
<p>
12.1. Стороны стремятся разрешить любые споры и разногласия путём
переговоров с обязательным направлением письменной претензии. Срок
ответа на претензию 10 (десять) рабочих дней с момента
получения.
</p>
<p>
12.2. При недостижении согласия спор передаётся на рассмотрение
суда по месту нахождения Исполнителя, за исключением случаев,
когда императивными нормами законодательства о защите прав
потребителей установлена альтернативная подсудность по выбору
потребителя.
</p>
<h2>13. Реквизиты Исполнителя</h2>
<dl className={styles.docRequisites}>
<div>
<dt>Наименование</dt>
<dd>{entity.name}</dd>
</div>
<div>
<dt>Юридический адрес</dt>
<dd>{entity.address}</dd>
</div>
<div>
<dt>Фактический адрес</dt>
<dd>{entity.actualAddress}</dd>
</div>
<div>
<dt>ИНН / КПП</dt>
<dd>
{entity.inn} / {entity.kpp}
</dd>
</div>
<div>
<dt>ОГРН</dt>
<dd>{entity.ogrn}</dd>
</div>
<div>
<dt>Расчётный счёт</dt>
<dd>{entity.bank.account}</dd>
</div>
<div>
<dt>Банк</dt>
<dd>
{entity.bank.name}, БИК {entity.bank.bik}, к/с{" "}
{entity.bank.corrAccount}
</dd>
</div>
<div>
<dt>E-mail</dt>
<dd>
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>
</dd>
</div>
<div>
<dt>Директор</dt>
<dd>{entity.director}</dd>
</div>
</dl>
</>
)}
</div>
</main>
);
}

View file

@ -4,7 +4,10 @@ import Link from "next/link";
import {
LEGAL_ENTITY,
PAID_REPORT_RETENTION_MONTHS,
PRIVACY_APPROVAL,
PUBLIC_ESTIMATE_ENABLED,
PUBLIC_PRIVACY_URL,
SUPPORT_EMAIL,
SUPPORT_TELEGRAM_LABEL,
SUPPORT_TELEGRAM_URL,
} from "../content";
@ -12,64 +15,47 @@ import styles from "../landing.module.css";
import { safeUrl } from "@/lib/safeUrl";
/**
* Страница «Обработка персональных данных» для публичного лэндинга.
* Политика обработки персональных данных по ст. 18.1 152-ФЗ.
*
* ЧТО ЭТО ЗА ДОКУМЕНТ. Это НЕ утверждённая политика по ст. 18.1 152-ФЗ:
* полноценная политика обязана называть оператора (наименование, ИНН, адрес), а
* этих данных в проекте нет см. `LEGAL_ENTITY` в content.ts. Выдумывать
* реквизиты на публичной странице нельзя, поэтому здесь честное описание
* того, что сервис делает с данными СЕГОДНЯ по факту кода:
* ЧТО ИЗМЕНИЛОСЬ 2026-08-13. До этой редакции страница честно объявляла себя
* НЕ утверждённой политикой: у проекта не было ни реквизитов оператора, ни
* приказа об утверждении, и выдумывать их было нельзя. Теперь есть и то, и
* другое (`LEGAL_ENTITY`, `PRIVACY_APPROVAL` в content.ts), поэтому здесь
* утверждённая владельцем редакция (docx от 13.08.2026), перенесённая
* дословно. Прежняя оговорка «политика не утверждена» снята не потому, что
* стала неудобной, а потому, что перестала быть правдой.
*
* - расчёт: адрес + параметры квартиры (`TradeInEstimateInput`);
* - заявка: телефон + явное согласие галочкой (`v2/LeadForm.tsx`
* `POST /api/v1/trade-in/lead`), факт согласия сохраняется отдельно;
* - сама эта страница не делает ни одного запроса к API и не подключает
* счётчики (проверено: RouteGuard отдаёт публичный путь до useMe,
* `app/providers.tsx` поднимает только пустой QueryClient, шрифты
* self-hosted через next/font).
* ЧТО ОСТАЛОСЬ ОТ ПРЕЖНЕЙ СТРАНИЦЫ правило честности:
* - Раздел про страницу ввода адреса УСЛОВЕН по `PUBLIC_ESTIMATE_ENABLED`.
* Пока публичный расчёт выключен, адрес физически не покидает браузер, и
* писать обратное нельзя; текст меняется вместе с флагом, а не потом.
* - Срок хранения оплаченного отчёта рендерится из
* `PAID_REPORT_RETENTION_MONTHS`, а НЕ числом, вписанным в текст, это
* гейтится тестом `test_paid_retention_text_consistency.py` (бэкендовая
* настройка `trade_in_paid_retention_days` и публичное обещание обязаны
* двигаться вместе).
* - Механизм удаления описан как существующий, потому что он существует:
* `app/services/data_erasure.py` (по обращению) и
* `app/tasks/purge_expired_trade_in_data.py` (по истечении срока).
* Известное ограничение копия сообщения в Telegram-группе поддержки этим
* механизмом не стирается (см. докстринг `data_erasure.py`); на публичной
* странице это не разворачивается, но при обращении об удалении оператор
* обязан помнить.
*
* ЧЕГО ЗДЕСЬ СОЗНАТЕЛЬНО НЕ НАПИСАНО:
* - «адрес и параметры квартиры это не данные о вас». Правовая
* квалификация не наше дело: заявка привязывается к конкретному расчёту
* (`TradeInLeadInput.estimate_id`), то есть телефон связывается с ранее
* сохранённым адресом. Финальную формулировку даёт юрист.
* - «мы обещаем удалить всё вообще» без оговорок. После #2547 механизм
* удаления в бэкенде ЕСТЬ: `app/services/data_erasure.py` (ручное
* удаление по обращению по estimate_id/телефону/Telegram chat id) и
* `app/tasks/purge_expired_trade_in_data.py` (автоматическое удаление по
* истечении срока хранения). Прежняя формулировка «механизма нет» стала
* неправдой и здесь больше не пишется. Оговорка, которая остаётся честной:
* копия сообщения в Telegram-группе поддержки этим механизмом не
* стирается (см. докстринг `data_erasure.py`) сюда её не выносим
* (излишняя техническая деталь для публичной страницы), но это ограничение
* реальное и известное.
* - Срок хранения оплаченного отчёта (PR #2754, `retain_until` /
* `trade_in_paid_retention_days` в backend `config.py`): число месяцев
* ниже константа `PAID_REPORT_RETENTION_MONTHS` из `../content.ts`,
* НЕ литерал здесь (см. докстринг константы она единственный источник
* этого числа на фронте; `test_paid_retention_text_consistency.py`
* проверяет, что эта страница действительно её импортирует). Платёжного
* кода в этом PR нет срок описан на будущее, вместе с честной правкой
* ниже про то, что удаление сегодня описывает установленный ПОРЯДОК, а
* не наблюдаемый на проде автоматический прогон (задача засеяна
* выключенной).
*
* Раздел «Что делает эта страница» УСЛОВЕН по `PUBLIC_ESTIMATE_ENABLED`: пока
* расчёт выключен, адрес действительно не покидает браузер; после включения это
* перестанет быть правдой, и текст должен смениться вместе с флагом, а не
* когда-нибудь потом.
*
* Перед открытием домена наружу текст обязан быть заменён на утверждённую
* политику с реквизитами оператора.
* Короткий публичный адрес meraocenka.ru/privacy (rewrite в Caddy); именно он
* напечатан в самой политике и в оферте.
*/
export const metadata: Metadata = {
title: "Обработка персональных данных — МЕРА",
robots: { index: false, follow: false },
title: "Политика обработки персональных данных — МЕРА",
description:
"Утверждённая политика обработки персональных данных сервиса «МЕРА» по ст. 18.1 152-ФЗ.",
alternates: { canonical: PUBLIC_PRIVACY_URL },
};
export default function MeraPublicPrivacyPage() {
const telegramHref = safeUrl(SUPPORT_TELEGRAM_URL);
const entity = LEGAL_ENTITY;
return (
<main id="content" className={styles.main} tabIndex={-1}>
@ -81,103 +67,217 @@ export default function MeraPublicPrivacyPage() {
На главную
</Link>
<h1 className={styles.h2}>Обработка персональных данных</h1>
<p>
Здесь по-человечески описано, какие данные нужны сервису «Мера», зачем
и что с ними происходит.
<h1 className={styles.h2}>
Политика обработки персональных данных
</h1>
<p className={styles.docMeta}>
сервис «МЕРА» (meraocenka.ru). Утверждена {PRIVACY_APPROVAL}
</p>
<h2>Что нужно для оценки</h2>
<h2>1. Общие положения</h2>
<p>
Адрес дома и параметры квартиры: площадь, этаж, число комнат, тип
дома, состояние. Имя, паспорт и документы на квартиру мы не
спрашиваем, и сами по себе эти сведения описывают объект недвижимости.
1.1. Настоящая Политика определяет порядок обработки персональных
данных и меры по обеспечению их безопасности в{" "}
{entity ? entity.shortName : "организации-операторе"} (далее
«Оператор») в целях защиты прав и свобод пользователей сайта
meraocenka.ru (далее «Сайт», «Сервис»).
</p>
<p>
При этом мы не делаем вид, что связи с вами нет совсем: если вы потом
оставите заявку, ваш телефон будет привязан именно к этому расчёту
то есть к конкретному адресу. Поэтому телефон и обращаемся с ним как с
персональными данными, с отдельным согласием.
1.2. Политика разработана и утверждена в соответствии со ст. 18.1
Федерального закона от 27.07.2006 152-ФЗ «О персональных данных» и
является общедоступным документом, размещаемым на Сайте без
ограничения доступа по адресу {PUBLIC_PRIVACY_URL}.
</p>
<h2>Когда появляется телефон</h2>
<p>
Только если вы сами решите оставить заявку и поставите отдельную
галочку согласия на обработку персональных данных в соответствии с
Федеральным законом 152-ФЗ. Без этой галочки заявка не отправляется.
</p>
<p>
Телефон используется, чтобы связаться с вами по вашей же заявке.
Вместе с ним сохраняется сам факт согласия когда именно и на каком
тексте оно было дано.
</p>
<h2>Что делает эта страница</h2>
{PUBLIC_ESTIMATE_ENABLED ? (
<p>
Введённый адрес и параметры квартиры уходят на наш сервер, чтобы по
ним посчитать оценку, и сохраняются вместе с результатом расчёта
иначе отчёт нельзя было бы открыть повторно. Счётчиков и рекламных
пикселей на странице нет, шрифты отдаются с нашего домена, а не со
сторонних сервисов.
</p>
<h2>2. Оператор персональных данных</h2>
{entity ? (
<dl className={styles.docRequisites}>
<div>
<dt>Наименование</dt>
<dd>{entity.name}</dd>
</div>
<div>
<dt>ИНН / КПП / ОГРН</dt>
<dd>
{entity.inn} / {entity.kpp} / {entity.ogrn}
</dd>
</div>
<div>
<dt>Юридический адрес</dt>
<dd>{entity.address}</dd>
</div>
<div>
<dt>Директор</dt>
<dd>{entity.director}</dd>
</div>
</dl>
) : (
<p>
Ничего не отправляет. Пока публичная оценка не открыта, форма адреса
работает только в браузере: введённый адрес никуда не уходит и нигде
не сохраняется. Счётчиков и рекламных пикселей на странице нет,
шрифты отдаются с нашего домена, а не со сторонних сервисов.
Реквизиты оператора не опубликованы до их публикации политика не
считается утверждённой.
</p>
)}
<h2>Как отозвать согласие</h2>
<h2>3. Какие данные мы обрабатываем и зачем</h2>
<p>
Напишите нам в поддержку обращение об отзыве согласия мы принимаем и
разбираем вручную, после чего перестаём использовать ваш телефон для
связи по заявке.{" "}
{telegramHref ? (
<>
Канал связи:{" "}
<a
className={styles.link}
href={telegramHref}
target="_blank"
rel="noreferrer"
>
{SUPPORT_TELEGRAM_LABEL}
</a>
.
</>
) : null}
3.1. Для получения расчёта пользователь вводит адрес объекта
недвижимости и его параметры: площадь, этаж, число комнат, тип дома,
состояние ремонта. Имя, паспортные данные и правоустанавливающие
документы на объект Оператором не запрашиваются.
</p>
<p>
Самостоятельной кнопки «удалить мои данные» в интерфейсе пока нет, но
механизм удаления в сервисе есть: обращение в поддержку об удалении мы
разбираем вручную и физически стираем телефон, адрес и расчёт из базы,
а не просто помечаем запись. Помимо запроса, для каждого типа данных
установлен срок хранения, по истечении которого они подлежат
удалению. Если результат расчёта оплачен, ссылка на отчёт и
связанные с ним данные хранятся на нашей стороне{" "}
{PAID_REPORT_RETENTION_MONTHS} месяцев с даты оплаты, а затем
подлежат удалению так же, как и остальные данные на файл, который
вы скачали себе, это не влияет: мы его не отзываем, не изменяем и не
имеем к нему доступа.
3.2. Адрес и параметры объекта сами по себе описывают объект
недвижимости, а не конкретного человека, и в отдельности от иных
данных не относятся к определённому физическому лицу в связи с чем
не рассматриваются Оператором как персональные данные.
</p>
<p>
3.3. Номер телефона обрабатывается Оператором только в том случае,
если пользователь самостоятельно принимает решение оставить заявку и
проставляет отдельную отметку о согласии на обработку персональных
данных в соответствии с Федеральным законом 152-ФЗ. Без такой
отметки заявка не отправляется. Отметка о согласии по умолчанию не
проставлена пользователь ставит её сам, осознанным действием.
</p>
<p>
3.4. При оставлении заявки указанный пользователем номер телефона
сохраняется в привязке к конкретному адресу объекта, введённому этим
же пользователем. Именно с момента такой привязки совокупность данных
(телефон + адрес + факт обращения) рассматривается Оператором как
персональные данные пользователя, и на неё распространяются все
положения настоящей Политики в полном объёме.
</p>
<p>
3.5. Дополнительно, при оплате Услуги на Сайте Оператор обрабатывает
номер телефона и/или адрес электронной почты, указанные пользователем
при оплате для направления кассового чека в соответствии с
Федеральным законом от 22.05.2003 54-ФЗ, а также технические
данные (IP-адрес, данные браузера и устройства), передаваемые в связи
с проведением платежа через платёжный сервис, подключённый Оператором.
</p>
<h2>Оператор</h2>
{LEGAL_ENTITY ? (
<h2>4. Правовые основания обработки</h2>
<p>
4.1. Обработка номера телефона по заявке осуществляется на основании
отдельного согласия пользователя, выраженного проставлением отметки на
Сайте (п. 3.3), в соответствии со ст. 9 Федерального закона 152-ФЗ.
</p>
<p>
4.2. Обработка данных, указанных при оплате Услуги (п. 3.5),
осуществляется в целях исполнения договора, стороной которого является
пользователь (п. 5 ч. 1 ст. 6 Федерального закона 152-ФЗ), а также
во исполнение обязанностей Оператора, установленных Федеральным
законом 54-ФЗ.
</p>
<h2>5. Как обрабатываются данные при формировании расчёта</h2>
<p>
5.1. Введённый пользователем адрес объекта и его параметры (площадь,
этаж, число комнат, тип дома, состояние ремонта) передаются на сервер
Оператора и используются для подбора сопоставимых объектов
недвижимости по сведениям о зарегистрированных сделках (в том числе
из открытых источников Росреестра), по объявлениям на партнёрских
площадках и, при недостатке иных данных, по оценочным моделям таких
площадок, используемым Оператором в качестве сверочных данных.
</p>
<p>
5.2. Указанные в п. 5.1 данные об объекте сами по себе, в отрыве от
иных данных, не относятся к определённому физическому лицу и не
рассматриваются Оператором как персональные данные в соответствии с
п. 3.2 настоящей Политики.
</p>
<p>
5.3. На странице ввода адреса, доступной до момента отправки заявки
или оплаты, не используются счётчики и рекламные пиксели сторонних
сервисов; статические ресурсы страницы (шрифты и т. п.) подключаются с
домена Оператора.
</p>
{PUBLIC_ESTIMATE_ENABLED ? null : (
<p>
{LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn}, {LEGAL_ENTITY.address}.
</p>
) : (
<p>
Реквизиты оператора персональных данных и утверждённая политика
обработки будут опубликованы здесь до открытия публичного доступа к
сервису. До этого момента страница доступна не публично, а по прямой
ссылке.
5.4. На сегодняшний день публичный расчёт по адресу на Сайте ещё не
открыт: форма адреса на главной странице работает только в браузере
пользователя введённый адрес не передаётся на сервер Оператора и
нигде не сохраняется. Пункты 5.15.2 применяются с момента открытия
публичного расчёта.
</p>
)}
<h2>6. Сроки хранения и удаление данных</h2>
<p>
6.1. Если результат расчёта был оплачен пользователем, ссылка на отчёт
и связанные с ним данные хранятся Оператором в течение{" "}
{PAID_REPORT_RETENTION_MONTHS} месяцев с даты оплаты, после чего
подлежат удалению. На файл отчёта, ранее скачанный пользователем на
своё устройство, истечение этого срока не влияет Оператор не
отзывает и не изменяет такой файл и не имеет к нему доступа после его
передачи пользователю.
</p>
<p>
6.2. Для иных категорий персональных данных применяются сроки
хранения, необходимые для достижения целей обработки, указанных в
разделе 3, а также сроки, установленные законодательством РФ (в том
числе налоговым законодательством и законодательством о бухгалтерском
учёте).
</p>
<p>
6.3. По истечении сроков хранения персональные данные подлежат
удалению или обезличиванию.
</p>
<h2>7. Отзыв согласия и удаление данных по обращению</h2>
<p>
7.1. Пользователь вправе в любой момент отозвать согласие на обработку
персональных данных, направив обращение в поддержку Оператора по
контактам, указанным в разделе 9 настоящей Политики. С момента
получения обращения Оператор прекращает использование номера телефона
пользователя для связи по соответствующей заявке.
</p>
<p>
7.2. Обращения об отзыве согласия и об удалении данных рассматриваются
Оператором вручную. При удалении данных по обращению пользователя
Оператор физически удаляет телефон, адрес объекта и результат расчёта
из своих систем, а не ограничивается пометкой записи как неактивной.
</p>
<p>
7.3. Помимо права на обращение, пользователь вправе получать
информацию об обработке своих персональных данных, требовать уточнения,
блокирования или уничтожения персональных данных, если они являются
неполными, устаревшими, неточными, незаконно полученными или не
являются необходимыми для заявленной цели обработки в соответствии
со ст. 14 Федерального закона 152-ФЗ.
</p>
<h2>8. Меры по защите персональных данных</h2>
<p>
8.1. Оператор применяет правовые, организационные и технические меры
для защиты персональных данных от неправомерного или случайного
доступа, уничтожения, изменения, блокирования, копирования,
распространения и иных неправомерных действий третьих лиц, в
соответствии со ст. 19 Федерального закона 152-ФЗ.
</p>
<h2>
9. Контакты Оператора по вопросам обработки персональных данных
</h2>
<p>
E-mail:{" "}
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>
</p>
{telegramHref ? (
<p>
Telegram:{" "}
<a
className={styles.link}
href={telegramHref}
target="_blank"
rel="noreferrer"
>
{SUPPORT_TELEGRAM_LABEL}
</a>
</p>
) : null}
</div>
</main>
);

View file

@ -0,0 +1,214 @@
import type { Metadata } from "next";
import Link from "next/link";
import {
LEGAL_DOCS_REVISION,
LEGAL_ENTITY,
OFFER_PATH,
PUBLIC_OFFER_URL,
PUBLIC_REFUND_URL,
SERVICE_PRICE_RUB,
SUPPORT_EMAIL,
} from "../content";
import styles from "../landing.module.css";
/**
* Политика возврата денежных средств.
*
* ЗАЧЕМ ОТДЕЛЬНЫМ ДОКУМЕНТОМ, если раздел 8 оферты говорит то же самое.
* Порядок возврата то, что модерация эквайера проверяет последним и отдельным
* пунктом; кроме того, у документа своя аудитория: человек, у которого уже
* списались деньги, читает не договор целиком, а страницу «как вернуть».
* Приоритет при расхождении отдан оферте это записано и здесь (п. 1.2), и в
* самой оферте (п. 8.0), чтобы дублирование не создало второй источник истины.
*
* ОТКУДА ТЕКСТ. Редакция владельца от 13.08.2026 (docx), перенесённая
* дословно; плейсхолдер `[адрес электронной почты]` заменён на `SUPPORT_EMAIL`,
* цена и реквизиты из `content.ts`.
*
* ЧТО ЗДЕСЬ ОПИСАНО РАНЬШЕ КОДА. Разделы 2.1 и 4 обещают АВТОМАТИЧЕСКИЙ возврат
* при техническом сбое платёжного контура в репозитории ещё нет, значит на
* момент публикации это установленный порядок, а не наблюдаемое поведение
* системы. Так и задумано (документ публикуется до подключения эквайринга
* без него заявку не примут), но при включении оплаты автоматический возврат
* обязан появиться в коде вместе с кнопкой, а не после неё: обещание уже
* опубликовано и является условием договора.
*/
export const metadata: Metadata = {
title: "Политика возврата денежных средств — МЕРА",
description:
"Условия, порядок и сроки возврата денежных средств за расчёт сервиса «МЕРА».",
alternates: { canonical: PUBLIC_REFUND_URL },
};
export default function MeraPublicRefundPage() {
const entity = LEGAL_ENTITY;
return (
<main id="content" className={styles.main} tabIndex={-1}>
<div className={`${styles.container} ${styles.doc}`}>
<Link
className={`${styles.link} ${styles.docBack}`}
href="/mera-public"
>
На главную
</Link>
<h1 className={styles.h2}>Политика возврата денежных средств</h1>
<p className={styles.docMeta}>
сервис «МЕРА» (meraocenka.ru). Редакция от {LEGAL_DOCS_REVISION}
</p>
<h2>1. Общие положения</h2>
<p>
1.1. Настоящая Политика определяет условия, порядок и сроки возврата
денежных средств, уплаченных Заказчиком за услугу сервиса «МЕРА» на
сайте meraocenka.ru (далее «Услуга»), стоимость которой составляет{" "}
{SERVICE_PRICE_RUB} (сто пятьдесят) рублей за один расчёт.
</p>
<p>
1.2. Настоящая Политика размещена в свободном доступе в сети Интернет
по адресу {PUBLIC_REFUND_URL} и является неотъемлемой частью{" "}
<Link className={styles.link} href={OFFER_PATH}>
Публичной оферты
</Link>
, размещённой по адресу {PUBLIC_OFFER_URL}. Оферта и настоящая
Политика применяются совместно; в случае противоречий между ними
приоритет имеет Оферта.
</p>
<p>
1.3. Услуга считается оказанной с момента отображения результата
расчёта Заказчику на сайте либо направления его на указанную
Заказчиком электронную почту в зависимости от того, что наступит
раньше. После этого момента оплата по общему правилу возврату не
подлежит, за исключением случаев, перечисленных в разделе 3 настоящей
Политики.
</p>
<h2>2. Кто принимает решение о возврате</h2>
<p>
2.1. Решения о возврате денежных средств по основаниям, не требующим
обращения Заказчика (технический сбой раздел 4), принимаются
автоматически системой сайта без участия сотрудников Исполнителя.
</p>
<p>
2.2. Решения о возврате денежных средств по обращениям Заказчика (п.
3.33.4) рассматриваются сотрудником службы поддержки Исполнителя,
ответственным за обработку почтового ящика{" "}
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>
. Итоговое решение по спорным или нестандартным случаям принимает
директор {entity ? entity.shortName : "Исполнителя"} либо
уполномоченное им лицо.
</p>
<h2>3. Условия возврата</h2>
<p>3.1. Возврат не производится, если:</p>
<ul>
<li>
Услуга оказана надлежащим образом результат расчёта был
сформирован и предоставлен Заказчику;
</li>
<li>
основанием для обращения является несогласие Заказчика с полученным
числовым значением расчёта (расчёт носит индикативный характер, что
не является основанием для возврата).
</li>
</ul>
<p>3.2. Возврат производится в полном объёме в следующих случаях:</p>
<ul>
<li>
технический сбой на стороне сервиса расчёт не был предоставлен
Заказчику после оплаты (подробно раздел 4);
</li>
<li>
Заказчик отказался от Услуги до момента её фактического оказания (то
есть до появления результата на экране или в почте);
</li>
<li>
денежные средства были списаны повторно из-за технической ошибки
платёжной формы;
</li>
<li>
оплата была произведена без согласия владельца карты при
подтверждении этого факта банком-эмитентом.
</li>
</ul>
<p>
3.3. Для случаев, указанных в п. 3.2 (кроме технического сбоя, который
обрабатывается автоматически), Заказчик направляет обращение на{" "}
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>{" "}
с указанием даты и примерного времени оплаты, суммы и последних 4 цифр
карты.
</p>
<p>
3.4. Срок рассмотрения обращения и возврата не позднее 10 (десяти)
рабочих дней с момента получения обращения Исполнителем.
</p>
<h2>4. Отдельный случай: оплата прошла, а расчёт не сформирован</h2>
<p>
4.1. Если после успешной оплаты сервис по техническим причинам не смог
сформировать результат расчёта (сбой, ошибка обработки данных,
недоступность сервиса) в течение 15 (пятнадцати) минут с момента
оплаты, Услуга считается неоказанной.
</p>
<p>
4.2. Возврат в этом случае производится автоматически, в полном
объёме, без необходимости обращения Заказчика с заявлением или
претензией.
</p>
<p>
4.3. Срок такого автоматического возврата не позднее 3 (трёх)
рабочих дней с момента фиксации сбоя системой.
</p>
<p>
4.4. Если по истечении указанного срока возврат не поступил, Заказчик
вправе обратиться на{" "}
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>{" "}
такое обращение рассматривается вне очереди.
</p>
<h2>5. Способ возврата</h2>
<p>
5.1. Возврат денежных средств во всех случаях производится тем же
способом, которым была произведена оплата (на ту же банковскую карту),
если иной способ не согласован с Заказчиком дополнительно.
</p>
<p>
5.2. Срок зачисления денежных средств на счёт Заказчика после инициации
возврата зависит от банка-эмитента карты Заказчика и обычно составляет
от 1 до 30 календарных дней это правило платёжных систем, а не
Исполнителя.
</p>
<h2>6. Права потребителя</h2>
<p>
6.1. Настоящая Политика не ограничивает права Заказчика физического
лица, установленные Законом РФ от 07.02.1992 2300-1 «О защите прав
потребителей». В части, где условия настоящей Политики противоречили бы
указанному Закону, применяются положения Закона.
</p>
<h2>7. Контакты по вопросам возврата</h2>
<p>
E-mail:{" "}
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
{SUPPORT_EMAIL}
</a>
</p>
{entity ? (
<p>
{entity.shortName}, ИНН {entity.inn}, ОГРН {entity.ogrn}
</p>
) : null}
</div>
</main>
);
}