support tender deadline label variants
This commit is contained in:
@@ -31,7 +31,15 @@ export function announcementFields(text) {
|
||||
// EKAP table cells are separated by pipes in extracted text. Keep the
|
||||
// original announcement intact; normalize separators only for field parsing.
|
||||
const fields = content.replace(/\s*\|\s*/g, ' ');
|
||||
const deadline = /Tarih\s*ve\s*Saati\s*:\s*(\d{2}\.\d{2}\.\d{4})\s*[-–]?\s*(\d{2}:\d{2})/i.exec(fields);
|
||||
// EKAP/ilan kaynakları aynı son teklif anını farklı başlıklarla verir.
|
||||
// Yalnız tarih + saat birlikte bulunduğunda alan üret; teslim süresi gibi
|
||||
// yalnızca tarih içeren maddeleri son teklif tarihi sanma.
|
||||
const deadlinePatterns = [
|
||||
/Tarih\s*ve\s*Saati\s*:\s*(\d{2}\.\d{2}\.\d{4})\s*[-–]?\s*(\d{2}:\d{2})/i,
|
||||
/(?:İhale\s+|Son\s+Teklif\s+)?Tarih(?:i)?\s*(?:\/\s*Saat(?:i)?|ve\s+Saat(?:i)?|\s+Saat(?:i)?)\s*:\s*(\d{2}\.\d{2}\.\d{4})\s*[-–]?\s*(\d{2}:\d{2})/i,
|
||||
/Son\s+Teklif\s+Tarihi\s*:\s*(\d{2}\.\d{2}\.\d{4})\s*[-–]?\s*(\d{2}:\d{2})/i,
|
||||
];
|
||||
const deadline = deadlinePatterns.map(pattern => pattern.exec(fields)).find(Boolean);
|
||||
if (deadline) { result.tarih = deadline[1]; result.saat = deadline[2]; }
|
||||
const place = /3\.3\.?\s*[^:]{0,120}:\s*([\s\S]*?)(?=3\.4\.?)/i.exec(fields);
|
||||
const duration = /3\.4\.?\s*[^:]{0,100}:\s*([\s\S]*?)(?=3\.5\.?|4\s*[-–])/i.exec(fields);
|
||||
|
||||
Reference in New Issue
Block a user