Skip to content

feat(obd): canlı PID/DID keşfini DiscoveryCaptureService'e bağla (PR-DISC-2)#23

Open
selimmujdeci wants to merge 1 commit into
mainfrom
feat/discovery-live-capture
Open

feat(obd): canlı PID/DID keşfini DiscoveryCaptureService'e bağla (PR-DISC-2)#23
selimmujdeci wants to merge 1 commit into
mainfrom
feat/discovery-live-capture

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

Konu

Wire Discovery Capture Pipeline into Live PID/DID Discovery — PR-DISC-1 altyapısını araçta çalışan gerçek keşif yollarına bağlar.

Discovery mimarisi değişmedi. Her bağlama fail-soft (yakalama hatası keşfi etkilemez) ve additive. PID registry / DTC kataloğu / native katman / hot-poll mantığı / SQL-Supabase'e DOKUNULMADI. Ağ çağrısı yok. PR #11'e dokunulmadı.

Discovery bağlanan servisler

Servis Bağlama noktası Davranış
extendedPidService _onExtendedData keşif bitmask dalı Araç DESTEKLİYOR ama registry'de OLMAYAN PID → capture. Aralık-bayrağı (00/20/40/…) + registry'dekiler ELENİR. request=01<base>, rawResponse=bitmask.
didDiscoveryService startDiscovery pozitif dal Yalnız POZİTİF (supported && data) DID → capture. 7F/NO DATA negatif dalda kaydedilmez. ecuAddress=rx, request=22<did>.
manufacturerPidService loadProfile/unloadProfile + _tick setKnownDids(profil DID'leri) = katalog tanımı. _tick çözümlemesinde capture çağrısı; profil (katalog) DID'leri "bilinir" → elenir, yalnız katalog dışı yakalanır.

Capture edilen bilgiler

timestamp · vehicleProfile · ecuAddress · protocol · mode · pidOrDid · request · rawResponse · decodedValue? · supported · discoverySource · firmwareVersion? (PR-DISC-1 modeli aynen).

Kurallar (hepsi karşılandı)

Discovery başarısızsa / NO DATA / duplicate / registry PID → kayıt yok; tanı event'i (ecuQuery info) oluşur; queue'ya düşer; export hazır; ağ çağrısı yok.

Değişen dosyalar

  • src/platform/obd/extendedPidService.ts (M) — keşif dalında PID capture
  • src/platform/obd/didDiscoveryService.ts (M) — pozitif DID capture
  • src/platform/obd/manufacturerPidService.ts (M) — known-DID köprüsü + _tick capture
  • src/__tests__/discoveryLiveCapture.test.ts (yeni) — 10 test

Yeni test sayısı

10 (yeşil): yeni PID capture · registry PID eklenmiyor · aralık bayrağı eklenmiyor · hot-poll/native liste değişmedi · yeni DID capture · NO DATA/plugin-yok → capture yok · duplicate filtre · tanı event · queue + JSON export · manufacturer katalog DID yakalanmaz + unload sonrası katalog dışı yakalanır.

Mevcut süitler: patch8.service / patch12c / discoveryCapture / pidExpansion (71/71) yeşil; tsc -b + ESLint temiz; regresyon kasası etkilenmedi.

Risk analizi

Düşük. Üç servise yalnız fail-soft capture çağrıları eklendi; discovery/poll akışları, _buildNativeList, core PID seti değişmedi (test: capture native poll'a sızmıyor). Yeni bağımlılık yok; yakalama tamamen soğuk-yolda (keşif/DID tarama, hot-path değil). Güvenlik: kayıtlarda MAC/PII yok; yalnız yerel queue/export (ağ yok).

Not: Tam yerel süitte 23 test env-gated (Supabase/OTA/device-pair — gitignore'lu .env gerektirir, discovery ile ilgisiz); CI'da secrets mevcut olduğundan yeşil.

🤖 Generated with Claude Code

…DISC-2)

PR-DISC-1 altyapısını (discoveryCaptureService) araçta çalışan gerçek keşif
yollarına bağlar. Discovery mimarisi DEĞİŞMEDİ; her bağlama fail-soft (yakalama
hatası keşfi etkilemez) ve ADDITIVE. PID registry / DTC kataloğu / native katman /
hot-poll mantığı / SQL-Supabase'e DOKUNULMADI.

Bağlanan katmanlar:
- extendedPidService (_onExtendedData keşif dalı): bitmask'te araç DESTEKLİYOR ama
  registry'de OLMAYAN standart PID'ler capture edilir. Aralık-bayrağı PID'leri
  (00/20/40/…) ve registry'dekiler ELENİR. request=01<base>, rawResponse=bitmask.
- didDiscoveryService (startDiscovery): yalnız POZİTİF (supported && data) DID'ler
  capture; 7F/NO DATA negatif dalda KAYDEDİLMEZ. ecuAddress=rx, request=22<did>.
- manufacturerPidService: loadProfile → setKnownDids(profil DID'leri) (katalog tanımı);
  unloadProfile → setKnownDids([]). _tick çözümlemesinde capture çağrısı — profil
  (katalog) DID'leri "bilinir" olduğundan elenir, yalnız katalog dışı DID yakalanır.

Kurallar (görev): discovery başarısızsa/NO DATA/duplicate/registry PID → kayıt YOK;
tanı event'i ('ecuQuery' info) oluşur; queue'ya düşer; export hazır; ağ çağrısı YOK.

Test src/__tests__/discoveryLiveCapture.test.ts (10 kilit):
- yeni PID capture · registry PID eklenmiyor · aralık bayrağı eklenmiyor
- hot-poll/native liste DEĞİŞMEDİ (capture native poll'a sızmıyor)
- yeni DID capture · NO DATA/plugin-yok → capture yok
- duplicate filtre · tanı event'i · queue + JSON export
- manufacturer: katalog DID'i yakalanmaz; unload sonrası katalog dışı → yakalanır

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ABwbnF4mBZ8Pz4NisRibVE
@vercel

vercel Bot commented Jul 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
car-launcher-pro Ready Ready Preview, Comment Jul 9, 2026 3:40pm
carospro Ready Ready Preview, Comment Jul 9, 2026 3:40pm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant