| 1 |
Новая ссылка idealista от агента в WhatsApp |
🗄️ реестр квартир: черновик draft-… с
listing_urls; ⚙️ страница listing —
генерируется |
дубли ищутся по ссылке в одном месте; ссылка из переписки —
недоверенные данные, не открываем |
скрипт (черновик) → агент (разбор) |
| 2 |
Та же квартира у второго агентства |
🗄️ новая ссылка у того же объекта,
marketed_by_several_agencies: true; ⚙️ вторая страница
listing → тот же apartment |
объект один, объявлений много — иначе цены не сравнить |
агент; спорное — в журнал, решает Константин |
| 3 |
Новый агент написал в WhatsApp |
🗄️ реестр контактов: contact_id, роль,
works_at_company_id, цитаты; ⚙️ страница
agent |
контакт с доказательствами — факт переписки |
агент |
| 4 |
Новое агентство |
🗄️ реестр компаний: company_id, сайт; ⚙️ страница
agency; ✍️ предпочтения — в её ручной зоне |
название и сайт — факт; «как с ними торговаться» — вывод |
агент |
| 5 |
Адрес офиса агентства |
🧭 реестр гео нового репо по company_id: адрес,
lat/lon, geo_precision |
в реестры cl-cons-whats новые поля не добавляем
(PROPOSAL §2) |
агент по переписке или сайту → скрипт геокодирования |
| 6 |
Просмотр назначен или прошёл |
🗄️ реестр квартир visit_dates; ⚙️ строка
хронологии |
дата — факт переписки с msg_id |
агент |
| 7 |
Впечатление после просмотра («вид лучше у первой») |
✍️ ручная зона страницы apartment, с
msg_id |
оценка, а не поле |
агент |
| 8 |
Предложение цены (наше или встречное) |
🧭 реестр сделок: offers[] (дата, сумма, условия) у
deal; ⚙️ таблица цен и хронология на странице
deal |
переговоры — отдельная сущность; в реестры
cl-cons-whats не пишем |
агент со слов Константина и по переписке |
| 9 |
Изменение цены объявления (185 000 → 176 000 €) |
🗄️ текущая цена — price_eur_total в реестре квартир; 🧭
каждое изменение — событие в журнале .jsonl с
msg_id; ⚙️ история цены на странице
listing |
текущее значение одно, история не теряется |
агент |
| 10 |
Отказ — мой или их |
🗄️ status_in_conversation (rejected_by_me
/ rejected_by_them) — как сказано в переписке; 🧭 у
deal: outcome: lost, lost_by,
lost_reason из списка PROPOSAL §2 |
статус — факт переписки; причина из короткого списка — для сравнения
через полгода |
агент; причину спорную — Константин |
| 11 |
Квартира Ukio в аренду |
🧭 реестр объявлений с сайтов:
listing_id: ukio-<имя>-<номер>,
purposes: [rent_for_us], seen_at,
stale_after; 🧭 координаты — реестр гео,
geo_precision: street; ⚙️ страница
listing |
источник — сайт, а не переписка; цена динамическая; срок «весна
2027» — в требованиях поиска, не в назначении |
агент со страницы сайта |
| 12 |
Район (barri) |
🧭 реестр гео: codi_barri у каждой точки; ⚙️ страница
area |
район один на много объектов; код, а не строка — без разнобоя
написания |
скрипт (точка в полигоне Open Data BCN) |
| 13 |
Координаты объекта |
🧭 реестр гео по property_id / listing_id:
lat, lon, geo_precision,
источник; кэш ответов геокодера — realestate-geo-data/; ⚙️
frontmatter страниц и карта |
один факт — одно место; правила Nominatim требуют кэш |
скрипт (ICGC / Nominatim, 1 запрос в секунду) |
| 14 |
Catastro RC |
🧭 реестр гео: RC дома (14 символов) → building; полный
RC (20 символов) — у apartment; ⚙️ страница
building |
решает «угловой дом с двумя адресами» и «две квартиры в одном
доме» |
скрипт по адресу; агент — если RC прислал агент |
| 15 |
Предпочтение по переговорам («без задатка 1 % цену не несут») |
✍️ ручная зона страницы agency или agent,
с msg_id |
вывод из нескольких сообщений, не поле |
агент; правила «на будущее» — Константин |
| 16 |
Скорость ответа, язык агента |
🧭 реестр нового репо по contact_id (считает скрипт);
⚙️ страница agent |
считается подсчётом, руками не вписывать; в реестры
cl-cons-whats не добавляем |
скрипт |
| 17 |
VIP-факт о человеке (Ирина, Давид) |
_cons-project-context/1N-person-…md и
_cons-output-whatsapp-chat-exports/REGISTRY-whatsapp-people-vip-marks-and-facts-from-konstantin.json;
на страницах недвижимости — только ссылка |
факты Константина главнее выводов агентов; переписку Ирины не
цитируем |
Константин (слова) → агент (запись) |
| 18 |
Сабаренда своей квартиры |
соседний репо
cl-cons-barceloneta-apartment-sublet-listings; в базе —
ссылка и sublet_my_flat в purposes той же
квартиры |
у сабаренды свои площадки, тексты, фото и запрет хранить адрес |
агент в том репо |
| 19 |
Моя аренда у Давида Гарсии |
🗄️ реестр квартир
current-rented-flat-from-david-garcia,
topic: my_current_rental; 🧭 реестр гео — только центр
района, geo_precision: area;
purposes: [my_current_rental, sublet_my_flat] |
адрес по решению Константина не хранится; Давид — VIP, не агент
покупки |
агент; адрес — только если Константин разрешит |
| 20 |
Требования поиска «снять весной 2027» |
🧭 реестр требований: search-rent-spring-2027 — даты,
бюджет, районы, нужна ли прописка; ⚙️ страница search |
требования — отдельная сущность (как SavedSearch в
RESO); по ним фильтруется карта |
Константин (слова) → агент |
| 21 |
Требования «купить у пляжа» (ниже Pepe Rubianes, без перехода улиц с
машинами) |
🧭 реестр требований:
search-buy-barceloneta-near-beach; ⚙️ страница
search |
граница зоны — не barri, а слова Константина; Housfy и Tecnocasa
отсеялись бы фильтром |
Константин (слова) → агент |
| 22 |
Фото и видео квартиры |
файлы рядом с объектом, на странице — ссылки; в git — 🔮 решить
(размер) |
медиа из WhatsApp — чувствительные данные; в текст страницы не
вставлять |
скрипт выгрузки; решение о хранении — Константин |
| 23 |
Договор, задаток (arras), nota simple |
только у Константина (локально, вне git); 🧭 у deal —
факт «подписан / дата / сумма» |
личные документы — не для репозитория |
Константин |
| 24 |
Новая переписка WhatsApp целиком |
_cons-output-whatsapp-chat-exports/CHAT-whatsapp-*.jsonl |
первоисточник; база только ссылается на msg_id |
скрипт (шаг 1) |
| 25 |
Карта и GeoJSON |
⚙️ из реестров cl-cons-whats и реестров нового
репо |
правка руками потеряется при следующей сборке |
скрипт |