Commit graph

  • 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
  • 2e55c823a4 fix(ci): install uv via official installer in tradein test job (PEP 668) lekss361 2026-05-29 23:23:56 +03:00
  • be63b249b5 chore(tradein): close pre-commit ruff gap + add CI pytest gate (#666) (#675) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 19:18:48 +00:00
  • fa861f7c0c chore(tradein): close pre-commit ruff gap + add CI pytest gate (#666) lekss361 2026-05-29 21:57:41 +03:00
  • 96f02d37f3 feat(tradein): blend Avito IMV anchor into estimate + ДКП corridor advisory (#651, #652) (#674) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 17:42:06 +00:00
  • 70a1f604f9 Merge remote-tracking branch 'forgejo/main' into feat/tradein-651-652-accuracy lekss361 2026-05-29 20:39:15 +03:00
  • 29679a9545 fix(tradein): time-budget estimate enrichment + observable errors to stop opaque 502 (#654) (#673) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 17:22:02 +00:00
  • e9eb812d8b fix(tradein): recompute expected_sold_* after IMV blend + band-guard anchor (#651) lekss361 2026-05-29 20:11:25 +03:00
  • 6046d55419 chore(tradein): drop shared Caddyfile timeout from #654 — defer to devops lekss361 2026-05-29 20:07:04 +03:00
  • 1d74410832 Merge remote-tracking branch 'forgejo/main' into feat/tradein-651-652-accuracy lekss361 2026-05-29 19:11:51 +03:00
  • 55e1dd1303 Merge remote-tracking branch 'forgejo/main' into fix/tradein-654-502-timeout lekss361 2026-05-29 19:10:58 +03:00
  • 3b29936245 feat(tradein): white-label branded page for client «Практика» (#657) (#672) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 16:09:23 +00:00
  • ed4c8b3f02 feat(tradein): configurable estimate quota + new exhausted-quota copy (#658) (#671) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 16:07:02 +00:00
  • 6a81e91a83 feat(tradein): surface Avito IMV anchor + ДКП corridor in HeroSummary (#651, #652) lekss361 2026-05-29 19:04:32 +03:00
  • 47fdd6e4df fix(tradein): scope GET /history to caller, close cross-pilot data leak (#656) (#670) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 15:59:03 +00:00
  • 2a3281d2d1 fix(tradein): time-budget estimate enrichment + observable errors to stop opaque 502 (#654) lekss361 2026-05-29 18:58:40 +03:00
  • 70ee7b282c feat(tradein): blend Avito IMV anchor into estimate + ДКП corridor advisory — backend (#651, #652) lekss361 2026-05-29 18:58:10 +03:00
  • 6ddc9bc661 fix(tradein): bypass rate-limit for authenticated pilots + configurable limit (#655) (#669) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 15:56:30 +00:00
  • aa8ca9bcfc feat(backend): add /api/v1/ping liveness endpoint (#634) Co-authored-by: bot-backend <bot-backend@gendsgn.local> Co-committed-by: bot-backend <bot-backend@gendsgn.local> bot-backend 2026-05-29 15:53:29 +00:00
  • 5f6b0d6d87 feat(tradein): white-label branded page for client «Практика» (#657) lekss361 2026-05-29 18:52:13 +03:00
  • 8472d83ac3 feat(tradein): configurable estimate quota + new exhausted-quota copy (#658) lekss361 2026-05-29 18:47:58 +03:00
  • e3f928b24d fix(tradein): scope GET /history to caller, close cross-pilot data leak (#656) lekss361 2026-05-29 18:41:54 +03:00
  • 747a325428 fix(tradein): bypass rate-limit for authenticated pilots + configurable limit (#655) lekss361 2026-05-29 18:30:53 +03:00
  • 6508023c29 Merge pull request 'chore(claude): self-extending tripwire extension + pause-bots guard' (#668) from chore/bot-safety-followups into main lekss361 2026-05-29 14:38:33 +00:00
  • 5673dd6298 chore(claude): extend self-extending tripwire + pause-bots guard for stale-claims chore/bot-safety-followups lekss361 2026-05-29 17:36:20 +03:00
  • 870f062587 feat(tradein): expected-sold price in estimate PDF (#648 S5b — final) (#665) Light1YT 2026-05-29 14:09:46 +00:00
  • 6545568778 feat(tradein): render expected-sold price alongside asking in estimate PDF (#648 S5b) Light1YT 2026-05-29 19:09:17 +05:00
  • 7d749f4080 feat(tradein): dual-display asking vs expected-sold in HeroSummary (#648 S5a) (#664) Light1YT 2026-05-29 14:00:49 +00:00
  • 00484fc02f feat(tradein): dual-display asking vs expected-sold in HeroSummary (#648 S5a) Light1YT 2026-05-29 19:00:40 +05:00
  • a060651328 feat(tradein): daily asking→sold ratio refresh (#648 S4) (#663) Light1YT 2026-05-29 13:49:36 +00:00
  • fc707f16e8 feat(tradein): daily asking→sold ratio refresh (#648 S4) Light1YT 2026-05-29 18:49:27 +05:00
  • a481a52aa8 Merge pull request 'chore(claude): harden autonomous multi-agent prompts (Path B)' (#662) from chore/autonomous-prompts-pathb into main lekss361 2026-05-29 13:41:37 +00:00
  • f36da624fe chore(claude): harden autonomous multi-agent prompts (Path B) lekss361 2026-05-29 16:38:23 +03:00
  • 35bd0238ef feat(tradein): estimator additive expected_sold price (#648 S3) (#661) Light1YT 2026-05-29 13:37:33 +00:00
  • a85e6d8e77 feat(tradein): estimator computes additive expected_sold price (#648 S3) Light1YT 2026-05-29 18:37:05 +05:00
  • c7b9565cd6 feat(tradein): asking_to_sold_ratios table + derivation (#648 S2) (#660) Light1YT 2026-05-29 13:18:28 +00:00
  • eb26681af4 feat(tradein): asking_to_sold_ratios table + per-rooms derivation (#648 S2) Light1YT 2026-05-29 18:18:19 +05:00
  • d021fc9231 feat(backtest): per-rooms asking→sold correction block (#648 S1) (#650) Light1YT 2026-05-29 13:11:55 +00:00
  • 6f018f4cdb feat(backtest): per-rooms asking→sold correction block (#648 S1) Light1YT 2026-05-29 18:11:25 +05:00