Commit graph

  • 2226b16cd3 fix(scheduler): atomic _claim_run via advisory xact lock (Refs #750) (#752) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 16:04:33 +00:00
  • 9f950a5f17 fix(scheduler): atomic _claim_run via advisory xact lock (Refs #750) bot-backend 2026-05-30 19:01:37 +03:00
  • 93f85154a5 fix(tradein): gate «0,00 млн ₽» в не-headline секциях при insufficient_data (#748) (#751) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 15:58:19 +00:00
  • fe2f79792f fix(tradein): gate «0,00 млн ₽» в не-headline секциях при insufficient_data bot-frontend 2026-05-30 18:55:47 +03:00
  • a74591d7cc fix(tradein): atomic conditional quota increment — close TOCTOU (#747) (#749) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 15:52:34 +00:00
  • 850642548e fix(tradein): atomic conditional quota increment — close TOCTOU (#747) bot-backend 2026-05-30 18:49:41 +03:00
  • 1b8e3b1f25 fix(tradein): confidence «средняя» → amber + FIXME для compsTier (#742) (#746) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 15:44:37 +00:00
  • 6762a532eb feat(scrapers): wire N1.ru city sweep — pipeline + scheduler + admin endpoint (#575) (#745) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 15:43:38 +00:00
  • 0e76183efa fix(tradein): confidence «средняя» → amber + FIXME для compsTier bot-frontend 2026-05-30 18:40:57 +03:00
  • 2390c49d12 fix(tradein): guard деления на median=0 в ListingsCard/DealsCard (#741) (#744) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 15:40:01 +00:00
  • 8204802d36 feat(scrapers): wire N1.ru city sweep — pipeline + scheduler + admin endpoint (#575) bot-backend 2026-05-30 18:39:36 +03:00
  • 798fb12b4c feat(tradein): HeroSummary empty-state при insufficient_data (#740) (#743) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 15:37:13 +00:00
  • 7f46d6774e fix(tradein): guard деления на median=0 в ListingsCard/DealsCard bot-frontend 2026-05-30 18:36:32 +03:00
  • 9af88ebaa5 feat(tradein): HeroSummary empty-state при insufficient_data bot-frontend 2026-05-30 18:33:26 +03:00
  • 34a13d71c3 fix(tradein): sync n_analogs to anchor count when anchor drives headline (#695) (#739) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 15:25:35 +00:00
  • d688d24a12 fix(tradein): sync n_analogs to anchor count when anchor drives headline (#695) bot-backend 2026-05-30 18:23:30 +03:00
  • 2b3eb0b23d fix(tradein): confidence_explanation no longer contradicts counters (#695) (#738) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 15:10:31 +00:00
  • e6e2a2cdc4 fix(tradein): confidence_explanation no longer contradicts counters (#695) bot-backend 2026-05-30 18:07:44 +03:00
  • 83f3d70859 docs(tradein): clarify n_analogs vs analogs[] top-10 cap (#698) (#737) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 15:00:48 +00:00
  • 6647a9a8c1 docs(tradein): clarify n_analogs vs analogs[] top-10 cap (#698) bot-backend 2026-05-30 17:58:11 +03:00
  • 14541d4951 Merge pull request 'chore(agents): auto-resolver human-proxy persona для needs-human' (#735) from feat/auto-resolver-persona into main lekss361 2026-05-30 14:42:17 +00:00
  • bc3ecf80cc chore(agents): add auto-resolver human-proxy persona for needs-human queue lekss361 2026-05-30 17:40:36 +03:00
  • ef7b5f8c54 feat(tradein): insufficient_data flag on AggregatedEstimate (#697) (#734) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 14:40:04 +00:00
  • 01cc7057cd feat(tradein): insufficient_data flag on AggregatedEstimate (#697) bot-backend 2026-05-30 17:38:52 +03:00
  • 066fab11d3 fix(tradein): sanitize ДКП deal outliers (floor / ppm²) (#699) (#733) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 14:31:44 +00:00
  • d5ed6f0fe4 fix(tradein): sanitize ДКП deal outliers (floor / ppm²) (#699) bot-backend 2026-05-30 17:29:29 +03:00
  • e94929159b fix(scrapers): avito listing_date from sortTimeStamp JSON (#726) (#729) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 14:13:38 +00:00
  • d6dca24ea2 fix(scrapers): avito listing_date from sortTimeStamp JSON (#726) bot-backend 2026-05-30 17:09:41 +03:00
  • 1f3008d59e feat(tradein): street_only disclaimer in StreetDealsCard (#722) (#725) Co-authored-by: bot-frontend <bot-frontend@gendsgn.local> Co-committed-by: bot-frontend <bot-frontend@gendsgn.local> bot-frontend 2026-05-30 13:44:30 +00:00
  • 1699c1ced9 feat(tradein): street_only disclaimer in StreetDealsCard bot-frontend 2026-05-30 16:40:56 +03:00
  • 575d9abbf7 feat(tradein): add data_quality flag to /sales-vs-listings (#721) (#723) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 13:21:08 +00:00
  • 1917b6dbf7 feat(tradein): add data_quality flag to /sales-vs-listings (#721) bot-backend 2026-05-30 16:18:01 +03:00
  • a79cf7d5e0 fix(tradein): coarse-geo downgrade no longer shielded by Tier C anchor (#693) (#720) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 12:34:11 +00:00
  • 090a5c6e91 fix(tradein): coarse-geo downgrade no longer shielded by Tier C anchor (#693) bot-backend 2026-05-30 15:27:16 +03:00
  • 406ea8365a feat(health): expose app version in GET /health (#717) (#719) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 12:15:06 +00:00
  • d07d10f1df feat(health): expose app version in GET /health bot-backend 2026-05-30 15:13:03 +03:00
  • 0e2bba78b7 fix(tradein): coarse-geo downgrade works without DaData on prod (#693) (#718) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 12:08:56 +00:00
  • 29222585d0 fix(tradein): coarse-geo downgrade works without DaData on prod (#693) bot-backend 2026-05-30 15:04:16 +03:00
  • f148007792 docs(main): add module docstring to backend/app/main.py (#716) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 11:43:20 +00:00
  • 34147d3933 docs(main): add module docstring to backend/app/main.py bot-backend 2026-05-30 14:41:20 +03:00
  • bc9d277309 Merge pull request 'docs(bots): label IDs table (goern add_issue_labels требует id)' (#715) from docs/label-ids into main lekss361 2026-05-30 11:36:52 +00:00
  • 049966ed6d docs(bots): label IDs table + goern add_issue_labels требует id не имя lekss361 2026-05-30 14:36:30 +03:00
  • db6137edf8 Merge pull request 'feat(qa): tester заводит bug-issue на новые баги' (#713) from fix/qa-creates-bug-tasks into main lekss361 2026-05-30 11:23:57 +00:00
  • fe27ad9dce feat(qa): tester заводит bug-issue на НОВЫЕ баги (не тестируемый issue) lekss361 2026-05-30 14:21:11 +03:00
  • 3e3112f2c3 Merge pull request 'fix(bots): qa-close bug (Closes→Refs) + minor-verdict → follow-up task' (#712) from fix/worker-pr-refs-not-closes into main lekss361 2026-05-30 11:15:34 +00:00
  • 627189a3e3 fix(bots): qa-close bug (Closes→Refs) + minor-verdict creates follow-up task lekss361 2026-05-30 14:11:05 +03:00
  • 466774dbd8 fix(tradein): rehydrate POST-only fields on GET /estimate/{id} (#696) (#710) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 11:05:52 +00:00
  • 6e8c19ebe2 Merge pull request 'fix(claude): quote agent descriptions — YAML frontmatter parse break' (#711) from fix/agent-frontmatter-yaml into main lekss361 2026-05-30 10:59:05 +00:00
  • 9b268e6950 fix(claude): quote agent descriptions — battle YAML frontmatter parse break lekss361 2026-05-30 13:56:55 +03:00
  • 5b13e517e5 fix(tradein): rehydrate POST-only fields on GET /estimate/{id} (#696) bot-backend 2026-05-30 13:32:59 +03:00
  • cffc91a1d8 test(tradein): fix /houses test broken by IDOR guard — unblock deploy (#690) (#709) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 09:34:31 +00:00
  • 5aae790729 test(tradein): add auth header to /houses test broken by IDOR guard (#690) lekss361 2026-05-30 12:31:20 +03:00
  • 961a3caf2b fix(tradein): surface same-building comps as analogs when anchor fires (#694) (#708) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 09:21:20 +00:00
  • 21356b00c5 fix(tradein): surface same-building comps as analogs when anchor fires (#694) lekss361 2026-05-30 12:05:27 +03:00
  • 9d94beae4f fix(tradein): flag coarse-geo estimates as low-confidence (#693) (#707) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 08:58:23 +00:00
  • 737599e690 fix(tradein): scope GET /estimate/{id} + /pdf to owner, close IDOR (#690) (#702) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 08:56:51 +00:00
  • 45a9db2f25 fix(tradein): flag coarse-geo estimates as low-confidence (#693) lekss361 2026-05-30 11:54:16 +03:00
  • bf55b4b80e fix(tradein): extend IDOR guard to all estimate_id routes (#690 review) lekss361 2026-05-30 11:47:47 +03:00
  • 96de6d8e58 fix(tradein-ui): eliminate mobile horizontal overflow on estimate result (#692) (#705) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 08:46:29 +00:00
  • 690d423c5a Merge pull request 'chore(bots): тугие /loop каденции под подписку (убрать cost-backoff)' (#706) from chore/loop-cadence-subscription into main lekss361 2026-05-30 08:43:20 +00:00
  • 261bbc40ec chore(bots): тугие /loop каденции под подписку (убрать cost-backoff) lekss361 2026-05-30 11:42:28 +03:00
  • ddbaa10ada Merge remote-tracking branch 'forgejo/main' into fix/690-idor-estimate-scope lekss361 2026-05-30 11:42:08 +03:00
  • 2942c09b0e fix(tradein-ui): eliminate mobile horizontal overflow on estimate result (#692) lekss361 2026-05-30 11:39:27 +03:00
  • f04728297b fix(tradein): run same-building anchor without radius analogs (#691) (#704) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 08:34:24 +00:00
  • 10626c21ae fix(tradein): dedupe last_scraped_at — fix frontend build/deploy (#703) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 08:32:04 +00:00
  • a5bb79bc59 fix(tradein): run same-building anchor without radius analogs (#691) lekss361 2026-05-30 11:25:59 +03:00
  • 6248880d53 fix(tradein): dedupe last_scraped_at in AggregatedEstimate (fix frontend build) lekss361 2026-05-30 11:25:41 +03:00
  • 5eeb12cff8 fix(tradein): scope GET /estimate/{id} + /pdf to owner, close IDOR (#690) lekss361 2026-05-30 11:20:48 +03:00
  • 88a3ce1875 Merge pull request 'chore(analyst): issue = исполняемый work-prompt без разночтений' (#701) from chore/analyst-prompt-quality into main lekss361 2026-05-30 08:17:17 +00:00
  • 6609d7a4cb feat(tradein): trust + actions (how-calculated, freshness, PDF, lead CTA) in result header (#689) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 08:16:12 +00:00
  • 4a1b57f758 chore(analyst): issue = исполняемый work-prompt без разночтений lekss361 2026-05-30 11:15:49 +03:00
  • 16a6d5a97b fix(tradein): hide lead CTA when contact email unset (no garbage mailto fallback) lekss361 2026-05-30 11:13:00 +03:00
  • 0f5bcb76a1 Merge pull request 'chore(bots): per-window MCP isolation (--strict-mcp-config per role)' (#700) from chore/per-window-mcp into main lekss361 2026-05-30 08:09:58 +00:00
  • 2df8f78747 chore(bots): per-window MCP isolation via --strict-mcp-config lekss361 2026-05-30 11:05:24 +03:00
  • f2adc7417a Merge pull request 'chore(bots): per-role launcher scripts + bot pipeline on forgejo MCP' (#687) from chore/bots-forgejo-mcp into main lekss361 2026-05-30 07:59:15 +00:00
  • 0e6eea9bef feat(tradein): web-native analytics cards on estimate result (map, distribution, trend, exposure) (#688) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 07:50:40 +00:00
  • 2769fe6daf feat(tradein): trust + actions (how-calculated, freshness, PDF, lead CTA) in result header lekss361 2026-05-30 10:46:09 +03:00
  • 7407848068 feat(tradein): web-native analytics cards on estimate result (map, distribution, trend, exposure) lekss361 2026-05-30 10:45:25 +03:00
  • edc5823622 chore(bots): per-role launcher scripts + move bot pipeline to forgejo MCP lekss361 2026-05-30 10:38:10 +03:00
  • 22287b8b64 feat(tradein): «Что-если» interactive recompute on estimate result (#686) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 07:35:16 +00:00
  • 705eebfca3 feat(tradein): enrich /estimate response for web map, distribution, exposure & trend (#685) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 07:32:40 +00:00
  • 412d931ab9 feat(tradein): «Что-если» interactive recompute on estimate result lekss361 2026-05-30 10:22:29 +03:00
  • ef7d2d897d feat(tradein): interactive benefit calculator in OfferCard (Брусника секция 4) (#684) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 07:19:51 +00:00
  • 3b8e7d826d feat(tradein): enrich /estimate response for web map, distribution, exposure & trend lekss361 2026-05-30 10:19:00 +03:00
  • f03dadc4d0 feat(tradein): interactive benefit calculator in OfferCard (Брусника секция 4) lekss361 2026-05-30 10:16:58 +03:00
  • f43d593cf6 feat(tradein): brand-by-account + result IA redesign (distinct asking/sale prices) (#683) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 06:45:14 +00:00
  • 95bada3855 feat(tradein): brand-by-account + result IA redesign (distinct asking/sale prices) lekss361 2026-05-30 09:38:09 +03:00
  • 6fac54642a fix(tradein): distinct asking median vs expected-sold price (no double-discount) (#682) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 06:35:46 +00:00
  • d9e0bfd541 fix(tradein): distinct asking median vs expected-sold price (no double-discount) lekss361 2026-05-30 09:29:18 +03:00
  • 3361e434d4 feat(tradein): refine same-building anchor for within-building heterogeneity (#681) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-30 05:49:46 +00:00
  • 6939bd11f7 feat(tradein): refine same-building anchor for within-building heterogeneity lekss361 2026-05-30 03:02:37 +03:00
  • 351ec88104 fix(tradein): feed raw payload.address to same-building anchor (geocode-independent) (#680) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 23:17:09 +00:00
  • 3a25e2c4b8 fix(tradein): feed raw payload.address to same-building anchor (geocode-independent) lekss361 2026-05-30 02:07:38 +03:00
  • b5c26d2723 fix(tradein): harden same-building anchor address normalizer for prod formats (#677) (#679) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 22:21:29 +00:00
  • 1f875e2179 fix(tradein): harden same-building anchor address normalizer for prod formats (#677) lekss361 2026-05-30 01:19:21 +03:00
  • c30b3c714e fix(ci): drop --frozen in tradein test job (uv.lock is gitignored) (#678) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 21:23:56 +00:00
  • 72b1e18d2a fix(ci): drop --frozen in tradein test job (uv.lock is gitignored) lekss361 2026-05-30 00:21:07 +03:00
  • 03a3296332 feat(tradein): same-building anchor estimator (#651/#652 v2) behind flag (#677) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 21:01:21 +00:00
  • bd7f40428a feat(tradein): same-building anchor estimator (#651/#652 v2) behind flag lekss361 2026-05-29 23:51:34 +03:00
  • 22f1a9c1fc fix(ci): install uv via official installer in tradein test job (PEP 668) (#676) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 20:45:12 +00:00