Kısa sayısal kodlar markalar arası çakışıyor ve FARKLI fiziksel parçaların
fiyatları tek havuzda karışıyordu (vaka: FEBI 27155 ₺160 iken çip GROS+İBRAŞ+
NIFEA karışımı ₺566 medyan gösterdi).
- sku_map'e brand_norm eklendi (takip p10 kolonunun marka kısmı; yoksa sku
öneki) — vmi'de yeniden kuruldu (6,8M satır, %99,4 markalı)
- filterOffersForBrand: önek/sıralı-altdizi marka eşleme (BCH→BOSCH,
BLP→BLUEPRINT, BRA→İBRAŞ); markasız sorgu yalnızca uzun/benzersiz kodlarda
(≥8 ya da ≥5+harf+rakam) tüm teklifleri kullanır; kısa salt-sayısal kod
uyumsuzsa boş döner (yanlış veri göstermek yok)
- pg kimliği (code_norm, brand_norm) — 0019 drop+recreate (yalnız 3 test kodu
vardı, lazy-backfill yeniden doldurur)
- API: series?code&brand; current-batch artık { parts: [{code, brand}] } alır,
cevap "CODE::BRAND" anahtarlı; Redis anahtarları v2
- Web: satır çipleri ve dialog markayı geçirir; ana OEM kodu markasız kalır
(uzun-kod kuralıyla eşleşir); OE çiplerinde dağıtıcı etiketi fallback'i
(MAIS taşıyan tekliflere RENAULT isteği uzun kodda izinli)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
33 lines
1.5 KiB
SQL
33 lines
1.5 KiB
SQL
-- Parça fiyat anahtarına marka eklendi: kısa sayısal kodlar (FEBI 27155 vs
|
||
-- GROS 27155 vs İBRAŞ 27155) markalar arası çakışıyor ve FARKLI fiziksel
|
||
-- parçaların fiyatları tek havuzda karışıyordu. Kimlik artık (kod, marka);
|
||
-- markasız izleme yalnızca uzun/benzersiz kodlar için ('' brand_norm).
|
||
-- Tablolar 0018'den bu yana yalnızca dev'de üç test kodu içeriyordu — veri
|
||
-- taşımak yerine drop+create (lazy-backfill ilk görüntülemede yeniden doldurur).
|
||
DROP TABLE IF EXISTS "part_price_daily";
|
||
--> statement-breakpoint
|
||
DROP TABLE IF EXISTS "part_price_tracks";
|
||
--> statement-breakpoint
|
||
CREATE TABLE "part_price_tracks" (
|
||
"code_norm" varchar(64) NOT NULL,
|
||
"brand_norm" varchar(64) DEFAULT '' NOT NULL,
|
||
"first_seen_at" timestamp with time zone DEFAULT now() NOT NULL,
|
||
"backfilled_at" timestamp with time zone,
|
||
"last_refreshed_at" timestamp with time zone,
|
||
CONSTRAINT "part_price_tracks_code_norm_brand_norm_pk" PRIMARY KEY("code_norm","brand_norm")
|
||
);
|
||
--> statement-breakpoint
|
||
CREATE TABLE "part_price_daily" (
|
||
"code_norm" varchar(64) NOT NULL,
|
||
"brand_norm" varchar(64) DEFAULT '' NOT NULL,
|
||
"source" varchar(16) DEFAULT 'supplier' NOT NULL,
|
||
"date" date NOT NULL,
|
||
"p50" numeric(15, 4),
|
||
"p95" numeric(15, 4),
|
||
"p99" numeric(15, 4),
|
||
"offer_count" integer DEFAULT 0 NOT NULL,
|
||
CONSTRAINT "part_price_daily_code_norm_brand_norm_source_date_pk" PRIMARY KEY("code_norm","brand_norm","source","date")
|
||
);
|
||
--> statement-breakpoint
|
||
CREATE INDEX "part_price_daily_code_date_idx" ON "part_price_daily" USING btree ("code_norm","brand_norm","date");
|