fix: carry source-backed bid validity into preparation drafts
This commit is contained in:
@@ -32,6 +32,7 @@ export function bidSourceSnapshot(tender, results, rows = sourceRows(tender, res
|
||||
announcement: tender?.aciklama || '',
|
||||
deadline: [tender?.tarih || '', tender?.saat || ''],
|
||||
documentVersion: results?.documentVersion ?? tender?.documentVersion ?? null,
|
||||
procurementTerms: results?.procurementTerms || null,
|
||||
analyzedItems: results?.itemsAndSpecs || [],
|
||||
rows: rows.map(r => r.priceKey).sort(),
|
||||
documents: results?.documentChecklist || [],
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
// Extract only explicitly labelled bid validity clauses; delivery/warranty days are unrelated.
|
||||
export function extractBidValidity(text) {
|
||||
const source=String(text || '');
|
||||
const pattern=/teklif(?:lerin|in)?\s+geçerlilik\s+süresi[^\n.\d]{0,100}(\d{1,4})(?:\s*\([^)]{0,80}\))?\s*(?:takvim\s*)?gün/giu;
|
||||
const evidence=[];
|
||||
for(const match of source.toLocaleLowerCase('tr-TR').matchAll(pattern)) {
|
||||
const days=Number(match[1]);
|
||||
if(days>0) evidence.push({days,quote:source.slice(match.index,match.index+match[0].length),start:match.index,end:match.index+match[0].length});
|
||||
}
|
||||
const values=[...new Set(evidence.map(e=>e.days))];
|
||||
return {status:values.length>1?'conflict':values.length?'found':'not_found',days:values.length===1?values[0]:null,evidence};
|
||||
}
|
||||
|
||||
export function bidValidityForForm(announcement, analyzed) {
|
||||
const local=extractBidValidity(announcement);
|
||||
const evidence=[...local.evidence,...(Array.isArray(analyzed?.evidence)?analyzed.evidence:[])];
|
||||
const values=[...new Set(evidence.map(e=>e.days).filter(d=>Number.isInteger(d)&&d>0))];
|
||||
return {status:values.length>1?'conflict':values.length?'found':'not_found',days:values.length===1?values[0]:null,evidence};
|
||||
}
|
||||
Reference in New Issue
Block a user