feat(pl24): Faz 3 — backfill anahtarı + Mitsubishi parça-listesi düzeltmesi #270

Merged
root merged 1 commits from dev into main 2026-09-21 20:47:53 +03:00
Owner

Faz 3 = arka plan backfill'ini açmak. Raporun koyduğu üç ön koşuldan biri (VW sahte ağaç kırpması) mühendislik işiydi. Musluğu açmadan önce hacmi ölçtüm ve raporun işaret ettiğinden çok daha büyük bir israf çıktı.


1. Mitsubishi'nin parça listesi grup sanılıyordu

link_wid'e göre prod ölçümü:

wid kategori parçalı oran
bomlist 235.860 106.589 %45
servicePartsItemsTable 22.239 5.346 %24
partInfoTable 19.576 2 %0,0
groupReferenceTable 8.480 31 %0,4

partInfoTable satırlarının %100'ü Mitsubishi ve her biri tek bir PARÇA: "SCREW,LOCK CYLINDER", "BOLT,STEERING COLUMN WASHER", "WEATHERSTRIP,RR DOOR OPENING".

Ağaç şöyle çıkmış:

modelsTable (2)
  → illustrationsTable (315)
    → detailsTable (2.193)      ← asıl parça listesi
      → partInfoTable (19.576)  ← tekil parçalar, yanlışlıkla kategori

Canlı doğrulama. /p5mitsubishi/extern/details/vinDetails?bomDetails=... çağrıldı: HTTP 200, 16 kayıt, hepsinde partno ve qty. Yani bu bir parça listesi. Her kaydın kendi linki partInfoTable olduğu için sınıflandırıcı listeyi grup sanıyor: detailsTable ne LEAF_WIDS'te ne GROUP_WID_PATTERN'de, yolu da (/details/vinDetails) LEAF_PATH_PATTERN'e uymuyor.

Sonuç: 2.193 parça listesinin yalnız 9'unda parça var (%0,4), buna karşılık 1.747'sinde sahte çocuk var.

Düzeltme

  • detailsTable artık yaprak.
  • isPl24PartDetailNode() eklendi: partInfoTable / /details/vinpartinfo ne grup ne liste, hiç kuyruklanmıyor.
  • isLeafLinkPath artık linkWid'i de geçiriyor. Okuma yolu bu güvenilir sinyali hep kullanıyordu ama kuyruklama yolu düşürüyordu — sınıflandırıcı detailsTable'ı öğrense bile burada yine grup sayılacaktı.
  • Migration 0036: 19.576 sahte kategori siliniyor. Okuma yolu bir düğümün ÖNCE çocuklarına baktığı için, sahte çocuklar dururken parça listesi asla çekilmez — yani bu silme düzeltmenin parçası, ayrı bir temizlik değil.

Prod'da kuru çalıştırma: 19.576 kategori, 9 araç, 2 parça, Mitsubishi dışı 0 satır.


2. Backfill anahtarı

PL24_BACKFILL_ENABLED eklendi, varsayılan KAPALI. Eski PL24_TR_DISABLED adı "tr hesabı öldü" diyordu ama gerçek işi "toplu yükü tek sağ kalan hesaptan uzak tut"tu; yeni ad ne yaptığını söylüyor. Eski değişken hâlâ kapatabiliyor ama açamıyor, böylece yarım uygulanmış bir deploy musluğu sessizce açamaz.

Kullanıcı tetikli fast-lane bu anahtardan etkilenmiyor, bugüne kadar olduğu gibi akmaya devam ediyor.


Faz 3 ön koşullarının durumu

