Commit graph

  • d8d76be86d Memory: +rel Project_GenDesign→SiteFinder_v0_2_May08 (deploys), SiteFinder_v0_2_May08→MVP_Scope_AreaSelect_Apr25 (contradicts... (2026-05-10 22:44:45 +05) Light1YT 2026-05-10 22:44:45 +05:00
  • 32a9666f68 Memory: +ent SiteFinder_v0_2_May08 (2026-05-10 22:43:45 +05) Light1YT 2026-05-10 22:43:45 +05:00
  • 97b19a0b85 Import Site Finder app from analysis/ vibe-coding session Light1YT 2026-05-10 22:42:25 +05:00
  • 20625f78f3 fix ui lekss361 2026-05-10 20:16:26 +03:00
  • 7c05d0a0d8 feat(objective): full sync pipeline + dynamic admin config lekss361 2026-05-10 19:54:15 +03:00
  • 12732949b9 ignore lekss361 2026-05-07 21:04:38 +03:00
  • aaa5d44e77 feat(objective): integrate api.objctv.ru — auth, schema, weekly sync backend/app/services/scrapers/objective.py: ObjectiveClient — GetToken (Bearer cached в Redis 25 min TTL) + GetReport v2 с UseDdu/UseDkp. 4 высокоуровневых метода: report_corpuses_summary, report_lots_summary, report_corpuses_per_flat, report_lots_per_flat. Retry 401/429/5xx, rate-limit 500ms, brotli. backend/app/workers/tasks/scrape_objective.py: Celery task sync_objective_group — еженедельно тянет 4 канон. отчёта по группе, raw payload в objective_raw_reports. celery_app.py: +include + beat «0 5 * * mon». data/sql/68_schema_objective.sql: 6 таблиц — runs, raw_reports (jsonb), oks (готовые ТЭП + escrow/debt), lots, lots_history (per-flat per-day), complex_mapping (Objective ↔ domrf_kn_objects, is_reviewed workflow). data/sql/69_objective_smoke.py: stand-alone GetToken + 4 отчёта → data/raw/objective_smoke/<ts>/. Используется один раз чтобы понять реальную схему payload перед написанием parser-слоя. config: OBJECTIVE_API_KEY, OBJECTIVE_DEFAULT_GROUP=Екатеринбург, OBJECTIVE_SYNC_CRON='0 5 * * mon'. lekss361 2026-05-07 21:04:00 +03:00
  • b44c7f157e fix(analytics): bucket by area/deal_count — rosreestr aggregates packed deals Critical bug в quartirography() и _BUCKET_SQL: rosreestr с 2025Q1 публикует пакетные ДДУ одной строкой (area=SUM, deal_count=N). Bucket по сырой area загонял 5×40м² в bucket «80+ м²», давая 70% портфеля 80+ вместо реальных 4%. Изменения: - area → (area / deal_count) при bucket'инге - COUNT(*) → SUM(deal_count) для подсчёта реальных квартир - удалён area<=200 фильтр (отрезал 95% свежих агрегированных строк, realestate_type_code='002001003000' уже фильтрует не-квартиры) Эффект: - Dashboard chart «парадокс портфеля»: 80+ был 70% → стал 3.1% - recommend_mix shares: 1-к 58%, 2-к 29%, 3-к 5%, Студии 4%, 80+ 4% - total_deals для Свердл за 24 мес: 7553 → 40084 (агрегация теперь учтена) lekss361 2026-05-03 18:31:38 +03:00
  • f80a2c1d05 fix(scrape): SQLAlchemy text() парсил ':00:' regex как named-param lekss361 2026-04-30 23:16:11 +03:00
  • bb28f77f66 fix+chore: NSPD migration applied to prod, README trim, analytics backlog +5 lekss361 2026-04-30 23:04:19 +03:00
  • e22f86bc06 audit-fix: 27mo окно, MODE bucket, индексы recommend_mix lekss361 2026-04-30 22:41:43 +03:00
  • 78b8d7aa00 add NSPD lekss361 2026-04-30 22:23:18 +03:00
  • db6711446a fix lekss361 2026-04-30 22:16:44 +03:00
  • 25b73035a1 sprint1: nspd scraper industrialization, per-bucket elasticity, cadastre cross-check, sentry releases lekss361 2026-04-30 21:51:19 +03:00
  • b39bac57bf upd recommend sys lekss361 2026-04-29 08:39:09 +03:00
  • 132d57a3f3 fix recommend page lekss361 2026-04-29 08:16:22 +03:00
  • 17ad0e18f5 feat(geo): ЖК → district mapping через PostGIS-полигоны OSM (Limit_District_Geometry closed) lekss361 2026-04-29 08:03:38 +03:00
  • 195d942ca7 feat: Tier α velocity overhaul + scraper FK fixes lekss361 2026-04-29 00:25:41 +03:00
  • b74c7db438 fix(scraper): closing FK violations + transactional poisoning in upsert_objects lekss361 2026-04-28 23:56:27 +03:00
  • d1f2380f32 fix(sqlalchemy): убрать :name::type — psycopg3 их не парсит, ломает Phase A INSERT в kn_scrape_runs (run_region_sweep крашится сразу с ProgrammingError, task_received записан, но run_id никогда не создаётся). 4 места: domrf_kn.py (resume INSERT, new run INSERT, snapshot UPDATE) + admin_leads.py (date_to filter). Заменено на CAST(:name AS type). lekss361 2026-04-28 23:37:03 +03:00
  • c3bc96535d fix(scraper): диагностируем «кнопка не работает» — Redis lock + task_received log lekss361 2026-04-28 23:17:42 +03:00
  • 7a23aa9edc fix: heartbeat-based zombie autoclean (10min) + Phase A heartbeats; ship recommend velocity calculator lekss361 2026-04-28 22:54:03 +03:00
  • 1507575698 fix alch lekss361 2026-04-27 22:03:48 +03:00
  • 8dda3903e5 add log scrapper lekss361 2026-04-27 21:50:44 +03:00
  • 62659887e9 add rec ui lekss361 2026-04-27 21:38:37 +03:00
  • ecc0dbafd5 add predict lekss361 2026-04-27 21:28:02 +03:00
  • 12b1eb8169 add logs lekss361 2026-04-27 20:51:44 +03:00
  • a56216aeb9 fix ui lekss361 2026-04-27 20:42:18 +03:00
  • b3c15bb8ea fix ui lag lekss361 2026-04-27 20:26:55 +03:00
  • c079ac2a77 fix photo lekss361 2026-04-27 20:06:18 +03:00
  • 5056438fcf add anal4 lekss361 2026-04-27 19:45:47 +03:00
  • 522ecca5c4 ship #13-16: multi-target Dockerfile, per-object drill-in, CRM pipeline, 442-sweep instructions #16 Dockerfile: runner (lean, 1.6 GB) + runner-with-chromium (2.9 GB). Compose + deploy.yml pushes 2 GHCR images. Backend saves 1.3 GB. #15 5 backend object endpoints + /analytics/objects/[id] page (gallery, POI table, sale chart) + sparkline-driven PrinzipObjectsTable. #14 prinzip_leads/deals + 2 MVs. Import script with PII-hashing & --inspect-only mode. 3 funnel endpoints + Sankey/Monthly charts. #13 README section with UI/CLI/SQL for 442-object sweep. lekss361 2026-04-27 19:32:37 +03:00
  • 7c4197000f add monitor scrappers lekss361 2026-04-27 19:04:01 +03:00
  • bfee5ea916 fix lekss361 2026-04-27 18:59:56 +03:00
  • 692a4fc5eb add log lekss361 2026-04-27 18:52:21 +03:00
  • 75c2025ba0 redme lekss361 2026-04-27 18:40:44 +03:00
  • 6d3fa8cbd2 add domrf extras parser (sale_graph + sales_agg + infra + photos) + fix Docker build for playwright lekss361 2026-04-27 18:35:46 +03:00
  • 621d56c064 fix lekss361 2026-04-27 18:12:57 +03:00
  • 1ae4c9522d fix lekss361 2026-04-27 18:04:00 +03:00
  • 79070bfe99 add interactive parser of наш.дом.рф ЖК+flats with stealth Playwright - Discovered real endpoints via chrome-devtools: /сервисы/api/kn/object (offset/limit/place/objStatus) + /portal-kn/api/sales/portal/table. Server-side filter ignored — local filter by developer.companyGroup. - Pure Playwright in-context fetch (httpx blocked by ServicePipe TLS-fp). - Saved fingerprint state in data/playwright_state.json for server reuse. - Celery beat (configurable cron + jitter) + admin trigger endpoint + /admin/scrape UI page. - Schema migration: UNIQUE(id, snapshot_date) for versioned snapshots, kn_scrape_runs journal. - Smoke-tested on PRINZIP: 28 ЖК / 826 квартир as expected. lekss361 2026-04-27 17:58:40 +03:00
  • 8d3a0874ef add interactive analytics dashboard for Sverdlovsk market and PRINZIP lekss361 2026-04-27 16:55:30 +03:00
  • 16481868a6 add anal 2 lekss361 2026-04-27 13:05:36 +03:00
  • c13cbaef2e add data lekss361 2026-04-26 22:30:52 +03:00
  • a2dcd9844a add link lekss361 2026-04-26 18:35:55 +03:00
  • e84115a185 add nspd lekss361 2026-04-26 18:20:59 +03:00
  • a5e5ad31e6 add rosreestr lekss361 2026-04-26 17:40:05 +03:00
  • 6c90c79859 anal.. lekss361 2026-04-26 17:14:44 +03:00
  • a2728637ad anal 3 lekss361 2026-04-26 16:04:11 +03:00
  • 0569ccdcf3 anal2 lekss361 2026-04-26 15:30:02 +03:00
  • ae8abf9f15 domrf api lekss361 2026-04-26 15:21:53 +03:00
  • 14a9b1415e add anal lekss361 2026-04-26 15:18:31 +03:00
  • b132091fe7 docs+memory: HTTPS live, Apr26 catch-up lekss361 2026-04-26 14:50:17 +03:00
  • b7230f1bc8 deploy.yml: sync compose+Caddyfile from git, reload caddy after up lekss361 2026-04-26 14:26:57 +03:00
  • 1f9dde2bf3 backend: pin setuptools package to app/ lekss361 2026-04-26 13:59:54 +03:00
  • a1633bf6db docs+memory: catch up — domain, Sentry, ops bundle, prod wipe Apr26 lekss361 2026-04-26 13:42:55 +03:00
  • 6c4ba1777a deploy.yml: sync compose+Caddyfile from git, reload caddy after up lekss361 2026-04-26 13:31:26 +03:00
  • 4f034bd86b ops: alembic baseline, pre-commit, TIGER cleanup, pg_dump scripts - backend/alembic/* — alembic infra (env.py, script.py.mako). versions/ empty for now; first migration goes in Stage 2a when models are finalized. - backend/Dockerfile: bake alembic.ini + alembic/ into the image so docker compose exec backend alembic upgrade head works in prod. - backend/db/init/99_drop_unused_extensions.sql + bind-mount in both compose files: drops postgis-image's TIGER/topology/fuzzystrmatch on fresh volumes. - .pre-commit-config.yaml + pre-commit in dev deps: ruff/prettier on commit to stop CI failures like UP035 from leaking out. - ops/backup.sh, ops/restore.sh: pg_dump cron script with optional Selectel S3 upload. 7-day local retention. Restore guard: requires RESTORE_CONFIRM=yes. - Makefile: new targets make migration NAME=..., make pre-commit-install. - backend/.env.example: SENTRY_DSN comment with sentry.io reference. lekss361 2026-04-26 13:08:51 +03:00
  • 68e95aa1ce ops: real domain in Caddyfile + ignore egg-info lekss361 2026-04-26 12:49:20 +03:00
  • 08a63f611d backend: fix mypy errors in geometry stub - empty_buildings: dict → dict[str, Any] (mypy strict needs type args) - drop unused # type: ignore[arg-type] on strategy= (mypy now narrows the loop variable to Literal[...] from a tuple of literals) lekss361 2026-04-26 11:02:22 +03:00
  • d0909e6200 backend: ruff lint fixes lekss361 2026-04-26 10:53:50 +03:00
  • e22aeb9b5a Docker: multi-stage backend, npm ci, healthcheck fix, same-origin API lekss361 2026-04-26 10:46:36 +03:00
  • c8b2cc8152 fix lekss361 2026-04-25 20:59:26 +03:00
  • 9d95b80b54 test lekss361 2026-04-25 20:33:13 +03:00
  • 4bd70cde06 Memory: catch up — hosting research, sales tracking, plan A, runbook, hardening lekss361 2026-04-25 20:29:07 +03:00
  • 09b9f18d3f Add empty frontend/public/ for Next.js standalone Docker build lekss361 2026-04-25 20:04:04 +03:00
  • 93c5f3f4a9 Fix frontend build: react-leaflet v5 + npm legacy-peer-deps lekss361 2026-04-25 20:00:55 +03:00
  • 21882182be ix Dockerfile: remove invalid conditional COPY lekss361 2026-04-25 19:56:19 +03:00
  • b49cebb577 GHCR migration + env defaults + memory updates lekss361 2026-04-25 19:47:07 +03:00
  • 384d4d5489 Fix env defaults: use Docker network hostnames + parametrize compose lekss361 2026-04-25 19:36:10 +03:00
  • 18ade1e252 Memory: hosting research + sales tracking + plan A pivot + VPS runbook lekss361 2026-04-25 19:18:44 +03:00
  • 1dcaff0ea2 Memory: ~ent MVP_Scope_AreaSelect_Apr25 (2026-04-25 16:17:12 +05) Light1YT 2026-04-25 16:17:12 +05:00
  • ed54d148f9 Memory: ~ent MVP_Scope_AreaSelect_Apr25 (2026-04-25 16:16:11 +05) Light1YT 2026-04-25 16:16:11 +05:00
  • 917391f045 Memory: ~ent MVP_Scope_AreaSelect_Apr25 (2026-04-25 16:15:11 +05) Light1YT 2026-04-25 16:15:11 +05:00
  • 726942cd72 Memory: +rel MVP_Scope_AreaSelect_Apr25→NorthStar_DiscoveryMVP (informs), MVP_Scope_AreaSelect_Apr25→Project_GenDesign (refin... (2026-04-25 16:10:12 +05) Light1YT 2026-04-25 16:10:12 +05:00
  • d61a5a5e82 Memory: +ent MVP_Scope_AreaSelect_Apr25 (2026-04-25 16:09:11 +05) Light1YT 2026-04-25 16:09:11 +05:00
  • 29e84e5df9 Memory: non-structural change (2026-04-25 16:01:17 +05) Light1YT 2026-04-25 16:01:17 +05:00
  • 1df2e74f2e Memory: non-structural change (2026-04-25 16:00:17 +05) Light1YT 2026-04-25 16:00:17 +05:00
  • b95559eac9 init lekss361 2026-04-25 13:45:19 +03:00
  • d66086575a Track memory graph via hardlink to C:\mcp\.aim\memory-gendesign.jsonl lekss361 2026-04-25 08:48:59 +03:00
  • f170ef4d35 Merge remote README, keep local lekss361 2026-04-25 08:45:06 +03:00
  • 1c47f781f0 Initial commit: Discovery MVP docs (v2.1 + v2.2) lekss361 2026-04-25 08:40:09 +03:00
  • 345695f75f
    Initial commit lekss361 2026-04-25 08:37:05 +03:00