From c6243b166fc5136fd340d5e5306e9d23bc60b5fb Mon Sep 17 00:00:00 2001 From: bot-backend Date: Thu, 13 Aug 2026 20:10:38 +0300 Subject: [PATCH] =?UTF-8?q?feat(mera):=20=D0=BE=D1=84=D0=B5=D1=80=D1=82?= =?UTF-8?q?=D0=B0,=20=D0=BF=D0=BE=D0=BB=D0=B8=D1=82=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=D0=B0=20=D0=B8=20?= =?UTF-8?q?=D1=83=D1=82=D0=B2=D0=B5=D1=80=D0=B6=D0=B4=D1=91=D0=BD=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BF=D0=BE=D0=BB=D0=B8=D1=82=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=9F=D0=94=D0=BD=20+=20=D1=80=D0=B5=D0=BA=D0=B2=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Юридический блокер публичного 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 — реквизиты, почта и цена на месте. --- Caddyfile | 25 + scripts/smoke-mera-perimeter.sh | 11 + .../mera-public/_components/SiteFooter.tsx | 47 +- .../frontend/src/app/mera-public/content.ts | 113 ++++- .../src/app/mera-public/landing.module.css | 49 ++ .../src/app/mera-public/oferta/page.tsx | 480 ++++++++++++++++++ .../src/app/mera-public/privacy/page.tsx | 350 ++++++++----- .../src/app/mera-public/refund/page.tsx | 214 ++++++++ 8 files changed, 1143 insertions(+), 146 deletions(-) create mode 100644 tradein-mvp/frontend/src/app/mera-public/oferta/page.tsx create mode 100644 tradein-mvp/frontend/src/app/mera-public/refund/page.tsx diff --git a/Caddyfile b/Caddyfile index 1e6a0e25..8624f14f 100644 --- a/Caddyfile +++ b/Caddyfile @@ -251,6 +251,31 @@ meraocenka.ru { } } + # Короткие адреса юридических документов. Именно они напечатаны ВНУТРИ + # самих документов (оферта ссылается на meraocenka.ru/refund, политика + # возврата — на meraocenka.ru/oferta) и уходят в заявку эквайеру, поэтому + # обязаны резолвиться сами по себе, а не только длинным + # /trade-in/mera-public/. Обратное направление тоже рабочее: длинный + # путь ловит 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 diff --git a/scripts/smoke-mera-perimeter.sh b/scripts/smoke-mera-perimeter.sh index cda7725a..99e53ef5 100644 --- a/scripts/smoke-mera-perimeter.sh +++ b/scripts/smoke-mera-perimeter.sh @@ -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 diff --git a/tradein-mvp/frontend/src/app/mera-public/_components/SiteFooter.tsx b/tradein-mvp/frontend/src/app/mera-public/_components/SiteFooter.tsx index 086d4abc..c5d9b6e2 100644 --- a/tradein-mvp/frontend/src/app/mera-public/_components/SiteFooter.tsx +++ b/tradein-mvp/frontend/src/app/mera-public/_components/SiteFooter.tsx @@ -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() {

Связаться

+

+ Почта:{" "} + + {SUPPORT_EMAIL} + +

{telegramHref ? (

Поддержка в Telegram:{" "} @@ -61,14 +72,22 @@ export function SiteFooter() { {SUPPORT_TELEGRAM_LABEL}

- ) : ( -

Контакты появятся к запуску.

- )} + ) : null}

