ADR-0058: Переименование доменного термина «Лот» → «Объект недвижимости» (Lot → PropertyObject)
Статус
Accepted
Дата
2026-07-14
Назначение
Зафиксировать единый канонический словарь механического переименования доменного термина
«Лот» → «Объект недвижимости» (Lot → PropertyObject) во всём ТЗ и коде, а также перечень
ложных срабатываний, которые трогать запрещено. Этот ADR — источник истины для переименования:
любой идентификатор, топик, таблица, индекс, файл или русская форма приводятся строго к канону ниже.
Контекст
- Термин «Лот» неоднозначен (жаргон каталога, конфликтует с «лот аукциона» и т. п.). Для единообразия и
ясности везде используем «Объект недвижимости» (
PropertyObject). - Продукт на стадии проектирования: спецификации нет, деплоя нет. Значит, breaking-переименования Kafka-топиков, PostgreSQL/ClickHouse-таблиц, колонок и индексов допустимы: обратная совместимость и миграции данных не требуются — переименование механическое, «как есть».
- Затронуты практически все сервисы:
chessboard(источник объектов и событий),catalog,favorites,selections,user-activity,crm,invest-analytics,dev-stats,investor-owner,rewards. - Риск: наивный
Lot→PropertyObjectи «лот»→«объект недвижимости» задевает похожие корни (слот,плотн*,slot,plotи др.). Поэтому канон дополнен разделом ложных срабатываний.
Решение
Применить Часть A (канон переименования) ко всем идентификаторам, событиям, топикам, таблицам, индексам, файлам и русским формам. Ничего из раздела «Ложные срабатывания» не переименовывать. Producer и consumer одного события обязаны использовать одинаковое новое имя топика.
A.1. Русские формы
| Было | Стало |
|---|---|
| «Лот» | «Объект недвижимости» |
| «лот / лота / лоты / лотов / лоту / лотом» | соответствующие падежные формы «объект недвижимости» |
A.2. Базовые идентификаторы
LotEntity→PropertyObjectEntity.LotId→PropertyObjectId;LotIds→PropertyObjectIds.LotStatus→PropertyObjectStatus;LotAvailabilityStatus→PropertyObjectAvailabilityStatus;LotCardStatus→PropertyObjectCardStatus;LotStatusSource→PropertyObjectStatusSource.LotNumber→PropertyObjectNumber.LotRooms→PropertyObjectRooms;LotAreaTotalM2→PropertyObjectAreaTotalM2;LotPropertyType→PropertyObjectPropertyType.
A.3. Проекции, карточки, модели
LotCard→PropertyObjectCard;LotListItemModel→PropertyObjectListItemModel.LotSnapshot/LotSnapshotModel→PropertyObjectSnapshot/PropertyObjectSnapshotModel;LotSourceSnapshotDocument→PropertyObjectSourceSnapshotDocument.LotDisplayOverride→PropertyObjectDisplayOverride;LotOverride→PropertyObjectOverride(LotOverrideView→PropertyObjectOverrideView;LotOverrideMutationResult→PropertyObjectOverrideMutationResult).LotBoost→PropertyObjectBoost.LotProject/LotDeveloper/LotBuildingSummaryModel→PropertyObjectProject/PropertyObjectDeveloper/PropertyObjectBuildingSummaryModel.LotPayback→PropertyObjectPayback;LotReliability→PropertyObjectReliability.LotAgentCommission→PropertyObjectAgentCommission;LotAgentCommissionCalculator→PropertyObjectAgentCommissionCalculator;LotCommissionResult→PropertyObjectCommissionResult;LotCommissionResultModel→PropertyObjectCommissionResultModel.LotTypeConfig→PropertyObjectTypeConfig;LotTypeMonthOverride→PropertyObjectTypeMonthOverride;LotTypeItemModel→PropertyObjectTypeItemModel;LotTypeListResult→PropertyObjectTypeListResult.LotWindowViewsDocument/LotWindowViewsInput→PropertyObjectWindowViewsDocument/PropertyObjectWindowViewsInput.LotTtfvModel→PropertyObjectTtfvModel;LotBounceModel→PropertyObjectBounceModel;LotAnalyticsParamsModel→PropertyObjectAnalyticsParamsModel;LotCellProjection→PropertyObjectCellProjection.
A.4. Просмотры и статистика
LotView→PropertyObjectView;LotViewId→PropertyObjectViewId.LotViewStats/LotViewStatsModel→PropertyObjectViewStats/PropertyObjectViewStatsModel.LotViewFact/LotViewFactRow→PropertyObjectViewFact/PropertyObjectViewFactRow.LotViewStarted/LotViewEnded/LotViewHeartbeat/LotViewDaily→PropertyObjectViewStarted/PropertyObjectViewEnded/PropertyObjectViewHeartbeat/PropertyObjectViewDaily.
A.5. Джобы и счётчики
LotHoldExpirationJob/LotHoldExpirationJobOptions→PropertyObjectHoldExpirationJob/PropertyObjectHoldExpirationJobOptions.LotsFreeCount/LotsTotalCount/LotsAvailable/LotsCount/LotsTotal→PropertyObjectsFreeCount/PropertyObjectsTotalCount/PropertyObjectsAvailable/PropertyObjectsCount/PropertyObjectsTotal.avgLotsPerSession/medianLotsPerSession/p90LotsPerSession/maxLotsPerSession→avgPropertyObjectsPerSession/medianPropertyObjectsPerSession/p90PropertyObjectsPerSession/maxPropertyObjectsPerSession.
A.6. События, консюмеры, команды
- Kafka-события:
LotViewEndedKafkaEvent→PropertyObjectViewEndedKafkaEvent;LotUpsertedKafkaEvent→PropertyObjectUpsertedKafkaEvent;LotStatusChangedKafkaEvent→PropertyObjectStatusChangedKafkaEvent;LotPriceChangedKafkaEvent→PropertyObjectPriceChangedKafkaEvent;LotMetricsUpdatedKafkaEvent→PropertyObjectMetricsUpdatedKafkaEvent. - Доменные события:
LotCardRecomputedEvent,LotStatusChangedEvent,LotViewStartedEvent,LotCreated,LotSold,LotReserved,LotReleased,LotBookedEvent,LotPriceChangedUnderHoldEvent,LotTypeConfigUpserted,LotTypeConfigDeletedEvent,LotTypeMonthOverridesReplacedEvent,LotDisplayOverrideChangedEvent→ соответствующиеPropertyObject*(напр.PropertyObjectCardRecomputedEvent,PropertyObjectReserved,PropertyObjectTypeConfigUpserted,PropertyObjectDisplayOverrideChangedEvent). - Консюмеры:
LotViewEndedConsumer→PropertyObjectViewEndedConsumer;LotViewEndedPopularityConsumer→PropertyObjectViewEndedPopularityConsumer. - Команды:
LotViewHeartbeatCommand/LotViewHeartbeatCommandHandler/LotViewHeartbeatCommandValidator→PropertyObjectViewHeartbeatCommand/PropertyObjectViewHeartbeatCommandHandler/PropertyObjectViewHeartbeatCommandValidator.
A.7. Kafka-топики (producer и consumer — одинаково)
| Было | Стало |
|---|---|
pin.user-activity.lot-view-ended.v1 | pin.user-activity.property-object-view-ended.v1 |
pin.chessboard.lot-upserted | pin.chessboard.property-object-upserted |
pin.chessboard.lot-status-changed | pin.chessboard.property-object-status-changed |
pin.chessboard.lot-price-changed | pin.chessboard.property-object-price-changed |
pin.chessboard.lots | pin.chessboard.property-objects |
pin.chessboard.crm-lot-status-dlq | pin.chessboard.crm-property-object-status-dlq |
pin.crm.lot-reserved | pin.crm.property-object-reserved |
pin.crm.lot-booked | pin.crm.property-object-booked |
pin.crm.lot-sold | pin.crm.property-object-sold |
pin.crm.lot-released | pin.crm.property-object-released |
pin.invest-analytics.lot-metrics | pin.invest-analytics.property-object-metrics |
A.8. Таблицы PostgreSQL / ClickHouse
| Было | Стало |
|---|---|
lots | property_objects |
lot_views | property_object_views |
lot_view_stats | property_object_view_stats |
lot_cards | property_object_cards |
lot_display_overrides | property_object_display_overrides |
lot_type_config | property_object_type_config |
lot_type_month_overrides | property_object_type_month_overrides |
lot_view_facts | property_object_view_facts |
lot_view_daily / lot_view_daily_mv | property_object_view_daily / property_object_view_daily_mv |
dim_lot | dim_property_object |
lot_price_history_facts | property_object_price_history_facts |
колонка lot_id | property_object_id |
A.9. Индексы и constraints
| Было | Стало |
|---|---|
ix_lots_* | ix_property_objects_* |
ix_lot_cards_* | ix_property_object_cards_* |
ux_favorites_user_lot | ux_favorites_user_property_object |
ux_favorites_anonymous_lot | ux_favorites_anonymous_property_object |
ux_selection_items_selection_lot | ux_selection_items_selection_property_object |
ux_bookings_active_lot | ux_bookings_active_property_object |
ux_lot_views_active_session_lot | ux_property_object_views_active_session_property_object |
ix_deals_lot_id | ix_deals_property_object_id |
chk_lot_views_duration_nonneg | chk_property_object_views_duration_nonneg |
ux_investor_properties_investor_lot_active | ux_investor_properties_investor_property_object_active |
ux_lot_overrides_lot_id | ux_property_object_overrides_property_object_id |
A.10. Файлы и папки
| Было | Стало |
|---|---|
api/.../get-lot.md | get-property-object.md |
api/.../get-lots.md | get-property-objects.md |
api/.../get-project-lots.md | get-project-property-objects.md |
domain/lot.md | domain/property-object.md |
domain/catalog-lot-card.md | domain/catalog-property-object-card.md |
lot-view-*.md | property-object-view-*.md |
events/lot-*.md | events/property-object-*.md |
facts/lot-view-facts.md | facts/property-object-view-facts.md |
dimensions/lot.md | dimensions/property-object.md |
chessboard/api/internal/lots/ | chessboard/api/internal/property-objects/ |
chessboard/api/public/lots/ | chessboard/api/public/property-objects/ |
A.11. Ложные срабатывания — НЕ переименовывать
Следующие вхождения не содержат термина «лот»/Lot и остаются без изменений:
- Русские корни:
слот/слоты/слотов;плотн*(плотность, уплотнение);глот*;вплоть. - Английские слова:
slot,pilot,allot,plot. - ClickHouse/SQL: агрегатная функция
argMax; тип индексаGIN; окончанияloGIN,oriGIN,marGIN,enGINe(совпадение по подстрокеGIN, не связано с объектами).
Область Действия
| Область | Входит | Не входит |
|---|---|---|
| Сервисы | chessboard, catalog, favorites, selections, user-activity, crm, invest-analytics, dev-stats, investor-owner, rewards | сервисы без термина «лот» (напр. profile, referral, identity) |
| Контракты | идентификаторы, доменные/Kafka-события, консюмеры, команды (A.2–A.7) | контракты из раздела ложных срабатываний (A.11) |
| Данные | таблицы, колонки, индексы, constraints PostgreSQL/ClickHouse (A.8–A.9) | argMax, GIN и прочие ложные совпадения |
| Документация | файлы/папки docs/06-services/** (A.10), ТЗ, glossary | — |
Последствия
Часть B. Все сервисы приводятся к канону
- Каждый сервис из области действия приводит свои идентификаторы, события, таблицы, индексы и доки к Части A — расхождений с каноном быть не должно.
- Топики producer↔consumer обязаны совпасть: после переименования продюсер и все консюмеры одного события используют одно и то же новое имя топика (A.7). Несовпадение = разорванный контракт (сообщения не доходят). Проверять парами producer/consumer при ревью.
- Breaking-переименования топиков/таблиц/индексов безопасны: спеки и деплоя нет, миграции данных не нужны.
- Glossary и ТЗ фиксируют «Объект недвижимости» как единственный доменный термин; «Лот» выводится из употребления (кроме исторических ссылок на этот ADR).
Обратные ссылки
Автоссылки: где используется этот документ.
- События (1): События dev-stats
- index.md (1): DevStats Service (Pin.DevStats)
Связанные документы
ТехЗадание.md,docs/00-overview/glossary.md— обновить термин на «Объект недвижимости».docs/06-services/chessboard/**,catalog/**,favorites/**,selections/**,user-activity/**,crm/**,invest-analytics/**,dev-stats/**,investor-owner/**,rewards/**— привести к канону.- ADR-0054 / ADR-0056 / ADR-0057 — события
lot-view-*и factslot_view_*переименованы по A.4/A.7/A.8.