SHARProduction's picture
Publish browser-local stakeholder input gap mapper
eee03f1 verified
Raw History Blame Contribute Delete
734 Bytes
export function mapInput({requiredRoles,answers}){const roles=Array.isArray(requiredRoles)?requiredRoles:[];const rows=Array.isArray(answers)?answers:[];const fields=[...new Set(rows.map(r=>r?.field).filter(Boolean))];const gaps=[];const conflicts=[];for(const field of fields){const present=rows.filter(r=>r?.field===field&&String(r?.value??'').trim());const roleSet=new Set(present.map(r=>r.role));const missing=roles.filter(r=>!roleSet.has(r));if(missing.length)gaps.push({field,missing_roles:missing});const values=[...new Set(present.map(r=>String(r.value).trim().toLowerCase()))];if(values.length>1)conflicts.push({field,values})}return{valid:gaps.length===0&&conflicts.length===0,fields_checked:fields.length,gaps,conflicts}}