Документы

    +
  • + + Публичная оферта + +
  • +
  • + + Политика возврата + +
  • Обработка персональных данных @@ -82,8 +101,8 @@ export function SiteFooter() { © {year} МЕРА {LEGAL_ENTITY && ( - {LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn},{" "} - {LEGAL_ENTITY.address} + {LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn}, ОГРН{" "} + {LEGAL_ENTITY.ogrn}, {LEGAL_ENTITY.address} )} diff --git a/tradein-mvp/frontend/src/app/mera-public/content.ts b/tradein-mvp/frontend/src/app/mera-public/content.ts index 5e5c2937..a2269a15 100644 --- a/tradein-mvp/frontend/src/app/mera-public/content.ts +++ b/tradein-mvp/frontend/src/app/mera-public/content.ts @@ -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 г."; /** * Сколько месяцев на нашей стороне хранится ссылка/строка оплаченного отчёта diff --git a/tradein-mvp/frontend/src/app/mera-public/landing.module.css b/tradein-mvp/frontend/src/app/mera-public/landing.module.css index a054771e..25d4d6b8 100644 --- a/tradein-mvp/frontend/src/app/mera-public/landing.module.css +++ b/tradein-mvp/frontend/src/app/mera-public/landing.module.css @@ -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; +} diff --git a/tradein-mvp/frontend/src/app/mera-public/oferta/page.tsx b/tradein-mvp/frontend/src/app/mera-public/oferta/page.tsx new file mode 100644 index 00000000..b5908fe3 --- /dev/null +++ b/tradein-mvp/frontend/src/app/mera-public/oferta/page.tsx @@ -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 ( +
    +
    + + ← На главную + + +

    Публичная оферта

    +

    + на оказание информационно-аналитических услуг сервиса «МЕРА» + (meraocenka.ru). Редакция от {LEGAL_DOCS_REVISION} +

    + + {!entity ? ( +

    + Реквизиты Исполнителя не опубликованы — до их публикации оферта не + действует и оплата на сайте не принимается. +

    + ) : ( + <> +

    1. Термины и определения

    +

    + 1.1. «Исполнитель» — {entity.name}, реквизиты которого указаны в + разделе 13 настоящей Оферты. +

    +

    + 1.2. «Сайт» — интернет-сайт, расположенный по адресу + meraocenka.ru, включая все его страницы и поддомены. +

    +

    + 1.3. «Сервис» или «МЕРА» — программа для ЭВМ, размещённая на Сайте + и предназначенная для автоматизированного формирования + индикативного расчёта ориентировочной рыночной стоимости объекта + недвижимости на основании характеристик, введённых пользователем. +

    +

    + 1.4. «Заказчик» — любое дееспособное физическое лицо либо + юридическое лицо / индивидуальный предприниматель, оплатившее + Услугу на условиях настоящей Оферты. +

    +

    + 1.5. «Услуга» — оказываемая Исполнителем услуга по формированию и + предоставлению Заказчику Результата по одному обращению к Сервису. +

    +

    + 1.6. «Результат» или «Расчёт» — сформированное Сервисом + индикативное значение ориентировочной рыночной стоимости объекта + недвижимости, отображаемое в интерфейсе Сайта и/или направляемое + на электронную почту Заказчика. +

    +

    + 1.7. «Оферта» — настоящий документ, размещённый в свободном + доступе в сети Интернет по адресу {PUBLIC_OFFER_URL}. +

    + +

    2. Общие положения

    +

    + 2.1. Настоящая Оферта является публичным предложением Исполнителя + заключить договор оказания услуг на изложенных ниже условиях в + соответствии со ст. 435 и п. 2 ст. 437 Гражданского кодекса РФ. +

    +

    + 2.2. Оферта считается акцептованной Заказчиком, а договор — + заключённым на условиях настоящей Оферты с момента совершения + Заказчиком действий, свидетельствующих об акцепте, а именно — + оплаты стоимости Услуги в порядке, установленном разделом 4 + настоящей Оферты (ст. 438 ГК РФ). +

    +

    + 2.3. Заказчик, не согласный с условиями настоящей Оферты, не + вправе производить оплату Услуги и обязан покинуть Сайт. +

    +

    + 2.4. К отношениям Сторон, не урегулированным настоящей Офертой, + применяется законодательство Российской Федерации, включая, если + Заказчиком является физическое лицо, действующее для личных, + семейных, бытовых нужд, не связанных с предпринимательской + деятельностью, — Закон РФ от 07.02.1992 № 2300-1 «О защите прав + потребителей». +

    + +

    3. Предмет Оферты

    +

    + 3.1. Исполнитель обязуется оказать Заказчику Услугу — сформировать + и предоставить Заказчику доступ к Результату, а Заказчик обязуется + оплатить Услугу в порядке и на условиях, установленных настоящей + Офертой. +

    +

    + 3.2. Услуга оказывается дистанционно, посредством сети Интернет, + без необходимости личного присутствия Заказчика. +

    +

    + 3.3. Характер и правовой статус Результата определены разделом 6 + настоящей Оферты — Заказчику надлежит ознакомиться с ним до + совершения оплаты. +

    + +

    4. Стоимость Услуги и порядок оплаты

    +

    + 4.1. Стоимость одной Услуги (одного Расчёта) составляет{" "} + {SERVICE_PRICE_RUB} (сто пятьдесят) рублей 00 копеек, включая НДС + по ставке, применяемой Исполнителем в соответствии с действующим + законодательством РФ. +

    +

    + 4.2. Оплата производится Заказчиком в безналичном порядке через + платёжную форму на Сайте с использованием банковских карт + платёжных систем и/или иных способов оплаты, поддерживаемых + платёжным сервисом, подключённым Исполнителем. +

    +

    + 4.3. Обязанность Заказчика по оплате Услуги считается исполненной + с момента зачисления денежных средств на расчётный счёт + Исполнителя либо на счёт платёжного сервиса, обслуживающего + расчёты Исполнителя. +

    +

    + 4.4. Исполнитель направляет Заказчику кассовый чек в соответствии + с Федеральным законом от 22.05.2003 № 54-ФЗ на номер телефона или + адрес электронной почты, указанные Заказчиком при оплате. Заказчик + обязан указать корректные и действующие контактные данные для + получения чека. +

    +

    + 4.5. Стоимость Услуги может быть изменена Исполнителем в + одностороннем порядке путём публикации новой редакции Оферты на + Сайте. Новая стоимость применяется к Услугам, оплаченным после + публикации новой редакции, и не имеет обратной силы. +

    + +

    5. Момент оказания Услуги

    +

    + 5.1. Услуга считается оказанной Исполнителем в полном объёме и + надлежащим образом с момента наступления любого из следующих + событий, в зависимости от того, какое из них наступит раньше: +

    +
      +
    • + отображения Результата в интерфейсе Сайта Заказчику после ввода + характеристик объекта и подтверждения оплаты; +
    • +
    • + направления Результата на адрес электронной почты, указанный + Заказчиком при оплате. +
    • +
    +

    + 5.2. Ввиду массового и автоматизированного характера Услуги + отдельный акт оказания услуг Сторонами не составляется и не + подписывается. Факт формирования и предоставления Результата + фиксируется автоматически в системе Сайта (запись в системном + журнале с указанием даты, времени и идентификатора операции) и + является достаточным и надлежащим доказательством оказания Услуги + в полном объёме. +

    +

    + 5.3. Услуга оплачивается Заказчиком за факт формирования и + предоставления Результата, а не за конкретное числовое значение, + определённое Сервисом, и не за соответствие такого значения + ожиданиям Заказчика или дальнейшим действиям Заказчика на его + основании. Характер и ограничения Результата установлены разделом + 6 настоящей Оферты. +

    +

    + 5.4. Заказчик вправе направить Исполнителю мотивированное + обращение относительно факта оказания Услуги (то есть относительно + того, был ли Результат фактически сформирован и предоставлен) в + течение 24 (двадцати четырёх) часов с момента, определённого п. + 5.1 настоящей Оферты. По истечении указанного срока Услуга + считается оказанной Исполнителем в полном объёме и принятой + Заказчиком без замечаний к факту и полноте её оказания. +

    +

    + 5.5. Если по техническим причинам на стороне Сайта или Сервиса + Результат не был сформирован либо не был предоставлен Заказчику в + течение 15 (пятнадцати) минут с момента подтверждения оплаты по п. + 4.3, Услуга считается неоказанной. В этом случае применяется + порядок возврата денежных средств, установленный п. 8.3 настоящей + Оферты. +

    + +

    + 6. Характер и статус Результата — ограничение ответственности +

    +

    + 6.1. Результат, формируемый Сервисом и предоставляемый Заказчику, + является результатом автоматизированной обработки введённых + Заказчиком данных и носит исключительно индикативный + (ориентировочный, вероятностный) информационно-аналитический + характер. +

    +

    + 6.2. Результат не является отчётом об оценке по смыслу + Федерального закона от 29.07.1998 № 135-ФЗ «Об оценочной + деятельности в Российской Федерации», не составляется субъектом + оценочной деятельности и не обладает юридической силой, + установленной указанным законом для отчёта об оценке. +

    +

    + 6.3. Результат не предназначен для использования и не может быть + использован в качестве обязательного к применению значения + рыночной стоимости объекта недвижимости в случаях, когда + законодательством РФ предусмотрено обязательное проведение оценки, + в том числе для целей: ипотечного кредитования; судебных + разбирательств; нотариальных действий; сделок с участием + государственного или муниципального имущества; иных случаев, прямо + предусмотренных законодательством РФ. +

    +

    + 6.4. Точность Результата зависит от полноты и достоверности + характеристик объекта, введённых Заказчиком. Исполнитель не + проверяет и не может проверить достоверность введённых Заказчиком + данных и не несёт ответственности за отклонение Результата от + фактической рыночной стоимости объекта, вызванное + недостоверностью, неполнотой или неточностью введённых данных. +

    +

    + 6.5. Исполнитель не несёт ответственности за любые решения, + действия или бездействие Заказчика либо третьих лиц, основанные на + Результате, включая решения о покупке, продаже, зачёте объекта + недвижимости по программам трейд-ин или иным образом. +

    + +

    7. Права и обязанности Сторон

    +

    + 7.1. Исполнитель обязуется обеспечить функционирование Сервиса и + предоставить Заказчику Результат при условии поступления оплаты и + корректного заполнения Заказчиком формы ввода характеристик + объекта. +

    +

    + 7.2. Заказчик обязуется предоставлять достоверные характеристики + объекта для формирования Результата и указывать корректные + контактные данные, необходимые для направления кассового чека. +

    +

    + 7.3. Исполнитель вправе приостановить оказание Услуги на время + проведения технических, профилактических и иных работ, необходимых + для поддержания работоспособности Сайта и Сервиса. +

    +

    + 7.4. Исполнитель вправе в одностороннем порядке изменять условия + настоящей Оферты с публикацией новой редакции на Сайте не менее + чем за 3 (три) календарных дня до её вступления в силу, за + исключением случаев, требующих немедленного изменения в силу + закона. +

    + +

    8. Порядок возврата денежных средств

    +

    + 8.0. Условия настоящего раздела дублируются и подробно раскрыты в + отдельном документе —{" "} + + Политике возврата денежных средств + + , размещённой по адресу {PUBLIC_REFUND_URL}. В случае расхождений + между настоящим разделом и указанным документом применяется + настоящая Оферта. +

    +

    + 8.1. Общее правило. Услуга, оказанная в соответствии с разделом 5 + настоящей Оферты, считается исполненной Исполнителем в полном + объёме. После наступления момента, установленного п. 5.1, оплата + возврату не подлежит, за исключением случаев, прямо + предусмотренных настоящим разделом и законодательством РФ. +

    +

    + 8.2. Отказ от Услуги до её оказания. В соответствии со ст. 782 + Гражданского кодекса РФ Заказчик вправе отказаться от Услуги в + любой момент до наступления момента её оказания, установленного п. + 5.1 настоящей Оферты, уведомив Исполнителя по контактным данным, + указанным в разделе 13. В этом случае уплаченные денежные средства + возвращаются Заказчику в полном объёме, поскольку формирование + Результата не влечёт для Исполнителя расходов, подлежащих + отдельному возмещению за счёт Заказчика. +

    +

    + 8.3. Технический сбой (Услуга не оказана). Если Результат не был + предоставлен Заказчику по причинам, указанным в п. 5.5 настоящей + Оферты, денежные средства возвращаются Заказчику в полном объёме + автоматически, без необходимости подачи Заказчиком отдельного + заявления или обращения, в срок не позднее 3 (трёх) рабочих дней с + момента фиксации Сервисом факта неоказания Услуги. +

    +

    + 8.4. Иные основания возврата. Денежные средства также подлежат + возврату в полном объёме в случаях: повторного списания денежных + средств вследствие технической ошибки платёжной формы Сайта; + списания денежных средств по операции, не санкционированной + Заказчиком, — при подтверждении данного факта банком-эмитентом + карты Заказчика. +

    +

    + 8.5. Для возврата денежных средств по основаниям п. 8.4 Заказчик + направляет обращение на {SUPPORT_EMAIL}, указав дату и + приблизительное время оплаты, сумму и последние 4 цифры номера + карты, с которой производилась оплата. Исполнитель рассматривает + обращение и принимает решение в срок не позднее 10 (десяти) + рабочих дней с момента его получения. +

    +

    + 8.6. Возврат денежных средств во всех случаях производится тем же + способом, которым была произведена оплата, если иной способ не + согласован Сторонами дополнительно. +

    +

    + 8.7. Настоящий раздел не ограничивает права Заказчика, + являющегося потребителем по смыслу Закона РФ от 07.02.1992 № + 2300-1 «О защите прав потребителей»: в части, в которой условия + настоящего раздела противоречили бы правам, гарантированным + Заказчику указанным Законом, применяются положения Закона. +

    + +

    9. Персональные данные

    +

    + 9.1. Обработка персональных данных Заказчика осуществляется + Исполнителем в соответствии с{" "} + + Политикой обработки персональных данных + + , размещённой на Сайте и являющейся неотъемлемой частью настоящей + Оферты. +

    + +

    10. Ответственность Сторон

    +

    + 10.1. За неисполнение или ненадлежащее исполнение обязательств по + настоящей Оферте Стороны несут ответственность в соответствии с + законодательством РФ. +

    +

    + 10.2. Совокупная ответственность Исполнителя перед Заказчиком по + настоящей Оферте ограничена суммой, уплаченной Заказчиком за + соответствующую Услугу, за исключением случаев, когда + законодательством РФ установлено иное (в частности, в отношении + прав потребителей). +

    +

    + 10.3. Исполнитель не несёт ответственности за невозможность + оказания Услуги вследствие обстоятельств непреодолимой силы, а + также сбоев в работе сетей связи, интернет-провайдеров, платёжных + систем и иных третьих лиц, не находящихся под контролем + Исполнителя. +

    + +

    11. Срок действия Оферты

    +

    + 11.1. Оферта действует бессрочно с момента размещения на Сайте до + момента её отзыва Исполнителем либо замены новой редакцией. +

    + +

    12. Разрешение споров

    +

    + 12.1. Стороны стремятся разрешить любые споры и разногласия путём + переговоров с обязательным направлением письменной претензии. Срок + ответа на претензию — 10 (десять) рабочих дней с момента + получения. +

    +

    + 12.2. При недостижении согласия спор передаётся на рассмотрение + суда по месту нахождения Исполнителя, за исключением случаев, + когда императивными нормами законодательства о защите прав + потребителей установлена альтернативная подсудность по выбору + потребителя. +

    + +

    13. Реквизиты Исполнителя

    +
    +
    +
    Наименование
    +
    {entity.name}
    +
    +
    +
    Юридический адрес
    +
    {entity.address}
    +
    +
    +
    Фактический адрес
    +
    {entity.actualAddress}
    +
    +
    +
    ИНН / КПП
    +
    + {entity.inn} / {entity.kpp} +
    +
    +
    +
    ОГРН
    +
    {entity.ogrn}
    +
    +
    +
    Расчётный счёт
    +
    {entity.bank.account}
    +
    +
    +
    Банк
    +
    + {entity.bank.name}, БИК {entity.bank.bik}, к/с{" "} + {entity.bank.corrAccount} +
    +
    +
    +
    E-mail
    +
    + + {SUPPORT_EMAIL} + +
    +
    +
    +
    Директор
    +
    {entity.director}
    +
    +
    + + )} +
    +
    + ); +} diff --git a/tradein-mvp/frontend/src/app/mera-public/privacy/page.tsx b/tradein-mvp/frontend/src/app/mera-public/privacy/page.tsx index 0cdd50cf..b9e2dd94 100644 --- a/tradein-mvp/frontend/src/app/mera-public/privacy/page.tsx +++ b/tradein-mvp/frontend/src/app/mera-public/privacy/page.tsx @@ -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 (
    @@ -81,103 +67,217 @@ export default function MeraPublicPrivacyPage() { ← На главную -

    Обработка персональных данных

    - -

    - Здесь по-человечески описано, какие данные нужны сервису «Мера», зачем - и что с ними происходит. +

    + Политика обработки персональных данных +

    +

    + сервис «МЕРА» (meraocenka.ru). Утверждена {PRIVACY_APPROVAL}

    -

    Что нужно для оценки

    +

    1. Общие положения

    - Адрес дома и параметры квартиры: площадь, этаж, число комнат, тип - дома, состояние. Имя, паспорт и документы на квартиру мы не - спрашиваем, и сами по себе эти сведения описывают объект недвижимости. + 1.1. Настоящая Политика определяет порядок обработки персональных + данных и меры по обеспечению их безопасности в{" "} + {entity ? entity.shortName : "организации-операторе"} (далее — + «Оператор») в целях защиты прав и свобод пользователей сайта + meraocenka.ru (далее — «Сайт», «Сервис»).

    - При этом мы не делаем вид, что связи с вами нет совсем: если вы потом - оставите заявку, ваш телефон будет привязан именно к этому расчёту — - то есть к конкретному адресу. Поэтому телефон и обращаемся с ним как с - персональными данными, с отдельным согласием. + 1.2. Политика разработана и утверждена в соответствии со ст. 18.1 + Федерального закона от 27.07.2006 № 152-ФЗ «О персональных данных» и + является общедоступным документом, размещаемым на Сайте без + ограничения доступа по адресу {PUBLIC_PRIVACY_URL}.

    -

    Когда появляется телефон

    -

    - Только если вы сами решите оставить заявку и поставите отдельную - галочку согласия на обработку персональных данных в соответствии с - Федеральным законом № 152-ФЗ. Без этой галочки заявка не отправляется. -

    -

    - Телефон используется, чтобы связаться с вами по вашей же заявке. - Вместе с ним сохраняется сам факт согласия — когда именно и на каком - тексте оно было дано. -

    - -

    Что делает эта страница

    - {PUBLIC_ESTIMATE_ENABLED ? ( -

    - Введённый адрес и параметры квартиры уходят на наш сервер, чтобы по - ним посчитать оценку, и сохраняются вместе с результатом расчёта — - иначе отчёт нельзя было бы открыть повторно. Счётчиков и рекламных - пикселей на странице нет, шрифты отдаются с нашего домена, а не со - сторонних сервисов. -

    +

    2. Оператор персональных данных

    + {entity ? ( +
    +
    +
    Наименование
    +
    {entity.name}
    +
    +
    +
    ИНН / КПП / ОГРН
    +
    + {entity.inn} / {entity.kpp} / {entity.ogrn} +
    +
    +
    +
    Юридический адрес
    +
    {entity.address}
    +
    +
    +
    Директор
    +
    {entity.director}
    +
    +
    ) : (

    - Ничего не отправляет. Пока публичная оценка не открыта, форма адреса - работает только в браузере: введённый адрес никуда не уходит и нигде - не сохраняется. Счётчиков и рекламных пикселей на странице нет, - шрифты отдаются с нашего домена, а не со сторонних сервисов. + Реквизиты оператора не опубликованы — до их публикации политика не + считается утверждённой.

    )} -

    Как отозвать согласие

    +

    3. Какие данные мы обрабатываем и зачем

    - Напишите нам в поддержку — обращение об отзыве согласия мы принимаем и - разбираем вручную, после чего перестаём использовать ваш телефон для - связи по заявке.{" "} - {telegramHref ? ( - <> - Канал связи:{" "} - - {SUPPORT_TELEGRAM_LABEL} - - . - - ) : null} + 3.1. Для получения расчёта пользователь вводит адрес объекта + недвижимости и его параметры: площадь, этаж, число комнат, тип дома, + состояние ремонта. Имя, паспортные данные и правоустанавливающие + документы на объект Оператором не запрашиваются.

    - Самостоятельной кнопки «удалить мои данные» в интерфейсе пока нет, но - механизм удаления в сервисе есть: обращение в поддержку об удалении мы - разбираем вручную и физически стираем телефон, адрес и расчёт из базы, - а не просто помечаем запись. Помимо запроса, для каждого типа данных - установлен срок хранения, по истечении которого они подлежат - удалению. Если результат расчёта оплачен, ссылка на отчёт и - связанные с ним данные хранятся на нашей стороне{" "} - {PAID_REPORT_RETENTION_MONTHS} месяцев с даты оплаты, а затем - подлежат удалению так же, как и остальные данные — на файл, который - вы скачали себе, это не влияет: мы его не отзываем, не изменяем и не - имеем к нему доступа. + 3.2. Адрес и параметры объекта сами по себе описывают объект + недвижимости, а не конкретного человека, и в отдельности от иных + данных не относятся к определённому физическому лицу — в связи с чем + не рассматриваются Оператором как персональные данные. +

    +

    + 3.3. Номер телефона обрабатывается Оператором только в том случае, + если пользователь самостоятельно принимает решение оставить заявку и + проставляет отдельную отметку о согласии на обработку персональных + данных в соответствии с Федеральным законом № 152-ФЗ. Без такой + отметки заявка не отправляется. Отметка о согласии по умолчанию не + проставлена — пользователь ставит её сам, осознанным действием. +

    +

    + 3.4. При оставлении заявки указанный пользователем номер телефона + сохраняется в привязке к конкретному адресу объекта, введённому этим + же пользователем. Именно с момента такой привязки совокупность данных + (телефон + адрес + факт обращения) рассматривается Оператором как + персональные данные пользователя, и на неё распространяются все + положения настоящей Политики в полном объёме. +

    +

    + 3.5. Дополнительно, при оплате Услуги на Сайте Оператор обрабатывает + номер телефона и/или адрес электронной почты, указанные пользователем + при оплате — для направления кассового чека в соответствии с + Федеральным законом от 22.05.2003 № 54-ФЗ, — а также технические + данные (IP-адрес, данные браузера и устройства), передаваемые в связи + с проведением платежа через платёжный сервис, подключённый Оператором.

    -

    Оператор

    - {LEGAL_ENTITY ? ( +

    4. Правовые основания обработки

    +

    + 4.1. Обработка номера телефона по заявке осуществляется на основании + отдельного согласия пользователя, выраженного проставлением отметки на + Сайте (п. 3.3), в соответствии со ст. 9 Федерального закона № 152-ФЗ. +

    +

    + 4.2. Обработка данных, указанных при оплате Услуги (п. 3.5), + осуществляется в целях исполнения договора, стороной которого является + пользователь (п. 5 ч. 1 ст. 6 Федерального закона № 152-ФЗ), а также + во исполнение обязанностей Оператора, установленных Федеральным + законом № 54-ФЗ. +

    + +

    5. Как обрабатываются данные при формировании расчёта

    +

    + 5.1. Введённый пользователем адрес объекта и его параметры (площадь, + этаж, число комнат, тип дома, состояние ремонта) передаются на сервер + Оператора и используются для подбора сопоставимых объектов + недвижимости — по сведениям о зарегистрированных сделках (в том числе + из открытых источников Росреестра), по объявлениям на партнёрских + площадках и, при недостатке иных данных, по оценочным моделям таких + площадок, используемым Оператором в качестве сверочных данных. +

    +

    + 5.2. Указанные в п. 5.1 данные об объекте сами по себе, в отрыве от + иных данных, не относятся к определённому физическому лицу и не + рассматриваются Оператором как персональные данные — в соответствии с + п. 3.2 настоящей Политики. +

    +

    + 5.3. На странице ввода адреса, доступной до момента отправки заявки + или оплаты, не используются счётчики и рекламные пиксели сторонних + сервисов; статические ресурсы страницы (шрифты и т. п.) подключаются с + домена Оператора. +

    + {PUBLIC_ESTIMATE_ENABLED ? null : (

    - {LEGAL_ENTITY.name}, ИНН {LEGAL_ENTITY.inn}, {LEGAL_ENTITY.address}. -

    - ) : ( -

    - Реквизиты оператора персональных данных и утверждённая политика - обработки будут опубликованы здесь до открытия публичного доступа к - сервису. До этого момента страница доступна не публично, а по прямой - ссылке. + 5.4. На сегодняшний день публичный расчёт по адресу на Сайте ещё не + открыт: форма адреса на главной странице работает только в браузере + пользователя — введённый адрес не передаётся на сервер Оператора и + нигде не сохраняется. Пункты 5.1–5.2 применяются с момента открытия + публичного расчёта.

    )} + +

    6. Сроки хранения и удаление данных

    +

    + 6.1. Если результат расчёта был оплачен пользователем, ссылка на отчёт + и связанные с ним данные хранятся Оператором в течение{" "} + {PAID_REPORT_RETENTION_MONTHS} месяцев с даты оплаты, после чего + подлежат удалению. На файл отчёта, ранее скачанный пользователем на + своё устройство, истечение этого срока не влияет — Оператор не + отзывает и не изменяет такой файл и не имеет к нему доступа после его + передачи пользователю. +

    +

    + 6.2. Для иных категорий персональных данных применяются сроки + хранения, необходимые для достижения целей обработки, указанных в + разделе 3, а также сроки, установленные законодательством РФ (в том + числе налоговым законодательством и законодательством о бухгалтерском + учёте). +

    +

    + 6.3. По истечении сроков хранения персональные данные подлежат + удалению или обезличиванию. +

    + +

    7. Отзыв согласия и удаление данных по обращению

    +

    + 7.1. Пользователь вправе в любой момент отозвать согласие на обработку + персональных данных, направив обращение в поддержку Оператора по + контактам, указанным в разделе 9 настоящей Политики. С момента + получения обращения Оператор прекращает использование номера телефона + пользователя для связи по соответствующей заявке. +

    +

    + 7.2. Обращения об отзыве согласия и об удалении данных рассматриваются + Оператором вручную. При удалении данных по обращению пользователя + Оператор физически удаляет телефон, адрес объекта и результат расчёта + из своих систем, а не ограничивается пометкой записи как неактивной. +

    +

    + 7.3. Помимо права на обращение, пользователь вправе получать + информацию об обработке своих персональных данных, требовать уточнения, + блокирования или уничтожения персональных данных, если они являются + неполными, устаревшими, неточными, незаконно полученными или не + являются необходимыми для заявленной цели обработки — в соответствии + со ст. 14 Федерального закона № 152-ФЗ. +

    + +

    8. Меры по защите персональных данных

    +

    + 8.1. Оператор применяет правовые, организационные и технические меры + для защиты персональных данных от неправомерного или случайного + доступа, уничтожения, изменения, блокирования, копирования, + распространения и иных неправомерных действий третьих лиц, в + соответствии со ст. 19 Федерального закона № 152-ФЗ. +

    + +

    + 9. Контакты Оператора по вопросам обработки персональных данных +

    +

    + E-mail:{" "} + + {SUPPORT_EMAIL} + +

    + {telegramHref ? ( +

    + Telegram:{" "} + + {SUPPORT_TELEGRAM_LABEL} + +

    + ) : null}
); diff --git a/tradein-mvp/frontend/src/app/mera-public/refund/page.tsx b/tradein-mvp/frontend/src/app/mera-public/refund/page.tsx new file mode 100644 index 00000000..c541b29c --- /dev/null +++ b/tradein-mvp/frontend/src/app/mera-public/refund/page.tsx @@ -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 ( +
+
+ + ← На главную + + +

Политика возврата денежных средств

+

+ сервис «МЕРА» (meraocenka.ru). Редакция от {LEGAL_DOCS_REVISION} +

+ +

1. Общие положения

+

+ 1.1. Настоящая Политика определяет условия, порядок и сроки возврата + денежных средств, уплаченных Заказчиком за услугу сервиса «МЕРА» на + сайте meraocenka.ru (далее — «Услуга»), стоимость которой составляет{" "} + {SERVICE_PRICE_RUB} (сто пятьдесят) рублей за один расчёт. +

+

+ 1.2. Настоящая Политика размещена в свободном доступе в сети Интернет + по адресу {PUBLIC_REFUND_URL} и является неотъемлемой частью{" "} + + Публичной оферты + + , размещённой по адресу {PUBLIC_OFFER_URL}. Оферта и настоящая + Политика применяются совместно; в случае противоречий между ними + приоритет имеет Оферта. +

+

+ 1.3. Услуга считается оказанной с момента отображения результата + расчёта Заказчику на сайте либо направления его на указанную + Заказчиком электронную почту — в зависимости от того, что наступит + раньше. После этого момента оплата по общему правилу возврату не + подлежит, за исключением случаев, перечисленных в разделе 3 настоящей + Политики. +

+ +

2. Кто принимает решение о возврате

+

+ 2.1. Решения о возврате денежных средств по основаниям, не требующим + обращения Заказчика (технический сбой — раздел 4), принимаются + автоматически системой сайта без участия сотрудников Исполнителя. +

+

+ 2.2. Решения о возврате денежных средств по обращениям Заказчика (п. + 3.3–3.4) рассматриваются сотрудником службы поддержки Исполнителя, + ответственным за обработку почтового ящика{" "} + + {SUPPORT_EMAIL} + + . Итоговое решение по спорным или нестандартным случаям принимает + директор {entity ? entity.shortName : "Исполнителя"} либо + уполномоченное им лицо. +

+ +

3. Условия возврата

+

3.1. Возврат не производится, если:

+
    +
  • + Услуга оказана надлежащим образом — результат расчёта был + сформирован и предоставлен Заказчику; +
  • +
  • + основанием для обращения является несогласие Заказчика с полученным + числовым значением расчёта (расчёт носит индикативный характер, что + не является основанием для возврата). +
  • +
+

3.2. Возврат производится в полном объёме в следующих случаях:

+
    +
  • + технический сбой на стороне сервиса — расчёт не был предоставлен + Заказчику после оплаты (подробно — раздел 4); +
  • +
  • + Заказчик отказался от Услуги до момента её фактического оказания (то + есть до появления результата на экране или в почте); +
  • +
  • + денежные средства были списаны повторно из-за технической ошибки + платёжной формы; +
  • +
  • + оплата была произведена без согласия владельца карты — при + подтверждении этого факта банком-эмитентом. +
  • +
+

+ 3.3. Для случаев, указанных в п. 3.2 (кроме технического сбоя, который + обрабатывается автоматически), Заказчик направляет обращение на{" "} + + {SUPPORT_EMAIL} + {" "} + с указанием даты и примерного времени оплаты, суммы и последних 4 цифр + карты. +

+

+ 3.4. Срок рассмотрения обращения и возврата — не позднее 10 (десяти) + рабочих дней с момента получения обращения Исполнителем. +

+ +

4. Отдельный случай: оплата прошла, а расчёт не сформирован

+

+ 4.1. Если после успешной оплаты сервис по техническим причинам не смог + сформировать результат расчёта (сбой, ошибка обработки данных, + недоступность сервиса) в течение 15 (пятнадцати) минут с момента + оплаты, Услуга считается неоказанной. +

+

+ 4.2. Возврат в этом случае производится автоматически, в полном + объёме, без необходимости обращения Заказчика с заявлением или + претензией. +

+

+ 4.3. Срок такого автоматического возврата — не позднее 3 (трёх) + рабочих дней с момента фиксации сбоя системой. +

+

+ 4.4. Если по истечении указанного срока возврат не поступил, Заказчик + вправе обратиться на{" "} + + {SUPPORT_EMAIL} + {" "} + — такое обращение рассматривается вне очереди. +

+ +

5. Способ возврата

+

+ 5.1. Возврат денежных средств во всех случаях производится тем же + способом, которым была произведена оплата (на ту же банковскую карту), + если иной способ не согласован с Заказчиком дополнительно. +

+

+ 5.2. Срок зачисления денежных средств на счёт Заказчика после инициации + возврата зависит от банка-эмитента карты Заказчика и обычно составляет + от 1 до 30 календарных дней — это правило платёжных систем, а не + Исполнителя. +

+ +

6. Права потребителя

+

+ 6.1. Настоящая Политика не ограничивает права Заказчика — физического + лица, установленные Законом РФ от 07.02.1992 № 2300-1 «О защите прав + потребителей». В части, где условия настоящей Политики противоречили бы + указанному Закону, применяются положения Закона. +

+ +

7. Контакты по вопросам возврата

+

+ E-mail:{" "} + + {SUPPORT_EMAIL} + +

+ {entity ? ( +

+ {entity.shortName}, ИНН {entity.inn}, ОГРН {entity.ogrn} +

+ ) : null} +
+
+ ); +} -- 2.45.3