diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md index 3195315..2dedb3b 100644 --- a/docs/quality/uygulama-durumu.md +++ b/docs/quality/uygulama-durumu.md @@ -2284,3 +2284,9 @@ Doğrulama: `npm run qa:browser` başarılı; `accountScopedAnalyticsTarget`, `p Üretimde kullanılmayan ancak kendisini gerçek canlı EKAP akışı gibi tanımlayan sabit ihale modülü kaldırıldı. Modül, resmî kaynaktan alınmış gibi görünen geleceğe tarihli ihale, miktar ve fiyatlar içeriyordu; bu kayıtların yanlışlıkla canlı havuza veya teklif hazırlığına girmesi engellendi. Yerel sentetik kabul verileri yalnız `tests/fixtures` ve `tests/browser-qa.mjs` altında açık test kapsamıyla tutuluyor. Doğrulama: depo içinde bu modüle ait import/referans kalmadı; `npm test` ve üretim derlemesi başarılı. Canlı adayların resmî ilan/doküman doğrulaması ve kaynak sağlayıcı kabulü ayrıca açık. + +### 2026-09-06 · D05 doğrudan temin il kodlarının tamamlanması + +Doğrudan temin worker’ı yalnızca seçili illeri tanıyan yerel tablo yerine ortak 81 il plaka haritasını kullanıyor. Böylece 2–5 ve 28–81 arası kodlar artık “Plaka N” olarak kaybolmuyor; arama, bölge ve sağlık tedarikçisi filtreleri kanonik il adını alıyor. + +Doğrulama: yeni regresyon 1–81 kodlarının tamamını ve Giresun, Aksaray, Iğdır, Düzce örneklerini doğruluyor. `npm test` 297/297 ve üretim derlemesi başarılı; gerçek DT worker taraması ve canlı veri kabulü hâlâ açık. diff --git a/server/dt-worker.mjs b/server/dt-worker.mjs index 01c6432..8b7cd6a 100644 --- a/server/dt-worker.mjs +++ b/server/dt-worker.mjs @@ -21,6 +21,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { chromium } from 'playwright'; +import { IL_PLAKA } from './il-plaka.mjs'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const DATA_DIR = path.join(__dirname, 'data'); @@ -187,11 +188,6 @@ async function refreshSession(sess) { // E1=DTN E2=işin adı E3=idare adı E4=tür kodu E7=DT tarihi E8=yayım tarihi // E10=dogrudanTeminId E11=idareId E12=il plaka kodu E13=ilan var E14=e-ihale const TUR_KODU = { 1: 'Mal Alımı', 2: 'Hizmet Alımı', 3: 'Konaklama/Hizmet', 4: 'Danışmanlık' }; -const IL_PLAKA = { - 1: 'Adana', 6: 'Ankara', 7: 'Antalya', 16: 'Bursa', 21: 'Diyarbakır', 25: 'Erzurum', - 26: 'Eskişehir', 27: 'Gaziantep', 34: 'İstanbul', 35: 'İzmir', 38: 'Kayseri', 41: 'Kocaeli', - 42: 'Konya', 44: 'Malatya', 55: 'Samsun', 61: 'Trabzon', 65: 'Van', 63: 'Şanlıurfa', -}; function mapListRow(r) { const plaka = Number(r.E12); diff --git a/tests/il-plaka.test.mjs b/tests/il-plaka.test.mjs new file mode 100644 index 0000000..608d939 --- /dev/null +++ b/tests/il-plaka.test.mjs @@ -0,0 +1,12 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { IL_PLAKA } from '../server/il-plaka.mjs'; + +test('canonical province map covers all 81 Turkish plate codes', () => { + const codes = Object.keys(IL_PLAKA).map(Number).sort((a, b) => a - b); + assert.deepEqual(codes, Array.from({ length: 81 }, (_, index) => index + 1)); + assert.equal(IL_PLAKA[28], 'Giresun'); + assert.equal(IL_PLAKA[68], 'Aksaray'); + assert.equal(IL_PLAKA[76], 'Iğdır'); + assert.equal(IL_PLAKA[81], 'Düzce'); +});