feat(mera): оферта, политика возврата и утверждённая политика ПДн + реквизиты
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 56s
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 56s
Юридический блокер публичного B2C-запуска (G6 в mera-b2c-paid-flow-decision.md: `LEGAL_ENTITY == null` → нет реквизитов, нет продажи) и входное требование модерации эквайера: оферты не было вообще, а privacy-страница в собственной шапке писала, что она НЕ утверждённая политика по ст. 18.1 152-ФЗ. Что сделано: - content.ts: `LEGAL_ENTITY` заполнен (ООО «ПРОЕКТ ФЛЭТ», ИНН/КПП/ОГРН, адреса, директор, банковские реквизиты), добавлены `SUPPORT_EMAIL`, `SERVICE_PRICE_RUB`, пути и короткие публичные URL документов. Единый источник — подвал, оферта, возврат и ПДн рендерят эти поля, а не повторяют строки. ОГРН сверен с открытыми данными ЕГРЮЛ (в исходном сообщении владельца был с опечаткой …028028, верный …028281). - Новые страницы /mera-public/oferta и /mera-public/refund — редакции владельца от 13.08.2026 дословно, плейсхолдер `[адрес электронной почты]` заменён на support@meraocenka.ru. - privacy/page.tsx переписана на утверждённую редакцию с оператором и реквизитами приказа. Сохранены оба инварианта честности: раздел про страницу ввода адреса условен по `PUBLIC_ESTIMATE_ENABLED` (п. 5.4 — пока публичный расчёт выключен, адрес не покидает браузер), срок хранения оплаченного отчёта рендерится из `PAID_REPORT_RETENTION_MONTHS`, а не числом в тексте (test_paid_retention_text_consistency.py). - Caddyfile: короткие адреса /oferta, /refund, /privacy → rewrite на поддерево лэндинга. Именно они напечатаны внутри документов и уйдут в заявку эквайеру. Пути перечислены поимённо — allowlist-by-default периметра не ослаблен. - smoke-mera-perimeter.sh: три новые проверки на короткие адреса. Публикация оферты НЕ включает приём оплаты: платёжного контура в коде нет, `PUBLIC_ESTIMATE_ENABLED` по-прежнему false. Оферта публикуется раньше кнопки намеренно — без неё эквайер не примет заявку. Проверено локально: tsc, next lint, vitest (29), isolation guard, next build (три страницы пререндерены), pytest test_paid_retention_text_consistency (3), caddy validate + adapt (rewrite на месте), рендер всех трёх страниц через next start — реквизиты, почта и цена на месте.
This commit is contained in:
parent
a6e751da65
commit
c6243b166f
8 changed files with 1143 additions and 146 deletions
25
Caddyfile
25
Caddyfile
|
|
@ -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: футер ссылается
|
# Подстраницы САМОГО лэндинга. Нужны с момента мержа #2615: футер ссылается
|
||||||
# на политику обработки ПДн через next/link (`PRIVACY_PATH`), а Next с
|
# на политику обработки ПДн через next/link (`PRIVACY_PATH`), а Next с
|
||||||
# basePath эмитит её как /trade-in/mera-public/privacy. Без этого handle
|
# basePath эмитит её как /trade-in/mera-public/privacy. Без этого handle
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,8 @@
|
||||||
# 1. meraocenka.ru отдаёт 200 анонимно (публичный лэндинг).
|
# 1. meraocenka.ru отдаёт 200 анонимно (публичный лэндинг).
|
||||||
# 1b. Подстраница лэндинга /trade-in/mera-public/privacy отдаёт 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 —
|
# 2. meraocenka.ru/v2 и /trade-in/v2, /trade-in/api/* (B2B-пути) отдают 404 —
|
||||||
# allowlist-by-default, НЕ были случайно проброшены на B2B-дерево
|
# allowlist-by-default, НЕ были случайно проброшены на B2B-дерево
|
||||||
# tradein-frontend. Проверяются обе формы — с basePath-префиксом и без.
|
# tradein-frontend. Проверяются обе формы — с basePath-префиксом и без.
|
||||||
|
|
@ -52,6 +54,15 @@ check "meraocenka.ru root — public 200" "$BASE_MERA/" 200
|
||||||
# обязательный по 152-ФЗ документ станет недоступен с публичной страницы.
|
# обязательный по 152-ФЗ документ станет недоступен с публичной страницы.
|
||||||
check "meraocenka.ru privacy — public 200" "$BASE_MERA/trade-in/mera-public/privacy" 200
|
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.
|
# 2. B2B-путь на публичном домене — 404 (allowlist-by-default), не 200/401.
|
||||||
check "meraocenka.ru/v2 — B2B path must 404" "$BASE_MERA/v2" 404
|
check "meraocenka.ru/v2 — B2B path must 404" "$BASE_MERA/v2" 404
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,17 @@
|
||||||
/**
|
/**
|
||||||
* SiteFooter — подвал. Серверный компонент.
|
* SiteFooter — подвал. Серверный компонент.
|
||||||
*
|
*
|
||||||
* Что здесь честно ОТСУТСТВУЕТ:
|
* 2026-08-13: блоки реквизитов и почты, которых здесь раньше не было, теперь
|
||||||
* - Реквизиты юрлица/ИП. В репозитории их нет (поиск по коду, бэкенду и
|
* рендерятся — данные появились (`LEGAL_ENTITY`, `SUPPORT_EMAIL` в content.ts),
|
||||||
* разметке не дал ни наименования, ни ИНН/ОГРН), а выдумывать реквизиты
|
* и это не косметика: наименование, ИНН, ОГРН и работающий контакт на странице
|
||||||
* оператора персональных данных на публичной странице нельзя. Блок
|
* с офертой — прямое требование модерации эквайера и условие идентифицируемости
|
||||||
* рендерится, как только `LEGAL_ENTITY` в content.ts перестанет быть null;
|
* оператора по 152-ФЗ. Значения импортируются, а не пишутся строками: тот же
|
||||||
* заполнить обязательно до открытия домена наружу — 152-ФЗ требует
|
* набор рендерят оферта и политика ПДн, и разъехаться они не должны.
|
||||||
* идентифицируемого оператора.
|
*
|
||||||
* - E-mail поддержки: реального адреса в коде тоже нет. Единственный
|
* Ссылки на документы ведут по ВНУТРЕННИМ путям (`OFFER_PATH` и соседи), а не
|
||||||
* проверяемый канал — телеграм-бот из `v2/SupportChatContext.tsx`.
|
* по коротким meraocenka.ru/oferta: короткие адреса существуют только на
|
||||||
|
* публичном хосте (rewrite в Caddy), а это же поддерево открывается и с
|
||||||
|
* gendsgn.ru/trade-in/mera-public — там короткая ссылка ушла бы в 404.
|
||||||
*
|
*
|
||||||
* Внешняя ссылка проверяется `safeUrl` (правило frontend.md: ничего в href без
|
* Внешняя ссылка проверяется `safeUrl` (правило frontend.md: ничего в href без
|
||||||
* валидации схемы) и открывается в новой вкладке с rel="noreferrer".
|
* валидации схемы) и открывается в новой вкладке с rel="noreferrer".
|
||||||
|
|
@ -21,8 +23,11 @@ import { safeUrl } from "@/lib/safeUrl";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
LEGAL_ENTITY,
|
LEGAL_ENTITY,
|
||||||
|
OFFER_PATH,
|
||||||
PRIVACY_PATH,
|
PRIVACY_PATH,
|
||||||
|
REFUND_PATH,
|
||||||
REGION_NAME,
|
REGION_NAME,
|
||||||
|
SUPPORT_EMAIL,
|
||||||
SUPPORT_TELEGRAM_LABEL,
|
SUPPORT_TELEGRAM_LABEL,
|
||||||
SUPPORT_TELEGRAM_URL,
|
SUPPORT_TELEGRAM_URL,
|
||||||
} from "../content";
|
} from "../content";
|
||||||
|
|
@ -49,6 +54,12 @@ export function SiteFooter() {
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<p className={styles.footerTitle}>Связаться</p>
|
<p className={styles.footerTitle}>Связаться</p>
|
||||||
|
<p className={styles.footerText}>
|
||||||
|
Почта:{" "}
|
||||||
|
<a className={styles.link} href={`mailto:${SUPPORT_EMAIL}`}>
|
||||||
|
{SUPPORT_EMAIL}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
{telegramHref ? (
|
{telegramHref ? (
|
||||||
<p className={styles.footerText}>
|
<p className={styles.footerText}>
|
||||||
Поддержка в Telegram:{" "}
|
Поддержка в Telegram:{" "}
|
||||||
|
|
@ -61,14 +72,22 @@ export function SiteFooter() {
|
||||||
{SUPPORT_TELEGRAM_LABEL}
|
{SUPPORT_TELEGRAM_LABEL}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
) : (
|
) : null}
|
||||||
<p className={styles.footerText}>Контакты появятся к запуску.</p>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<p className={styles.footerTitle}>Документы</p>
|
<p className={styles.footerTitle}>Документы</p>
|
||||||
<ul className={styles.footerLinks} role="list">
|
<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>
|
<li>
|
||||||
<Link className={styles.link} href={PRIVACY_PATH}>
|
<Link className={styles.link} href={PRIVACY_PATH}>
|
||||||
Обработка персональных данных
|
Обработка персональных данных
|
||||||
|
|
@ -82,8 +101,8 @@ export function SiteFooter() {
|
||||||
<span>© {year} МЕРА</span>
|
<span>© {year} МЕРА</span>
|
||||||
{LEGAL_ENTITY && (
|
{LEGAL_ENTITY && (
|
||||||
<span>
|
<span>
|
||||||
{LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn},{" "}
|
{LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn}, ОГРН{" "}
|
||||||
{LEGAL_ENTITY.address}
|
{LEGAL_ENTITY.ogrn}, {LEGAL_ENTITY.address}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
<span>
|
<span>
|
||||||
|
|
|
||||||
|
|
@ -77,20 +77,119 @@ export const SUPPORT_TELEGRAM_URL = "https://t.me/MERAsupport_bot";
|
||||||
export const SUPPORT_TELEGRAM_LABEL = "@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: {
|
export const LEGAL_ENTITY: {
|
||||||
|
/** Полное фирменное наименование — как в ЕГРЮЛ. */
|
||||||
name: string;
|
name: string;
|
||||||
|
/** Краткое наименование для строк, где полное не помещается (подвал). */
|
||||||
|
shortName: string;
|
||||||
inn: string;
|
inn: string;
|
||||||
|
kpp: string;
|
||||||
|
ogrn: string;
|
||||||
|
/** Юридический адрес одной строкой. */
|
||||||
address: 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 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 г.";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Сколько месяцев на нашей стороне хранится ссылка/строка оплаченного отчёта
|
* Сколько месяцев на нашей стороне хранится ссылка/строка оплаченного отчёта
|
||||||
|
|
|
||||||
|
|
@ -894,3 +894,52 @@
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 6px;
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
480
tradein-mvp/frontend/src/app/mera-public/oferta/page.tsx
Normal file
480
tradein-mvp/frontend/src/app/mera-public/oferta/page.tsx
Normal 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>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -4,7 +4,10 @@ import Link from "next/link";
|
||||||
import {
|
import {
|
||||||
LEGAL_ENTITY,
|
LEGAL_ENTITY,
|
||||||
PAID_REPORT_RETENTION_MONTHS,
|
PAID_REPORT_RETENTION_MONTHS,
|
||||||
|
PRIVACY_APPROVAL,
|
||||||
PUBLIC_ESTIMATE_ENABLED,
|
PUBLIC_ESTIMATE_ENABLED,
|
||||||
|
PUBLIC_PRIVACY_URL,
|
||||||
|
SUPPORT_EMAIL,
|
||||||
SUPPORT_TELEGRAM_LABEL,
|
SUPPORT_TELEGRAM_LABEL,
|
||||||
SUPPORT_TELEGRAM_URL,
|
SUPPORT_TELEGRAM_URL,
|
||||||
} from "../content";
|
} from "../content";
|
||||||
|
|
@ -12,64 +15,47 @@ import styles from "../landing.module.css";
|
||||||
import { safeUrl } from "@/lib/safeUrl";
|
import { safeUrl } from "@/lib/safeUrl";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Страница «Обработка персональных данных» для публичного лэндинга.
|
* Политика обработки персональных данных по ст. 18.1 152-ФЗ.
|
||||||
*
|
*
|
||||||
* ЧТО ЭТО ЗА ДОКУМЕНТ. Это НЕ утверждённая политика по ст. 18.1 152-ФЗ:
|
* ЧТО ИЗМЕНИЛОСЬ 2026-08-13. До этой редакции страница честно объявляла себя
|
||||||
* полноценная политика обязана называть оператора (наименование, ИНН, адрес), а
|
* НЕ утверждённой политикой: у проекта не было ни реквизитов оператора, ни
|
||||||
* этих данных в проекте нет — см. `LEGAL_ENTITY` в content.ts. Выдумывать
|
* приказа об утверждении, и выдумывать их было нельзя. Теперь есть и то, и
|
||||||
* реквизиты на публичной странице нельзя, поэтому здесь — честное описание
|
* другое (`LEGAL_ENTITY`, `PRIVACY_APPROVAL` в content.ts), поэтому здесь —
|
||||||
* того, что сервис делает с данными СЕГОДНЯ по факту кода:
|
* утверждённая владельцем редакция (docx от 13.08.2026), перенесённая
|
||||||
|
* дословно. Прежняя оговорка «политика не утверждена» снята не потому, что
|
||||||
|
* стала неудобной, а потому, что перестала быть правдой.
|
||||||
*
|
*
|
||||||
* - расчёт: адрес + параметры квартиры (`TradeInEstimateInput`);
|
* ЧТО ОСТАЛОСЬ ОТ ПРЕЖНЕЙ СТРАНИЦЫ — правило честности:
|
||||||
* - заявка: телефон + явное согласие галочкой (`v2/LeadForm.tsx` →
|
* - Раздел про страницу ввода адреса УСЛОВЕН по `PUBLIC_ESTIMATE_ENABLED`.
|
||||||
* `POST /api/v1/trade-in/lead`), факт согласия сохраняется отдельно;
|
* Пока публичный расчёт выключен, адрес физически не покидает браузер, и
|
||||||
* - сама эта страница не делает ни одного запроса к API и не подключает
|
* писать обратное нельзя; текст меняется вместе с флагом, а не потом.
|
||||||
* счётчики (проверено: RouteGuard отдаёт публичный путь до useMe,
|
* - Срок хранения оплаченного отчёта рендерится из
|
||||||
* `app/providers.tsx` поднимает только пустой QueryClient, шрифты
|
* `PAID_REPORT_RETENTION_MONTHS`, а НЕ числом, вписанным в текст, — это
|
||||||
* self-hosted через next/font).
|
* гейтится тестом `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`); на публичной
|
||||||
|
* странице это не разворачивается, но при обращении об удалении оператор
|
||||||
|
* обязан помнить.
|
||||||
*
|
*
|
||||||
* ЧЕГО ЗДЕСЬ СОЗНАТЕЛЬНО НЕ НАПИСАНО:
|
* Короткий публичный адрес — meraocenka.ru/privacy (rewrite в Caddy); именно он
|
||||||
* - «адрес и параметры квартиры — это не данные о вас». Правовая
|
* напечатан в самой политике и в оферте.
|
||||||
* квалификация — не наше дело: заявка привязывается к конкретному расчёту
|
|
||||||
* (`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`: пока
|
|
||||||
* расчёт выключен, адрес действительно не покидает браузер; после включения это
|
|
||||||
* перестанет быть правдой, и текст должен смениться вместе с флагом, а не
|
|
||||||
* когда-нибудь потом.
|
|
||||||
*
|
|
||||||
* Перед открытием домена наружу текст обязан быть заменён на утверждённую
|
|
||||||
* политику с реквизитами оператора.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Обработка персональных данных — МЕРА",
|
title: "Политика обработки персональных данных — МЕРА",
|
||||||
robots: { index: false, follow: false },
|
description:
|
||||||
|
"Утверждённая политика обработки персональных данных сервиса «МЕРА» по ст. 18.1 152-ФЗ.",
|
||||||
|
alternates: { canonical: PUBLIC_PRIVACY_URL },
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function MeraPublicPrivacyPage() {
|
export default function MeraPublicPrivacyPage() {
|
||||||
const telegramHref = safeUrl(SUPPORT_TELEGRAM_URL);
|
const telegramHref = safeUrl(SUPPORT_TELEGRAM_URL);
|
||||||
|
const entity = LEGAL_ENTITY;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main id="content" className={styles.main} tabIndex={-1}>
|
<main id="content" className={styles.main} tabIndex={-1}>
|
||||||
|
|
@ -81,64 +67,207 @@ export default function MeraPublicPrivacyPage() {
|
||||||
← На главную
|
← На главную
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<h1 className={styles.h2}>Обработка персональных данных</h1>
|
<h1 className={styles.h2}>
|
||||||
|
Политика обработки персональных данных
|
||||||
<p>
|
</h1>
|
||||||
Здесь по-человечески описано, какие данные нужны сервису «Мера», зачем
|
<p className={styles.docMeta}>
|
||||||
и что с ними происходит.
|
сервис «МЕРА» (meraocenka.ru). Утверждена {PRIVACY_APPROVAL}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Что нужно для оценки</h2>
|
<h2>1. Общие положения</h2>
|
||||||
<p>
|
<p>
|
||||||
Адрес дома и параметры квартиры: площадь, этаж, число комнат, тип
|
1.1. Настоящая Политика определяет порядок обработки персональных
|
||||||
дома, состояние. Имя, паспорт и документы на квартиру мы не
|
данных и меры по обеспечению их безопасности в{" "}
|
||||||
спрашиваем, и сами по себе эти сведения описывают объект недвижимости.
|
{entity ? entity.shortName : "организации-операторе"} (далее —
|
||||||
|
«Оператор») в целях защиты прав и свобод пользователей сайта
|
||||||
|
meraocenka.ru (далее — «Сайт», «Сервис»).
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
При этом мы не делаем вид, что связи с вами нет совсем: если вы потом
|
1.2. Политика разработана и утверждена в соответствии со ст. 18.1
|
||||||
оставите заявку, ваш телефон будет привязан именно к этому расчёту —
|
Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» и
|
||||||
то есть к конкретному адресу. Поэтому телефон и обращаемся с ним как с
|
является общедоступным документом, размещаемым на Сайте без
|
||||||
персональными данными, с отдельным согласием.
|
ограничения доступа по адресу {PUBLIC_PRIVACY_URL}.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2>Когда появляется телефон</h2>
|
<h2>2. Оператор персональных данных</h2>
|
||||||
<p>
|
{entity ? (
|
||||||
Только если вы сами решите оставить заявку и поставите отдельную
|
<dl className={styles.docRequisites}>
|
||||||
галочку согласия на обработку персональных данных в соответствии с
|
<div>
|
||||||
Федеральным законом № 152-ФЗ. Без этой галочки заявка не отправляется.
|
<dt>Наименование</dt>
|
||||||
</p>
|
<dd>{entity.name}</dd>
|
||||||
<p>
|
</div>
|
||||||
Телефон используется, чтобы связаться с вами по вашей же заявке.
|
<div>
|
||||||
Вместе с ним сохраняется сам факт согласия — когда именно и на каком
|
<dt>ИНН / КПП / ОГРН</dt>
|
||||||
тексте оно было дано.
|
<dd>
|
||||||
</p>
|
{entity.inn} / {entity.kpp} / {entity.ogrn}
|
||||||
|
</dd>
|
||||||
<h2>Что делает эта страница</h2>
|
</div>
|
||||||
{PUBLIC_ESTIMATE_ENABLED ? (
|
<div>
|
||||||
<p>
|
<dt>Юридический адрес</dt>
|
||||||
Введённый адрес и параметры квартиры уходят на наш сервер, чтобы по
|
<dd>{entity.address}</dd>
|
||||||
ним посчитать оценку, и сохраняются вместе с результатом расчёта —
|
</div>
|
||||||
иначе отчёт нельзя было бы открыть повторно. Счётчиков и рекламных
|
<div>
|
||||||
пикселей на странице нет, шрифты отдаются с нашего домена, а не со
|
<dt>Директор</dt>
|
||||||
сторонних сервисов.
|
<dd>{entity.director}</dd>
|
||||||
</p>
|
</div>
|
||||||
|
</dl>
|
||||||
) : (
|
) : (
|
||||||
<p>
|
<p>
|
||||||
Ничего не отправляет. Пока публичная оценка не открыта, форма адреса
|
Реквизиты оператора не опубликованы — до их публикации политика не
|
||||||
работает только в браузере: введённый адрес никуда не уходит и нигде
|
считается утверждённой.
|
||||||
не сохраняется. Счётчиков и рекламных пикселей на странице нет,
|
|
||||||
шрифты отдаются с нашего домена, а не со сторонних сервисов.
|
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<h2>Как отозвать согласие</h2>
|
<h2>3. Какие данные мы обрабатываем и зачем</h2>
|
||||||
<p>
|
<p>
|
||||||
Напишите нам в поддержку — обращение об отзыве согласия мы принимаем и
|
3.1. Для получения расчёта пользователь вводит адрес объекта
|
||||||
разбираем вручную, после чего перестаём использовать ваш телефон для
|
недвижимости и его параметры: площадь, этаж, число комнат, тип дома,
|
||||||
связи по заявке.{" "}
|
состояние ремонта. Имя, паспортные данные и правоустанавливающие
|
||||||
|
документы на объект Оператором не запрашиваются.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
3.2. Адрес и параметры объекта сами по себе описывают объект
|
||||||
|
недвижимости, а не конкретного человека, и в отдельности от иных
|
||||||
|
данных не относятся к определённому физическому лицу — в связи с чем
|
||||||
|
не рассматриваются Оператором как персональные данные.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
3.3. Номер телефона обрабатывается Оператором только в том случае,
|
||||||
|
если пользователь самостоятельно принимает решение оставить заявку и
|
||||||
|
проставляет отдельную отметку о согласии на обработку персональных
|
||||||
|
данных в соответствии с Федеральным законом № 152-ФЗ. Без такой
|
||||||
|
отметки заявка не отправляется. Отметка о согласии по умолчанию не
|
||||||
|
проставлена — пользователь ставит её сам, осознанным действием.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
3.4. При оставлении заявки указанный пользователем номер телефона
|
||||||
|
сохраняется в привязке к конкретному адресу объекта, введённому этим
|
||||||
|
же пользователем. Именно с момента такой привязки совокупность данных
|
||||||
|
(телефон + адрес + факт обращения) рассматривается Оператором как
|
||||||
|
персональные данные пользователя, и на неё распространяются все
|
||||||
|
положения настоящей Политики в полном объёме.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
3.5. Дополнительно, при оплате Услуги на Сайте Оператор обрабатывает
|
||||||
|
номер телефона и/или адрес электронной почты, указанные пользователем
|
||||||
|
при оплате — для направления кассового чека в соответствии с
|
||||||
|
Федеральным законом от 22.05.2003 № 54-ФЗ, — а также технические
|
||||||
|
данные (IP-адрес, данные браузера и устройства), передаваемые в связи
|
||||||
|
с проведением платежа через платёжный сервис, подключённый Оператором.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
5.4. На сегодняшний день публичный расчёт по адресу на Сайте ещё не
|
||||||
|
открыт: форма адреса на главной странице работает только в браузере
|
||||||
|
пользователя — введённый адрес не передаётся на сервер Оператора и
|
||||||
|
нигде не сохраняется. Пункты 5.1–5.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 ? (
|
{telegramHref ? (
|
||||||
<>
|
<p>
|
||||||
Канал связи:{" "}
|
Telegram:{" "}
|
||||||
<a
|
<a
|
||||||
className={styles.link}
|
className={styles.link}
|
||||||
href={telegramHref}
|
href={telegramHref}
|
||||||
|
|
@ -147,37 +276,8 @@ export default function MeraPublicPrivacyPage() {
|
||||||
>
|
>
|
||||||
{SUPPORT_TELEGRAM_LABEL}
|
{SUPPORT_TELEGRAM_LABEL}
|
||||||
</a>
|
</a>
|
||||||
.
|
</p>
|
||||||
</>
|
|
||||||
) : null}
|
) : null}
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Самостоятельной кнопки «удалить мои данные» в интерфейсе пока нет, но
|
|
||||||
механизм удаления в сервисе есть: обращение в поддержку об удалении мы
|
|
||||||
разбираем вручную и физически стираем телефон, адрес и расчёт из базы,
|
|
||||||
а не просто помечаем запись. Помимо запроса, для каждого типа данных
|
|
||||||
установлен срок хранения, по истечении которого они подлежат
|
|
||||||
удалению. Если результат расчёта оплачен, ссылка на отчёт и
|
|
||||||
связанные с ним данные хранятся на нашей стороне{" "}
|
|
||||||
{PAID_REPORT_RETENTION_MONTHS} месяцев с даты оплаты, а затем
|
|
||||||
подлежат удалению так же, как и остальные данные — на файл, который
|
|
||||||
вы скачали себе, это не влияет: мы его не отзываем, не изменяем и не
|
|
||||||
имеем к нему доступа.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h2>Оператор</h2>
|
|
||||||
{LEGAL_ENTITY ? (
|
|
||||||
<p>
|
|
||||||
{LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn}, {LEGAL_ENTITY.address}.
|
|
||||||
</p>
|
|
||||||
) : (
|
|
||||||
<p>
|
|
||||||
Реквизиты оператора персональных данных и утверждённая политика
|
|
||||||
обработки будут опубликованы здесь до открытия публичного доступа к
|
|
||||||
сервису. До этого момента страница доступна не публично, а по прямой
|
|
||||||
ссылке.
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
214
tradein-mvp/frontend/src/app/mera-public/refund/page.tsx
Normal file
214
tradein-mvp/frontend/src/app/mera-public/refund/page.tsx
Normal 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.3–3.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>
|
||||||
|
);
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue