feat(workers): supply-layers refresh task + weekly beat (#950 Step 5) (#1005)
#854 -Commit
ae85f19993
pushed by
Light1YT
feat(site-finder): supply_layers v2 compute service (#950 EPIC6 step3+4) (#1004)
#853 -Commit
900802264a
pushed by
Light1YT
feat(db): supply_layers store + latest view (#950 PR B) (#1003)
#851 -Commit
33ecbda689
pushed by
Light1YT
feat(domrf): persist domrf_kn_objects.free_flats (#950 PR A) (#1002)
#850 -Commit
420cda2831
pushed by
Light1YT
feat(site-finder): per-competitor relevance_weight (#949 PR B) (#1000)
#848 -Commit
59be55f80e
pushed by
Light1YT
feat(site_finder): market-metrics service (#949 PR A, §9.2) (#997)
#846 -Commit
45d61ecff0
pushed by
Light1YT
feat(site-finder): live CBR key-rate scraper → macro_indicator (#945 PR B) (#964)
#845 -Commit
c78c6ec2d0
pushed by
Light1YT
feat(site-finder): macro_indicator table + backfill + reader (#945 PR A) (#963)
#843 -Commit
dbae4b0bda
pushed by
Light1YT
fix(tradein): per-bucket velocity formula + realistic срок продажи (#574) (#631)
#415 -Commit
6cb3d7515c
pushed by
Light1YT
fix(tradein): backfill kn obj_class (parser + 3-pass) (#572) (#628)
#410 -Commit
4e4762f234
pushed by
Light1YT
fix(tradein): backfill kn price_per_m2 via sale_graph + peer median (#573) (#625)
#405 -Commit
609ac8ea9d
pushed by
Light1YT
chore(mv): regression test + sql rule for weighted AVG (#295) (#626)
#404 -Commit
07106d744a
pushed by
Light1YT
chore(mv): regression test + sql rule for weighted AVG (#295) (#626)
#403 -Commit
07106d744a
pushed by
Light1YT
feat(auth): UserMenu — личный кабинет top-right (PR D) (#590)
#336 -Commit
56a7a36c9a
pushed by
Light1YT
chore(security): sync admin hash в users.caddy.snippet (#588)
#334 -Commit
252bc2de76
pushed by
Light1YT
feat(rbac): pilot scope → только /trade-in/** (#587)
#333 -Commit
c08e4d7811
pushed by
Light1YT
feat(rbac): frontend route-guard + nav filter (#586)
#331 -Commit
7a2b055b35
pushed by
Light1YT
feat(rbac): role-based access control via X-Authenticated-User middleware (#585)
#329 -Commit
88cdfd6adb
pushed by
Light1YT