Commit Graph

1064 Commits

Author SHA1 Message Date
7b1daffe97 feat(canonical-tree): hibrit — tüm üst kovalar decode anında görünür
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Sorun: bir araçta sadece TEK bir kategori (drill edilmiş olan) görünüyordu —
"herhangi parça varsa leaf-mode" mantığı drill-edilmemiş kökleri gizliyordu.
Fix: parça-tutan yapraklar + drill-edilmemiş kökler (subtree'sinde parça yok)
birlikte gösterilir. Kök yapı decode'da oluştuğundan tüm 20 kova ANINDA görünür;
parçalar backfill deep-drill ile dolar. vehicle + catalog akışı.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 08:32:28 +03:00
c5c569b941 Merge pull request 'fix: orijinal default + dedupe' (#187) from dev into main 2026-07-06 08:06:15 +03:00
013cd43e7e fix: Orijinal Katalog varsayılan + canonical duplike-kök dedupe
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
(1) Araç sayfası varsayılanı "Orijinal Katalog" (source) — canonical view'ın
edge-case'leri (duplike/drill-edilmemiş kökler) çözülene kadar.
(2) canonical grouping ad-bazlı dedupe: bazı decode'lar kökü iki kez üretiyor
("Motor, Motor"; Seat Ateca'da her kök 2×) → aynı adı en zengin kopyayla
(parça, sonra çocuk) birleştir. Önceki boş-kök filtresi GERİ ALINDI (drill-
edilmemiş kökleri de siliyordu = "2 kategori" regresyonu).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 08:06:08 +03:00
c6e5d06172 Merge pull request 'fix: boş kök gösterme' (#186) from dev into main 2026-07-06 07:54:47 +03:00
34d97b47ac fix(canonical-tree): boş kökleri (çocuksuz+parçasız) root-fallback'ta gösterme
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
emex bazen aynı kökü iki kez decode ediyor (biri boş) → "Motor → Motor, Motor"
gibi redundant başlık. Root-fallback artık sadece çocuğu VEYA parçası olan
kökleri gösteriyor. vehicle + catalog akışlarının ikisinde de.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 07:54:39 +03:00
dc5cf4039c Merge pull request 'canonical: 3 yanlış-kova override daha' (#185) from dev into main 2026-07-06 07:39:40 +03:00
6f8e9ff618 feat(canonical-lexicon): 3 yanlış-kova override daha (IC Motor prefix + türbo şarj)
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
"motor soğutma"→Soğutma (2516, engine cooling — "motor" subsystem qualifier),
"türbo şarj"→Motor (684, "şarj"=charge Elektrik'e çekmiş), "tahrik kayışı"→
Triger (767, drive belt). pcat "IC Motor <sistem>" prefix örüntüsü. 32 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 07:39:32 +03:00
2581908cc4 Merge pull request 'canonical: phrase override yanlış-kova' (#184) from dev into main 2026-07-06 06:48:47 +03:00
6e556e198a feat(canonical-lexicon): phrase-override katmanı — adjective+head yanlış-kovalar
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Skordan önce yüksek-güven phrase kuralları: "<sistem> yağı$" → Yağlar (end-
anchor, "motor yağı filtresi/pompası" hariç), "(cam|silecek|kalorifer) motoru"
→ Elektrik, "zamanlama (dişli|zincir|kayış)" → Triger. ~1400 motor/şanzıman
yanlış-kovası + ~230 silecek-motoru + ~790 zamanlama düzelir. 29/29 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 06:48:40 +03:00
cec68a8cd9 Merge pull request 'canonical: SP kuyruk küçültme' (#183) from dev into main 2026-07-06 06:28:13 +03:00
75dbadcb47 feat(canonical-sublexicon): SP kuyruğunu küçültmek için yüksek-frekans alt-terimler
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Kuyruğun tepesindeki net-eşlenebilir adları otomatikleştir: gösterge/anten→
Modül, korna→Korna(yeni), silecek→Silecek(yeni), güneşlik→Tavan, havalandırma/
ısıtma/eşanjör→Kalorifer, soğutucu→Radyatör, absorber→Amortisör, dingil→Aks,
pim→Burç, kontrol kol→Salıncak, yağ tava/keçe/basınç→Yağlama, motor takımı→
Komple, iç kontrol→Vites. +2 yaprak (silecek/korna), migration 0028. 6/6 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 06:28:06 +03:00
046b8a8f4c Merge pull request 'canonical: emex düşük-marka deep-dive' (#182) from dev into main 2026-07-05 17:15:58 +03:00
1aaf2d8d8b feat(canonical): emex düşük-marka deep-dive terimleri
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
emex Dacia/Toyota/BMW/Kia eşleşmeyenlerinden tek-token distinctive terimler
(üst-lexicon token-bazlı): buharlastirici/kurutucu→sogutma, aktuator/selenoid/
anten/ses→elektrik, lambda/rolanti→yakit, kanat/kiris→panjur, burkma→susp. +
ilgili sub keyword'ler. 2-kelime adlar (su pompası) token-matcher'da eşleşmez,
atlandı → SP.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:15:51 +03:00
33f58e14c6 Merge pull request 'canonical: zayıf kova sub tuning' (#181) from dev into main 2026-07-05 16:48:49 +03:00
db646d10f4 feat(canonical-sublexicon): zayıf kova tuning (yaglar/panjur/direksiyon/debriyaj)
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
+7 yaprak (migration 0027): yag-sistemi (yağlama/pompa/çubuk), panjur kaput/
tavan/şasi/cam/kanat, direksiyon simit/dişli/hidrolik/elektronik + debriyaj
serbest-bırakma. En düşük kovaları (Yağlar %10, Panjur %17, Direksiyon %38)
yükseltir. 150 yaprak toplam.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 16:48:42 +03:00
a9a40e4587 Merge pull request 'canonical: 2-level serving' (#180) from dev into main 2026-07-05 16:40:46 +03:00
2d5e2d04a9 feat(canonical): 2-level serving — taksonomi endpoint + araç sub-gruplama
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
GET /categories/canonical/taxonomy: kova→alt-yaprak + populasyon sayısı (B2C API
kontratı). getCanonicalTree (vehicle + catalog) artık subLeaves geçip her kovayı
alt-gruplara böler (materialize + on-the-fly sub fallback). jant-tire slug fix
(jant-lastik üst-kova ile çakışıyordu). Kategori sub-kapsama: Filtre %88, Fren/
Aydınlatma %74, Motor/Süsp/Elektrik %60-66. Eşleşmeyen → Genel/SP manuel.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 16:40:39 +03:00
cf11379b49 Merge pull request 'canonical: 2. seviye alt-kategori' (#179) from dev into main 2026-07-05 16:32:32 +03:00
9dd3b2c858 feat(canonical): 2. seviye alt-kategori mapping (otoparcasan-türevi)
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Kendi kanonik yapımıza tam geçiş — B2C API için alt-kategori. migration 0026:
canonical_categories'e 143 alt-yaprak (parent_id=üst kova) + categories/
category_canonical_map'e canonical_subcategory_id. canonical-sublexicon.ts:
bucket başına satılabilir parça yaprakları + Türkçe varyant (kaliyer/hidroliği)
+ Bağlantı&Donanım catch-all. Backfill artık isim→kova→alt-yaprak deterministik
materialize ediyor (inheritance dahil). Eşleşmeyen = null → SP manuel. Testler +.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 16:32:25 +03:00
5ac92556e3 Merge pull request 'canonical: Opel inheritance yanlış-pozitif fix' (#178) from dev into main 2026-07-05 15:18:26 +03:00
458603fb98 fix(canonical-backfill): model/yıl seçici düğümlere parent-inheritance verme
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Opel model-öncelikli: "X 2004-2014" model düğümü parent'ından (MOTOR VE DEBRIYAJ)
Debriyaj miras alıyor, sonra jenerik çocukları (BOYALAR/MÜTEFERRİK/SIZDIRMAZ) de
ondan Debriyaj miras alıyordu → yanlış eşleme zinciri. Inheritance artık yıl-
aralıklı + ^[a-z]{1,3}\d{2} model düğümlerine miras VERMEZ (null kalır, cascade
kırılır). Kod/plaka yaprakları (X1318_/20-201A) bu desenlere uymaz → Renault/
Hyundai etkilenmez. Sadece Opel 58 + Nissan 1 düğüm.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:18:18 +03:00
f63ccf0aef Merge pull request 'canonical: MAN kalan platform prefix' (#177) from dev into main 2026-07-05 14:46:16 +03:00
5900b8d399 feat(canonical-lexicon): MAN kalan otobüs platform prefixleri (SG/SL/SR/SUE/UEL/RH/NM…) + model adları
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:46:09 +03:00
57d9ff2e30 Merge pull request 'canonical: MAN EL/GS/LE platform kod' (#176) from dev into main 2026-07-05 14:31:02 +03:00
a10654f210 feat(canonical-lexicon): MAN EL/GS/LE/MAZ/MFTPL platform kodlarını da yapısal yap
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:30:54 +03:00
d04d27d221 Merge pull request 'canonical: MAN deep-tune' (#175) from dev into main 2026-07-05 14:16:46 +03:00
86a08dbe12 feat(canonical-lexicon): MAN deep-tune — otobüs/koçbuilder model adları yapısal
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
MAN neredeyse tamamen model-öncelikli (LION'S CITY, SKYLINER/CITYLINER/TOURLINER,
NL/ND/NG/MAN platform kodları, AUFBAU koçbuilder). classifyNode MAN_MODEL_CODE:
^(nd|ng|nl|ngt|man) \d + distinctive model kelimeleri → structural. Truck-kod
^\d{4,5} KULLANILMADI (2800 emex mapped bozardı). Ayrıca LPG-model yanlış-pozitif
(NL 205 M11 LPG→Yakıt) düzelir. elektr→elektrik, aggregate→motor. 27/27.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:16:38 +03:00
c4608a8421 Merge pull request 'canonical: Kollar/Ön Takım + conta strong' (#174) from dev into main 2026-07-05 13:49:06 +03:00
c88b6b45c5 feat(canonical-lexicon): Kollar/Ön Takım→süspansiyon; conta→motor strong
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
emex "Kollar"(salıncak kolları)/"Ön Takım"(aks) → süspansiyon (kollar/takim
weak). "conta" motor strong'a alındı ki "conta takımı"→motor kalsın (takim ile
tie'ı kazansın). 26/26 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:49:01 +03:00
0517a57021 Merge pull request 'canonical: emex servis sayfa junk' (#173) from dev into main 2026-07-05 13:45:33 +03:00
e42345f35b feat(canonical-lexicon): emex servis sayfalarını (Servis Aralıkları/Ek Onarımlar) junk yap
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:45:28 +03:00
dce3a4f332 Merge pull request 'canonical Faz 3: emex terimleri' (#172) from dev into main 2026-07-05 13:31:56 +03:00
ee7925c960 feat(canonical-lexicon): Faz 3 emex yüksek-frekans terimleri
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
emex'in en sık eşleşmeyen adları (100-250x, tüm araçlarda paylaşılan):
stabilizer/absorber→suspansiyon; esanjor/kondansator/ventilator/kompresor/
sogutucu/uflec→sogutma; hali/halilar→ic-doseme; kilit/yagmurluk→dis-kaporta;
stepne→jant-lastik. Jenerik (BOYALAR/İZOLATÖRLER/Montaj) bırakıldı. 25/25.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:22:06 +03:00
527f69dc1b Merge pull request 'canonical: son cila edge-case' (#171) from dev into main 2026-07-05 12:37:00 +03:00
50a92c78cc feat(canonical-lexicon): son cila — koltuğu/takoz/stabilizatör edge-case'leri
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
koltugu (koltuk k→ğ eki)→ic-doseme, stabilizator→suspansiyon strong, takoz/
takozu→suspansiyon weak. Küçük markaların (Smart/Mini) kalan gerçek boşluklarını
kapatır. Kalan eşleşmeyenler artık junk/generic/veri-kalitesi (pratik maksimum).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:36:57 +03:00
b6a6893f6f Merge pull request 'canonical: küçük markalar maksimum kapsama' (#170) from dev into main 2026-07-05 12:29:59 +03:00
db4b85da8e feat(canonical-lexicon): küçük/düşük markalar için maksimum kapsama terimleri
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Tüm sub-90 markaların global eşleşmeyen adlarından net olanlar (çoğu İngilizce,
markalar arası): diagnostic/entertainment/bilgisayar/elektrigi→elektrik,
heater/ventilation→sogutma, braking→fren, sunroof/exterior/locking→dis-kaporta,
restraint/occupant/konfor→ic-doseme, mekanik→motor, yapistirici→yaglar. 24/24.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:29:57 +03:00
e428a82bd5 Merge pull request 'canonical: Ford + BMW fix' (#169) from dev into main 2026-07-05 12:13:30 +03:00
44987e7e7e feat(canonical-lexicon): Ford + BMW fix'leri
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
BMW (~%81): elektronik terimleri → elektrik (audio/navigasyon/elektronik/
iletisim/multimedya/cruise), "ışık"→aydınlatma; servis/doküman sayfaları →
junk (teknik doküman/servis ve onarım/value parts). Ford (~%74): trans
varyantları speed/spd→sanziman, motor varyantları diesel/dohc→motor, gövde→
panjur. 23/23 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:07:09 +03:00
675fab0c79 Merge pull request 'canonical: MAN kamyon model kodları' (#168) from dev into main 2026-07-05 12:00:05 +03:00
1fcbfdf5d1 feat(canonical-lexicon): MAN kamyon model kodları yapısal + parça terimleri
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
MAN %32 = Opel gibi metrik yanılsaması (kamyon model tanımlayıcıları
denominatörde). classifyNode: ^\d{1,2}[./]\d ("12.155","10/11.150") + ^\d{2}t
("18T HOCL-SD") → structural (^\d{4,} KULLANILMADI — 362 mapped satırı bozardı).
Parça terimleri: salter/verici→elektrik, tahrik→sanziman (ticari araç + genel).
21/21 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:00:03 +03:00
afd92e90b6 Merge pull request 'canonical: Mercedes uzun-kuyruk parça adları' (#167) from dev into main 2026-07-05 11:31:50 +03:00
347d9f2ddb feat(canonical-lexicon): Mercedes uzun-kuyruk parça adları
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Mercedes fragmented long-tail'inin eşlenebilir kısmı (çoğu İngilizce, diğer
markalara da yarar): propeller→sanziman, radiator→sogutma, roof/wall/underpan→
panjur, door/window/kapak→dis-kaporta, timing→triger, carburetor→yakit,
pedal→fren, ortu→ic-doseme. Doküman: preliminary remarks/genel bakış tablosu→
junk. Genuinely jenerik (AYAR/GENEL PARÇALAR/DONANIM/CONTROL) Diğer'de kalır. 20/20.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:31:48 +03:00
51eec60c6c Merge pull request 'fix: MB katalog-kodu regex çıplak-koda sabit' (#166) from dev into main 2026-07-05 11:08:50 +03:00
f1f36d8cf1 fix(canonical-lexicon): MB katalog-kodu regex'ini çıplak-koda sabitle
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
^[cd]\d{3,} fazla genişti — "D765300(22H), LS 7 F, MB SERVO DİREKSİYON" gibi
parça bilgisi taşıyan düğümleri yapısal yapıp Direksiyon eşleşmesini bozuyordu
(Mercedes ham kapsama %79→%49). $ ile sabitle → sadece çıplak kod (C442,
C105011). Açıklamalı düğümler keyword'le eşleşmeye devam eder. 19/19 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:08:47 +03:00
bf259f3d79 Merge pull request 'canonical: Mercedes C/D katalog kodları yapısal' (#165) from dev into main 2026-07-05 10:52:44 +03:00
25cf0fa670 feat(canonical-lexicon): Mercedes C/D katalog kodları yapısal + doküman sayfaları çöp
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Mercedes'in düşük kapsaması büyük ölçüde metrik yanılsaması: 175 dağınık kök,
C/D katalog-kodu düğümleri (C371211, C442, D308802(811),308,COWL) yapısal ama
classifyNode kaçırıyordu → denominatörde. Ekle: ^[cd]\d{3,} → structural;
"SA LİSTESİ"/"…resim açıklama sayfası" → junk. 19/19 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 10:52:42 +03:00
c9f96f8666 Merge pull request 'canonical: Opel yazım varyantları + serving yapısal-atla' (#164) from dev into main 2026-07-05 10:30:31 +03:00
82793a8257 feat(canonical): Opel model-öncelikli — yazım varyantları + serving yapısal-atla
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Opel gerçek parça-kat kapsaması zaten %85; %38 model-kodu köklerin (yapısal)
denominatörde olmasından. Lexicon: sanzuman/disli→sanziman, suspensiyon/dingil→
suspansiyon (Opel yazımları). Serving: groupCategoriesByCanonical yapısal/çöp
düğümleri "Diğer"e sokmadan atlar (Opel model kökleri Birleşik'te görünmez).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 10:25:46 +03:00
51032342b8 Merge pull request 'canonical: parent-inheritance (kod-yaprak → parent kovası)' (#163) from dev into main 2026-07-05 10:16:21 +03:00