fix(tradein/pii): удалить телефоны продавцов (NULL) + PII клиента (DROP) (#2217, #1969) #2303

Merged
lekss361 merged 1 commit from fix/tradein-pii-purge-phones-client into main 2026-07-03 20:21:47 +00:00
Owner

Закрывает #2217 (телефоны продавцов) + #1969 (PII клиента) — решения user зафиксированы в комментах issue.

#2217 — listings.phones → NULL (не DROP, решение user буквально):

  • Миграция 166: UPDATE listings SET phones = NULL WHERE phones IS NOT NULL (17342 строки).
  • Write-path остановлен в ОБОИХ зеркалах (cian.py + scraper-kit) — golden-parity тесты подтверждают синхронность.
  • Убрана мёртвая запись phones из LISTING_FIELD_PRIORITY (zero production callers).
  • management_companies.phones (другая сущность, УК/ТСЖ) не тронута.
  • Подтверждено: phones НЕ участвует в живом дедупе/matching.

#1969 — client_name/client_phone → DROP COLUMN (решение user буквально):

  • Миграция 167: ALTER TABLE trade_in_estimates DROP COLUMN IF EXISTS client_name, client_phone — нет VIEW/индексов, чисто.
  • Убраны из schemas/estimator.py (оба INSERT-пути)/frontend форм и типов.
  • client_email физически не существовало (только в Sentry-scrub allowlist) — трогать нечего.

code-reviewer: APPROVE (20 мин, учитывая необратимость данных — grep подтвердил отсутствие пропущенных референсов, golden-parity зелёные). Локально: uv run pytest → 3119 passed / 6 skipped (1 деселект известного флейка test_search_cache_hit); npm run type-check/lint — чисто.

Закрывает #2217 (телефоны продавцов) + #1969 (PII клиента) — решения user зафиксированы в комментах issue. **#2217 — listings.phones → NULL (не DROP, решение user буквально):** - Миграция 166: `UPDATE listings SET phones = NULL WHERE phones IS NOT NULL` (17342 строки). - Write-path остановлен в ОБОИХ зеркалах (cian.py + scraper-kit) — golden-parity тесты подтверждают синхронность. - Убрана мёртвая запись `phones` из `LISTING_FIELD_PRIORITY` (zero production callers). - `management_companies.phones` (другая сущность, УК/ТСЖ) не тронута. - Подтверждено: phones НЕ участвует в живом дедупе/matching. **#1969 — client_name/client_phone → DROP COLUMN (решение user буквально):** - Миграция 167: `ALTER TABLE trade_in_estimates DROP COLUMN IF EXISTS client_name, client_phone` — нет VIEW/индексов, чисто. - Убраны из schemas/estimator.py (оба INSERT-пути)/frontend форм и типов. - `client_email` физически не существовало (только в Sentry-scrub allowlist) — трогать нечего. code-reviewer: ✅ APPROVE (20 мин, учитывая необратимость данных — grep подтвердил отсутствие пропущенных референсов, golden-parity зелёные). Локально: `uv run pytest` → 3119 passed / 6 skipped (1 деселект известного флейка `test_search_cache_hit`); `npm run type-check`/`lint` — чисто.
lekss361 added 1 commit 2026-07-03 20:14:22 +00:00
fix(tradein/pii): удалить телефоны продавцов (NULL) + PII клиента (DROP) (#2217, #1969)
All checks were successful
CI / changes (pull_request) Successful in 9s
CI Trade-In / changes (pull_request) Successful in 10s
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m21s
CI Trade-In / backend-tests (pull_request) Successful in 1m46s
6f170504ba
- listings.phones: миграция 166 обнуляет данные; cian.py + scraper-kit
  serp.py (golden-parity зеркало) перестают читать offer.get("phones") на
  входе — write-path выключен у источника, колонка/поле в модели остаются.
  Мёртвая запись "phones" в LISTING_FIELD_PRIORITY убрана.
- trade_in_estimates.client_name/client_phone: миграция 167 дропает колонки;
  синхронно убраны из TradeInEstimateInput, обоих INSERT в estimator.py
  (основной путь + _empty_estimate), frontend TradeInEstimateInput и
  CRM-блока EstimateForm (поля "Имя клиента"/"Телефон").
- sentry_scrub.py и management_companies.phones не тронуты — вне scope.
lekss361 merged commit 0e2b4998c8 into main 2026-07-03 20:21:47 +00:00
lekss361 deleted branch fix/tradein-pii-purge-phones-client 2026-07-03 20:21:47 +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#2303
No description provided.