Skip to content

feat(vehicle): Otomatik Araç Parmak İzi Üreticisi (PR-26)#26

Merged
selimmujdeci merged 2 commits into
mainfrom
feat/automatic-vehicle-fingerprint
Jul 9, 2026
Merged

feat(vehicle): Otomatik Araç Parmak İzi Üreticisi (PR-26)#26
selimmujdeci merged 2 commits into
mainfrom
feat/automatic-vehicle-fingerprint

Conversation

@selimmujdeci

Copy link
Copy Markdown
Owner

Amaç

PR-25'te kurulan Vehicle Fingerprint Foundation'ı canlı OBD akışına güvenle bağlar. Araç bağlandıktan sonra fingerprint otomatik oluşur, kaydedilir; aynı araç tekrar gelince duplicate üretilmez. Bu, kendi kendini öğrenen araç bilgi tabanının ilk canlı adımı.

⚠️ STACKED PR: Bu PR, henüz main'e merge edilmemiş PR #25 (foundation) üzerine kuruludur. Base bilerek feat/vehicle-fingerprint-foundation seçildi → temiz incremental diff (yalnız PR-26). PR #25 merge edilince bu PR otomatik main'e retarget olur. Önce #25, sonra #26 merge edilmeli.

Kapsam — yalnızca fingerprint üretimini otomatik hale getirir

  • useVidStore analiz + abonelik: bağlantı tamamlanınca (taşıma doğrulandı + protokol) VID + Discovery gözlemlerinden fingerprint üret → kaydet
  • ✅ Aynı hash → duplicate yok (lastSeen güncelle · sourceCount++ · confidence↑)
  • ✅ Yeni araç → yeni kayıt (createdAt · firstSeen · lastSeen · başlangıç confidence)
  • Profile Hint (ilk sürüm): VIN WMI'sinden marka ipucu (Renault/Ford/Toyota/Dacia…); VIN yoksa ''
  • Discovery entegrasyonu: yalnız getObservations() SALT-OKUNUR tüketilir — pipeline/queue/capture değişmez

Yeni dosyalar

Dosya İçerik
src/platform/vehicleFingerprintBuilder.ts Entegrasyon katmanı: ingest + profileHint + AutomaticVehicleFingerprint (abonelik)
src/__tests__/vehicleFingerprintBuilder.test.ts 16 unit test

Değişen dosyalar (additive)

Dosya Değişiklik
src/platform/system/SystemBoot.ts Wave-3'e startAutomaticVehicleFingerprint() + _reg cleanup (tek satır, mevcut pattern)

Foundation (vehicleFingerprintService.ts) değiştirilmedi — builder ayrı katman (Clean Arch).

Testler (16)

İlk bağlantıda üretim · aynı araç duplicate üretmiyor · lastSeen güncelleniyor · sourceCount artıyor · confidence artıyor (tavan 1.0) · VIN→profileHint · VIN yoksa çalışıyor · Discovery bağlıyken davranış değişmiyor (queue sabit) · fail-soft (depo hata fırlatsa da akış çökmez) · kimlik-imza guard (telemetri tick'i yeni kayıt üretmez) · isConnectionComplete · collectEcuAddresses · assemble/signature.

Risk analizi

Düşük — davranış değişikliği yok.

  • Hot-path korunur: useVidStore aboneliği her değişimde tetiklense de kimlik-imza guard (VIN/protocol/ECU/adaptör) değişmedikçe erken-döner → yüksek-frekanslı telemetri tick'lerinde safeStorage yazımı YOK.
  • Fail-soft: fingerprint üretimi/depolaması başarısız olsa hata yutulur; mevcut OBD akışı aynen devam eder (testle kilitli).
  • Zero-leak: abonelik _reg ile boot cleanup'a kayıtlı.
  • Dokunulmadı: hot-poll · native · Discovery queue/pipeline · PID/DID registry · SQL/Supabase · cloud sync · PR feat(diag): support snapshot — remote logs, OBD lifecycle, thermal/connectivity diagnostics #11.
  • Bilinen sınır: bağlantı VIN'den önce tamamlanırsa (staged) VIN'siz + VIN'li iki kimlik oluşur (hash-tabanlı dedup). VIN-birleştirme PR-27 (Auto Learning) kapsamı.

Doğrulama

  • tsc --noEmit temiz · eslint temiz
  • 2420 test yeşil (16 yeni dahil) — yalnız 23 bilinen env-gated hata (Supabase/OTA/keyBeam, ilgisiz)

Saha doğrulama

🔴 Cihazda doğrulanmadı — gerçek araç bağlanışında otomatik fingerprint üretimi gözlemlenmeli.

Merge YAPILMADI.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Fauew13VP3vbfKqnocPdfX

PR-25 foundation'ını canlı OBD akışına GÜVENLE bağlar: araç bağlanınca (VID:
taşıma doğrulandı + protokol biliniyor) VID + Discovery gözlemlerinden fingerprint
OTOMATİK üretilir, kaydedilir; aynı araç tekrar gelince duplicate ÜRETMEZ.

- vehicleFingerprintBuilder.ts (yeni, entegrasyon katmanı):
  * ingestVehicleFingerprint: yeni kayıt (createdAt/firstSeen/lastSeen + başlangıç
    güveni + profileHint) / aynı hash → duplicate YOK (lastSeen + sourceCount++ +
    confidence↑)
  * profileHintFromVin: VIN WMI → marka ipucu (Renault/Ford/Toyota…); VIN yoksa ''
  * AutomaticVehicleFingerprint: useVidStore aboneliği + KİMLİK-İMZA guard
    (telemetri tick'i iş üretmez → hot-path korunur) + FAIL-SOFT
  * Discovery: yalnız getObservations() SALT-OKUNUR tüketilir (pipeline DEĞİŞMEZ)
- SystemBoot Wave-3: startAutomaticVehicleFingerprint() additive wiring + _reg cleanup

Kapsam dışı (dokunulmadı): hot-poll · native · Discovery queue · PID/DID registry ·
SQL/Supabase · cloud sync. Foundation (vehicleFingerprintService) DEĞİŞMEDİ.

NOT: PR-25 üzerine STACKED (foundation henüz main'de değil). Staged VIN (bağlantı
VIN'den önce tamamlanırsa) VIN'siz+VIN'li iki kimlik üretir → VIN-birleştirme PR-27
(Auto Learning) kapsamı; bu PR hash-tabanlı dedup yapar.

16 yeni test. tsc temiz · eslint temiz · 2420 test yeşil (yalnız 23 bilinen env-gated, ilgisiz)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fauew13VP3vbfKqnocPdfX
@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 8:59pm
carospro Ready Ready Preview, Comment Jul 9, 2026 8:59pm

… (PR-26)

erasableSyntaxOnly (tsconfig.app/node) constructor parametre özelliklerini reddediyor
(tsc -b). Davranış AYNI: AutomaticVehicleFingerprint constructor'ı açık field + atama.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fauew13VP3vbfKqnocPdfX
selimmujdeci pushed a commit that referenced this pull request Jul 9, 2026
AutoLearningEngine constructor'ı açık field+atama (erasableSyntaxOnly). Ayrıca tsc -b
ile açığa çıkan latent TS2345: store.load()'un döndürdüğü kayıt VehicleKnowledge olarak
işaretlenir (depoda öyle saklanıyor) — davranış AYNI. (#26 fix merge-forward ile devralındı.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fauew13VP3vbfKqnocPdfX
@selimmujdeci
selimmujdeci merged commit a842dfb into main Jul 9, 2026
8 checks passed
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