fix(pl24): Opel/Hyundai/Kia decode'unda 0 kategori — tablo satırları okunmuyordu #264

Merged
root merged 1 commits from dev into main 2026-09-17 14:51:35 +03:00
Owner

Faz 1 / adım 6. Analiz /home/s/ss/plv2.md, bulgu p4legacy-03.

Sorun

Opel, Hyundai ve Kia ana gruplarını <a href> ile değil, satır attribute'uyla veriyor:

Opel      <tr class="tc-data-row" jsonurl="json-vin-main-group.action?catId=25&mainGroupId=394…"
              caption="BODY SHELL AND PANELS" ident="394">
Hyundai   <tr class="tc-data-row" url="vin-group.action?…&mainGroup=BO…">
              <td>BO</td><td>BODY</td></tr>

decodeVin yolu yalnız anchor tarayan parseP4NavigationCategories'i kullanıyordu → sayfa listeyi taşıdığı hâlde 0 kategori.

Prod ölçümü (vehicles.raw_data.categories, source=pl24):

marka araç decode anında boş oran
Opel 181 177 %97,8
Hyundai 12 12 %100
Kia 6 6 %100
Nissan 1 1 %100
Ford 108 48 %44,4

(Kategori tablosu sonradan lazy-seed ile doluyor, ama decode kategorisiz döndüğü için kullanıcı ilk açılışta boş görüyor ve prefetch self-seed'e zorlanıyor.)

Üç ayrı kusur

  1. parseFordGroupsFromHtml bu satırları zaten anlıyor ama decode'dan hiç çağrılmıyordu. Kategori zinciri artık: JSON ucu → tc-data-row tablosu → anchor taraması.
  2. Volvo için konmuş vin-group.action && !group1= guard'ı, Hyundai/Kia'nın aynı ucu mainGroup= anahtarıyla kullanan gerçek ana gruplarını da eliyordu. Artık group1= veya mainGroup= taşıyan satırlar korunuyor.
  3. Satır attribute'ları HTML-escaped (&amp;), bu yüzden [?&]mainGroup= kontrolü hiç tutmuyordu. URL artık ayrıştırma anında entity-decode ediliyor — saklanan linkPath de böylece temiz (p4legacy-10'daki &amp; sorununun da bir ayağı).

Doğrulama

Yeni pl24-p4-groups.spec.ts, 2026-09-16 canlı yakalamalarından kırpılmış fixture'larla (__fixtures__/p4_{opel,hyundai,ford,nissan}.html — ağa çıkmadan gerçek HTML'e karşı test):

  • Opel 31 ana grup ("BODY SHELL AND PANELS"…), mainGroupId=394 linki doğru
  • Hyundai 6 ana grup ("BODY"…), mainGroup=BO linki doğru
  • anchor-only parser bu sayfalarda hâlâ 0 döndürüyor (fallback'in gerekçesi kilitlendi)
  • Ford sharedCatCode scope satırları bozulmadı; Nissan model-seçim satırları elenmeye devam ediyor

213 test geçti, tsc + biome temiz.

Not

db_hit kısa devresi yüzünden mevcut araçlar kendiliğinden düzelmez; kazanç yeni decode'larda. Toplu yeniden decode Faz 2'de (322 PSA + 36 Volvo ile birlikte).

🤖 Generated with Claude Code

Faz 1 / adım 6. Analiz `/home/s/ss/plv2.md`, bulgu p4legacy-03. ## Sorun Opel, Hyundai ve Kia ana gruplarını `<a href>` ile **değil**, satır attribute'uyla veriyor: ```html Opel <tr class="tc-data-row" jsonurl="json-vin-main-group.action?catId=25&mainGroupId=394…" caption="BODY SHELL AND PANELS" ident="394"> Hyundai <tr class="tc-data-row" url="vin-group.action?…&mainGroup=BO…"> <td>BO</td><td>BODY</td></tr> ``` `decodeVin` yolu yalnız anchor tarayan `parseP4NavigationCategories`'i kullanıyordu → sayfa listeyi taşıdığı hâlde **0 kategori**. **Prod ölçümü** (`vehicles.raw_data.categories`, source=pl24): | marka | araç | decode anında boş | oran | |---|---|---|---| | Opel | 181 | 177 | %97,8 | | Hyundai | 12 | 12 | %100 | | Kia | 6 | 6 | %100 | | Nissan | 1 | 1 | %100 | | Ford | 108 | 48 | %44,4 | (Kategori tablosu sonradan lazy-seed ile doluyor, ama decode kategorisiz döndüğü için kullanıcı ilk açılışta boş görüyor ve prefetch self-seed'e zorlanıyor.) ## Üç ayrı kusur 1. **`parseFordGroupsFromHtml` bu satırları zaten anlıyor ama decode'dan hiç çağrılmıyordu.** Kategori zinciri artık: JSON ucu → tc-data-row tablosu → anchor taraması. 2. Volvo için konmuş `vin-group.action && !group1=` guard'ı, Hyundai/Kia'nın **aynı ucu** `mainGroup=` anahtarıyla kullanan gerçek ana gruplarını da eliyordu. Artık `group1=` veya `mainGroup=` taşıyan satırlar korunuyor. 3. Satır attribute'ları HTML-escaped (`&amp;`), bu yüzden `[?&]mainGroup=` kontrolü **hiç tutmuyordu**. URL artık ayrıştırma anında entity-decode ediliyor — saklanan `linkPath` de böylece temiz (p4legacy-10'daki `&amp;` sorununun da bir ayağı). ## Doğrulama Yeni `pl24-p4-groups.spec.ts`, 2026-09-16 canlı yakalamalarından kırpılmış fixture'larla (`__fixtures__/p4_{opel,hyundai,ford,nissan}.html` — ağa çıkmadan gerçek HTML'e karşı test): - Opel **31 ana grup** ("BODY SHELL AND PANELS"…), `mainGroupId=394` linki doğru - Hyundai **6 ana grup** ("BODY"…), `mainGroup=BO` linki doğru - anchor-only parser bu sayfalarda hâlâ 0 döndürüyor (fallback'in gerekçesi kilitlendi) - Ford `sharedCatCode` scope satırları bozulmadı; Nissan model-seçim satırları elenmeye devam ediyor 213 test geçti, `tsc` + `biome` temiz. ## Not `db_hit` kısa devresi yüzünden mevcut araçlar kendiliğinden düzelmez; kazanç yeni decode'larda. Toplu yeniden decode Faz 2'de (322 PSA + 36 Volvo ile birlikte). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
root added 1 commit 2026-09-17 14:48:19 +03:00
fix(pl24): Opel/Hyundai/Kia decode'unda 0 kategori — tablo satırları okunmuyordu
Some checks are pending
QA Gate (P0/P1) / Test affected app (pull_request) Waiting to run
8d284f6442
Faz 1 / adım 6 (analiz: /home/s/ss/plv2.md, bulgu p4legacy-03).

SORUN: Bu markalar ana gruplarını <a href> ile DEĞİL, satır attribute'uyla
veriyor:
  Opel     <tr class="tc-data-row" jsonurl="json-vin-main-group.action?catId=25
             &mainGroupId=394…" caption="BODY SHELL AND PANELS" ident="394">
  Hyundai  <tr class="tc-data-row" url="vin-group.action?…&mainGroup=BO…">
             <td>BO</td><td>BODY</td>
decodeVin yolu yalnız anchor tarayan parseP4NavigationCategories'i kullanıyordu
→ sayfa listeyi taşıdığı hâlde 0 kategori. Prod ölçümü (raw_data.categories):
Opel 177/181 (%97,8), Hyundai 12/12, Kia 6/6, Nissan 1/1 araç decode anında BOŞ.
(Kategori tablosu sonradan lazy-seed ile doluyor, ama decode kategorisiz
döndüğü için kullanıcı ilk açılışta boş görüyor ve prefetch self-seed'e zorlanıyor.)

Üç ayrı kusur vardı:
1. `parseFordGroupsFromHtml` bu satırları zaten anlıyor ama decode'dan hiç
   çağrılmıyordu → kategori zincirine fallback olarak eklendi
   (JSON ucu → tc-data-row tablosu → anchor taraması).
2. Volvo için konmuş `vin-group.action && !group1=` guard'ı Hyundai/Kia'nın
   AYNI ucu `mainGroup=` anahtarıyla kullanan gerçek ana gruplarını da eliyordu
   → artık `group1=` veya `mainGroup=` taşıyan satırlar korunuyor.
3. Satır attribute'ları HTML-escaped (`&amp;`), bu yüzden `[?&]mainGroup=`
   kontrolü hiç tutmuyordu → URL artık ayrıştırma anında entity-decode ediliyor
   (saklanan linkPath de böylece temiz).

Test: yeni `pl24-p4-groups.spec.ts` + 2026-09-16 canlı yakalamalarından kırpılmış
fixture'lar (`__fixtures__/p4_{opel,hyundai,ford,nissan}.html`). Opel 31 ana grup
("BODY SHELL AND PANELS"…), Hyundai 6 ("BODY"…), anchor-only parser'ın bu
sayfalarda hâlâ 0 döndüğü (fallback'in gerekçesi), Ford sharedCatCode scope
satırlarının bozulmadığı ve Nissan model-seçim satırlarının elendiği kilitlendi.
213 test geçti; tsc + biome temiz.

NOT: db_hit kısa devresi yüzünden mevcut araçlar kendiliğinden düzelmez; kazanç
yeni decode'larda. Toplu yeniden decode Faz 2'de.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
root merged commit d9bc61b99e into main 2026-09-17 14:51:35 +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#264