koşul durum
Telemetri 2 hafta temiz 3 gün (17 Eylül'de başladı), ~1 Ekim'de dolar
Günlük HTTP tavanı + pencere kodda bugün kanıtlandı (PR #268 kilitlenmeyi çözdü)
Sahte ağaç kırpması bu PR, ölçülen israf raporun tahmininden büyük çıktı

Bu PR musluğu açmıyor, yalnız açılabilir hale getiriyor ve açıldığında boşa gidecek ~19,6 bin isteği ortadan kaldırıyor. Env'i true yapmak ayrı bir adım.

Not: silme sonrası 2.193 detailsTable düğümü parçasız yaprak olarak kalır ve bir kereye mahsus ~2.193 istekle gerçek parçalarını çeker. Günlük tavanın altında, kademeli.

Test

9 yeni test (Mitsubishi sınıflandırması, parça-detay kırpması, backfill anahtarının üç hali, fast-lane muafiyeti). api paketi 647 test geçiyor, tsc ve biome temiz.

🤖 Generated with Claude Code

Faz 3 = arka plan backfill'ini açmak. Raporun koyduğu üç ön koşuldan biri (VW sahte ağaç kırpması) mühendislik işiydi. Musluğu açmadan önce hacmi ölçtüm ve **raporun işaret ettiğinden çok daha büyük** bir israf çıktı. --- ## 1. Mitsubishi'nin parça listesi grup sanılıyordu `link_wid`'e göre prod ölçümü: | wid | kategori | parçalı | oran | |---|---|---|---| | bomlist | 235.860 | 106.589 | %45 | | servicePartsItemsTable | 22.239 | 5.346 | %24 | | **partInfoTable** | **19.576** | **2** | **%0,0** | | groupReferenceTable | 8.480 | 31 | %0,4 | `partInfoTable` satırlarının **%100'ü Mitsubishi** ve her biri tek bir PARÇA: "SCREW,LOCK CYLINDER", "BOLT,STEERING COLUMN WASHER", "WEATHERSTRIP,RR DOOR OPENING". Ağaç şöyle çıkmış: ``` modelsTable (2) → illustrationsTable (315) → detailsTable (2.193) ← asıl parça listesi → partInfoTable (19.576) ← tekil parçalar, yanlışlıkla kategori ``` **Canlı doğrulama.** `/p5mitsubishi/extern/details/vinDetails?bomDetails=...` çağrıldı: HTTP 200, **16 kayıt, hepsinde `partno` ve `qty`**. Yani bu bir parça listesi. Her kaydın kendi linki `partInfoTable` olduğu için sınıflandırıcı listeyi grup sanıyor: `detailsTable` ne `LEAF_WIDS`'te ne `GROUP_WID_PATTERN`'de, yolu da (`/details/vinDetails`) `LEAF_PATH_PATTERN`'e uymuyor. Sonuç: 2.193 parça listesinin yalnız 9'unda parça var (%0,4), buna karşılık 1.747'sinde sahte çocuk var. ### Düzeltme - `detailsTable` artık yaprak. - `isPl24PartDetailNode()` eklendi: `partInfoTable` / `/details/vinpartinfo` ne grup ne liste, hiç kuyruklanmıyor. - `isLeafLinkPath` artık `linkWid`'i de geçiriyor. **Okuma yolu bu güvenilir sinyali hep kullanıyordu ama kuyruklama yolu düşürüyordu** — sınıflandırıcı `detailsTable`'ı öğrense bile burada yine grup sayılacaktı. - **Migration 0036**: 19.576 sahte kategori siliniyor. Okuma yolu bir düğümün ÖNCE çocuklarına baktığı için, sahte çocuklar dururken parça listesi asla çekilmez — yani bu silme düzeltmenin parçası, ayrı bir temizlik değil. Prod'da kuru çalıştırma: **19.576 kategori, 9 araç, 2 parça, Mitsubishi dışı 0 satır.** --- ## 2. Backfill anahtarı `PL24_BACKFILL_ENABLED` eklendi, **varsayılan KAPALI**. Eski `PL24_TR_DISABLED` adı "tr hesabı öldü" diyordu ama gerçek işi "toplu yükü tek sağ kalan hesaptan uzak tut"tu; yeni ad ne yaptığını söylüyor. Eski değişken hâlâ **kapatabiliyor** ama açamıyor, böylece yarım uygulanmış bir deploy musluğu sessizce açamaz. Kullanıcı tetikli fast-lane bu anahtardan etkilenmiyor, bugüne kadar olduğu gibi akmaya devam ediyor. --- ## Faz 3 ön koşullarının durumu | koşul | durum | |---|---| | Telemetri 2 hafta temiz | 3 gün (17 Eylül'de başladı), ~1 Ekim'de dolar | | Günlük HTTP tavanı + pencere kodda | ✅ bugün kanıtlandı (PR #268 kilitlenmeyi çözdü) | | Sahte ağaç kırpması | ✅ bu PR, ölçülen israf raporun tahmininden büyük çıktı | Bu PR **musluğu açmıyor**, yalnız açılabilir hale getiriyor ve açıldığında boşa gidecek ~19,6 bin isteği ortadan kaldırıyor. Env'i `true` yapmak ayrı bir adım. Not: silme sonrası 2.193 `detailsTable` düğümü parçasız yaprak olarak kalır ve bir kereye mahsus ~2.193 istekle gerçek parçalarını çeker. Günlük tavanın altında, kademeli. ## Test 9 yeni test (Mitsubishi sınıflandırması, parça-detay kırpması, backfill anahtarının üç hali, fast-lane muafiyeti). api paketi **647 test geçiyor**, tsc ve biome temiz. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
root added 1 commit 2026-09-20 10:52:12 +03:00
feat(pl24): Faz 3 — backfill anahtarı + Mitsubishi parça-listesi düzeltmesi
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
142ec3a150
Faz 3 backfill'i açmadan önce hacmi ölçtüm ve raporun işaret ettiğinden
çok daha büyük bir israf çıktı.

**Mitsubishi'nin parça listesi grup sanılıyordu.**
`/p5mitsubishi/extern/details/vinDetails` yanıtı `partno`/`qty` taşıyan
bir PARÇA listesi (canlı doğrulama: 16 kayıt), ama her kaydın kendi
linki `partInfoTable` ve ne wid ne yol sınıflandırıcıda karşılık
buluyordu. Sonuç (prod ölçümü): 2.193 parça listesi grup düğümüne
döndü, içlerindeki 19.576 tekil parça ("SCREW,LOCK CYLINDER",
"BOLT,STEERING COLUMN WASHER") kategori olarak kaydedildi. Bu 19.576
sahte düğümün TOPLAM 2 tanesinde parça var ve hepsi her prefetch
turunda yeniden çekiliyor. İkisi de %100 Mitsubishi.

- `detailsTable` artık yaprak, `isPl24PartDetailNode()` ile
  `partInfoTable` hiç kuyruklanmıyor.
- `isLeafLinkPath` artık `linkWid`'i de geçiriyor. Okuma yolu bu
  güvenilir sinyali hep kullanıyordu ama kuyruklama yolu düşürüyordu —
  sınıflandırıcı `detailsTable`'ı öğrense bile burada yine grup
  sayılacaktı.
- Migration 0036: 19.576 sahte kategori siliniyor. Okuma yolu bir
  düğümün ÖNCE çocuklarına baktığı için bu silme düzeltmenin parçası,
  ayrı temizlik değil. Kuru çalıştırma: 19.576 kategori, 9 araç, 2
  parça, Mitsubishi dışı 0.

**Backfill anahtarı.** `PL24_BACKFILL_ENABLED` eklendi, varsayılan
KAPALI. Eski `PL24_TR_DISABLED` adı "tr hesabı öldü" diyordu ama işi
"toplu yükü tek sağ kalan hesaptan uzak tut"tu. Eski değişken hâlâ
kapatabiliyor — yarım deploy musluğu sessizce açamasın. Kullanıcı
tetikli fast-lane bu anahtardan etkilenmiyor.

9 yeni test. api 647 test geçiyor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root merged commit e03d721c37 into main 2026-09-21 20:47:53 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/sase.tr#270