Audit all supplied requirements across complete long drafts
This commit is contained in:
@@ -133,6 +133,7 @@ const OfferAssistantSession = ({ tender }) => {
|
||||
<span className="text-xs text-slate-500">{denetim.maddeler.length} gereklilik · {denetim.eksikler.length} eksik · {denetim.belirsizSayisi ?? 0} kontrol gerekli</span>
|
||||
</div>
|
||||
<p className="text-xs text-slate-600">Listede alıntıyla desteklenen karşılanma oranı. {denetim.kapsam}</p>
|
||||
{denetim.auditReview && <p className="text-xs text-slate-600">{denetim.auditReview.requirementGroups} gereklilik grubu · {denetim.auditReview.draftParts} taslak bölümü · {denetim.auditReview.failedCalls} başarısız kontrol</p>}
|
||||
{denetim.ozet && <p className="text-sm text-slate-700">{denetim.ozet}</p>}
|
||||
<ul className="space-y-1.5">
|
||||
{denetim.maddeler.map((m, i) => (
|
||||
|
||||
@@ -13,6 +13,7 @@ export function validateOfferResponse(url, data) {
|
||||
valid = Array.isArray(data.maddeler) && data.maddeler.length > 0
|
||||
&& data.maddeler.every(row => object(row) && text(row.gereklilik) && ['karsilaniyor','eksik','belirsiz'].includes(row.durum) && optionalText(row.kanit) && optionalText(row.oneri))
|
||||
&& texts(data.eksikler) && Number.isFinite(data.uyum_yuzde) && data.uyum_yuzde >= 0 && data.uyum_yuzde <= 100
|
||||
&& (data.auditReview == null || (object(data.auditReview) && ['requirementGroups','draftParts','failedCalls'].every(key => Number.isInteger(data.auditReview[key]) && data.auditReview[key] >= 0)))
|
||||
&& Number.isInteger(data.belirsizSayisi) && data.belirsizSayisi >= 0 && optionalText(data.ozet) && optionalText(data.kapsam);
|
||||
} else if (valid && url === '/api/ai/teklif-taslak') {
|
||||
valid = Array.isArray(data.bolumler) && data.bolumler.length > 0
|
||||
|
||||
Reference in New Issue
Block a user