fix(mera-public): публичная копия — сервис не называет себя оценщиком, площадки-источники не названы #3342

Merged
lekss361 merged 1 commit from fix/mera-public-copy-legal-deplatforming into main 2026-09-03 06:57:12 +00:00
Owner

Что

Три юр-правки по документу владельца продукта «Сайт_МЕРА_v2» (31.08.2026). Правки были сделаны локально 31.08 и не закоммичены — на meraocenka.ru всё оставалось по-старому (проверено curl'ом 03.09: «оценщик не дал…», «стоимость фиксированная», Avito/Циан/ДомКлик поимённо).

  1. «Оценщик» про собственный алгоритм → «расчёт МЕРЫ»: витрина сделок (landing_showcase_deals.py, REJECTION_RULE/NOTE) и сноска статьи «Как оценить квартиру» (articles-content.ts). Комментарии/докстринги не тронуты.
  2. «Путь 2»: «стоимость услуг фиксированная и известна заранее» (TwoPathsV3.tsx).
  3. Названия площадок сняты из видимой копии лендинга и веб-отчёта. Канон — publicLabel + sourcePublicLabel() в src/lib/source-registry.ts: одна площадка = один номер «Источник N» и один цвет точки (цвет остаётся опознавателем между блоками), Росреестр под своим именем, неизвестный id → «Другой источник». Три реализации sourceLabel сведены к одной; sourceLabel() с реальными именами остаётся для админки (/scrapers/**, Topbar). Backend: якорь в confidence_explanation «по оценке Avito IMV» → «по оценочной модели площадки» (estimator.py). Подсказки геокодера «Yandex / Nominatim» / «по Яндексу» сняты из клиентских форм.

Гейт mera-public/__tests__/public-copy-no-platform-names.test.ts: сканирует mera-public/** + components/trade-in/** без комментариев, по Unicode-границе слова. Регистрозависимый намеренно (строчные id "avito" законны), поэтому капс-варианты и словоформы перечислены явно — «6202 ОБЪЯВЛЕНИЯ ДОМКЛИК» в статье первую версию гейта проходил.

Ревью (workflow, 5 линз × 3 опровергателя на находку, 62 агента)

Внесено: caps-«ДОМКЛИК» и «в оценщике МЕРЫ» в статье; расширенный список гейта; порядок плиток источников в ResultPanel (было «2 · 3 · Росреестр · 1 · 4»); estimator.py anchor_label; хинты геокодера.
Не в этом PR: клиентский PDF печатает реальные названия площадок → #3341. Ссылки на объявления на домены площадок — отдельное, не принятое решение.

После деплоя — обязательный ручной шаг

Текст витрины хранится в БД (landing_showcase_runs.rejection_rule, landing_showcase_deals.note), пересчёт (python -m app.tasks.landing_showcase_deals) никем не запланирован — на проде один прогон от 30.08. Деплой сам живой текст не сменит: после merge выполню UPDATE трёх подстрок («оценщик не дал» → «расчёт МЕРЫ не дал», «работу оценщика» → «работу расчёта», «промах оценщика» → «промах расчёта») на Selectel и проверю HTML лендинга.

Проверки

  • tsc --noEmit — чисто; vitest mera-public + trade-in + lib — 29 файлов / 254 теста зелёные (в полном прогоне 2 старых падения LoginPage.test.tsx, к правке не относятся); next lint, check:mera-public-isolation — ок.
  • backend: ruff чисто; pytest tests/test_landing_showcase_deals.py tests/test_2677_house_anchor_repair_basis.py — 20 passed.
  • scripts/smoke-mera-perimeter.sh против прода — ALL CHECKS PASSED.

🤖 Generated with Claude Code

https://claude.ai/code/session_01F7jNyTNUDswvvhkyqyyJtH

## Что Три юр-правки по документу владельца продукта «Сайт_МЕРА_v2» (31.08.2026). Правки были сделаны локально 31.08 и **не закоммичены** — на meraocenka.ru всё оставалось по-старому (проверено curl'ом 03.09: «оценщик не дал…», «стоимость фиксированная», Avito/Циан/ДомКлик поимённо). 1. **«Оценщик» про собственный алгоритм** → «расчёт МЕРЫ»: витрина сделок (`landing_showcase_deals.py`, REJECTION_RULE/NOTE) и сноска статьи «Как оценить квартиру» (`articles-content.ts`). Комментарии/докстринги не тронуты. 2. **«Путь 2»**: «стоимость **услуг** фиксированная и известна заранее» (`TwoPathsV3.tsx`). 3. **Названия площадок сняты из видимой копии** лендинга и веб-отчёта. Канон — `publicLabel` + `sourcePublicLabel()` в `src/lib/source-registry.ts`: одна площадка = один номер «Источник N» и один цвет точки (цвет остаётся опознавателем между блоками), Росреестр под своим именем, неизвестный id → «Другой источник». Три реализации `sourceLabel` сведены к одной; `sourceLabel()` с реальными именами остаётся для админки (`/scrapers/**`, Topbar). Backend: якорь в `confidence_explanation` «по оценке Avito IMV» → «по оценочной модели площадки» (`estimator.py`). Подсказки геокодера «Yandex / Nominatim» / «по Яндексу» сняты из клиентских форм. Гейт `mera-public/__tests__/public-copy-no-platform-names.test.ts`: сканирует `mera-public/**` + `components/trade-in/**` без комментариев, по Unicode-границе слова. Регистрозависимый намеренно (строчные id `"avito"` законны), поэтому капс-варианты и словоформы перечислены явно — «6202 ОБЪЯВЛЕНИЯ ДОМКЛИК» в статье первую версию гейта проходил. ## Ревью (workflow, 5 линз × 3 опровергателя на находку, 62 агента) Внесено: caps-«ДОМКЛИК» и «в оценщике МЕРЫ» в статье; расширенный список гейта; порядок плиток источников в `ResultPanel` (было «2 · 3 · Росреестр · 1 · 4»); `estimator.py` anchor_label; хинты геокодера. Не в этом PR: клиентский PDF печатает реальные названия площадок → #3341. Ссылки на объявления на домены площадок — отдельное, не принятое решение. ## После деплоя — обязательный ручной шаг Текст витрины **хранится в БД** (`landing_showcase_runs.rejection_rule`, `landing_showcase_deals.note`), пересчёт (`python -m app.tasks.landing_showcase_deals`) никем не запланирован — на проде один прогон от 30.08. Деплой сам живой текст не сменит: после merge выполню UPDATE трёх подстрок («оценщик не дал» → «расчёт МЕРЫ не дал», «работу оценщика» → «работу расчёта», «промах оценщика» → «промах расчёта») на Selectel и проверю HTML лендинга. ## Проверки - `tsc --noEmit` — чисто; `vitest` mera-public + trade-in + lib — 29 файлов / 254 теста зелёные (в полном прогоне 2 старых падения `LoginPage.test.tsx`, к правке не относятся); `next lint`, `check:mera-public-isolation` — ок. - backend: `ruff` чисто; `pytest tests/test_landing_showcase_deals.py tests/test_2677_house_anchor_repair_basis.py` — 20 passed. - `scripts/smoke-mera-perimeter.sh` против прода — ALL CHECKS PASSED. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01F7jNyTNUDswvvhkyqyyJtH
lekss361 added 1 commit 2026-09-03 06:51:31 +00:00
fix(mera-public): публичная копия — сервис не называет себя оценщиком, площадки-источники не названы
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 11s
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 1m7s
CI Trade-In / backend-tests (pull_request) Successful in 5m2s
5541aa9d37
Три юр-правки по документу владельца продукта «Сайт_МЕРА_v2» (31.08.2026), сделаны
локально 31.08, но не были закоммичены — на meraocenka.ru всё оставалось по-старому.

1. «Оценщик» про собственный алгоритм. Витрина сделок (`landing_showcase_deals.py`,
   REJECTION_RULE/NOTE) и сноска статьи «Как оценить квартиру» теперь говорят
   «расчёт МЕРЫ»: самоназвание обесценивало дисклеймер «не официальный отчёт оценщика».
   Комментарии и докстринги не тронуты — посетитель их не видит.
2. «Путь 2»: «стоимость услуг фиксированная и известна заранее» — читалось как
   фиксированная цена квартиры.
3. Названия площадок убраны из видимой копии лендинга и веб-отчёта. Канон —
   `publicLabel` + `sourcePublicLabel()` в `source-registry.ts`: одна площадка = один
   номер «Источник N» и один цвет точки (цвет остаётся опознавателем между блоками),
   Росреестр под своим именем, неизвестный id → «Другой источник» (раньше fallback
   отдавал сырой id). Три параллельные реализации `sourceLabel` сведены к одной;
   `sourceLabel()` с реальными именами живёт для админки. Backend: якорь
   confidence_explanation «по оценке Avito IMV» → «по оценочной модели площадки».
   Подсказки геокодера «Yandex / Nominatim» и «по Яндексу» сняты из клиентских форм.

Гейт `public-copy-no-platform-names.test.ts` сканирует mera-public/** и
components/trade-in/** без комментариев, по Unicode-границе слова; список запретов
регистрозависимый намеренно (строчные id `"avito"` законны), поэтому капс-варианты
и словоформы перечислены явно — «6202 ОБЪЯВЛЕНИЯ ДОМКЛИК» в статье именно так
проходил первую версию гейта.

Не закрыто здесь: клиентский PDF (#3341) и ссылки на объявления на доменах площадок.

Текст витрины хранится в БД (`landing_showcase_runs.rejection_rule`,
`landing_showcase_deals.note`), планировщика у пересчёта нет — после деплоя нужен
ручной пересчёт или UPDATE трёх подстрок на проде.
lekss361 merged commit 34e84ed0ed into main 2026-09-03 06:57:12 +00:00
lekss361 deleted branch fix/mera-public-copy-legal-deplatforming 2026-09-03 06:57:13 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3342
No description provided.