use canonical province map for direct tenders

This commit is contained in:
2026-09-06 19:36:00 +03:00
parent 89a6f401c8
commit 74e784e2f7
3 changed files with 19 additions and 5 deletions
+6
View File
@@ -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. Ü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. 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.
+1 -5
View File
@@ -21,6 +21,7 @@ import fs from 'node:fs';
import path from 'node:path'; import path from 'node:path';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
import { chromium } from 'playwright'; import { chromium } from 'playwright';
import { IL_PLAKA } from './il-plaka.mjs';
const __dirname = path.dirname(fileURLToPath(import.meta.url)); const __dirname = path.dirname(fileURLToPath(import.meta.url));
const DATA_DIR = path.join(__dirname, 'data'); 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 // 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 // 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 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) { function mapListRow(r) {
const plaka = Number(r.E12); const plaka = Number(r.E12);
+12
View File
@@ -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');
});