MAZAD CAR DECISION ENGINE

تقارير Excel / PDF
Mazad Car v2.4.1-r21
');} const AR_PHRASES=[ ['coating thickness readings: there is difference in coating thickness','اختلاف في سماكة الدهان'], ['there is difference in coating thickness','اختلاف في سماكة الدهان'], ['tires condition: tires condition needs attention [less than 4mm]','الإطارات أقل من 4 مم'], ['tires condition: tires condition needs attention [less than 4 mm]','الإطارات أقل من 4 مم'], ['tires condition needs attention [less than 4mm]','الإطارات أقل من 4 مم'], ['tires condition needs attention [less than 4 mm]','الإطارات أقل من 4 مم'], ['tires condition needs attention','الإطارات تحتاج متابعة'], ['engine oil leakage','تهريب زيت المحرك'],['engine oil leak','تهريب زيت المحرك'],['engine oil seepage','رشح زيت المحرك'], ['transmission oil leak','تهريب زيت ناقل الحركة'],['coolant leak','تهريب سائل التبريد'], ['check engine light','لمبة فحص المحرك مضاءة'],['airbag warning light','لمبة تحذير الوسادة الهوائية مضاءة'], ['abs warning light','لمبة تحذير نظام الفرامل مضاءة'],['battery weak','البطارية ضعيفة'], ['tire wear','تآكل في الإطارات'],['tyre wear','تآكل في الإطارات'],['uneven tire wear','تآكل غير منتظم في الإطارات'], ['minor scratch','خدش بسيط'],['deep scratch','خدش عميق'],['scratch','خدش'], ['minor dent','بعجة بسيطة'],['major dent','بعجة كبيرة'],['dent','بعجة'], ['cracked','مشقوق'],['crack','شرخ'],['broken','مكسور'],['damage','ضرر'],['damaged','متضرر'], ['needs replacement','يحتاج استبدال'],['needs repair','يحتاج إصلاح'],['needs attention','يحتاج متابعة'], ['front bumper','الصدام الأمامي'],['rear bumper','الصدام الخلفي'], ['front right fender','الرفرف الأمامي يمين'],['front left fender','الرفرف الأمامي يسار'], ['rear right fender','الرفرف الخلفي يمين'],['rear left fender','الرفرف الخلفي يسار'], ['right front door','الباب الأمامي يمين'],['left front door','الباب الأمامي يسار'], ['right rear door','الباب الخلفي يمين'],['left rear door','الباب الخلفي يسار'], ['hood','الكبوت'],['bonnet','الكبوت'],['trunk','الشنطة'],['tailgate','باب الشنطة'],['roof','السقف'], ['windshield','الزجاج الأمامي'],['mirror','المرآة'],['headlight','الشمعة الأمامية'],['taillight','الشمعة الخلفية'], ['brake pads','فحمات الفرامل'],['brake pad','فحمة الفرامل'],['brake disc','قرص الفرامل'], ['shock absorber','مساعد'],['control arm','مقص'],['ball joint','مفصل كروي'],['tie rod','ذراع توجيه'], ['engine mount','قاعدة المحرك'],['transmission mount','قاعدة ناقل الحركة'], ['a/c','المكيف'],['air conditioning','المكيف'] ]; function translateArPhrase(v){ let x=clean(v);if(!x)return ''; for(const [from,to] of AR_PHRASES)x=x.replace(new RegExp(escapeRe(from),'gi'),to); x=x.replace(/\b4WD\b/gi,'دفع رباعي').replace(/\bAWD\b/gi,'دفع كلي').replace(/\b2WD\b/gi,'دفع ثنائي').replace(/\bFWD\b/gi,'دفع أمامي').replace(/\bRWD\b/gi,'دفع خلفي') .replace(/\bTPMS\b/gi,'نظام مراقبة ضغط الإطارات').replace(/\bSRS\b/gi,'نظام الوسائد الهوائية').replace(/\bABS\b/gi,'نظام منع انغلاق المكابح') .replace(/\bSAR\b/gi,'ر.س').replace(/\bmm\b/gi,'مم').replace(/\bkm\b/gi,'كم'); return clean(x); } function splitIssueClauses(text){ let x=clean(text); x=x .replace(/Grade\s+(?:CLEAN|COSMETIC|MODERATE|HEAVY|STRUCTURAL_REVIEW|REJECT|NO_REPORT)\.?/gi,' | ') .replace(/Structural\s+(?:PASS|PASSED)\.?/gi,' | ') .replace(/Structural\s+(?:FAIL|FAILED|REVIEW|STRUCTURAL_REVIEW)\.?/gi,' | Structural condition needs inspection | ') .replace(/\b0\s+body panels flagged\.?/gi,' | ') .replace(/\b([1-9]\d*)\s+body panels flagged\.?/gi,' | $1 body panels flagged | ') .replace(/\b0\s+mechanical failures?\.?/gi,' | ') .replace(/\b([1-9]\d*)\s+mechanical failures?\.?/gi,' | $1 mechanical issues | ') .replace(/\b0\s+safety failures?\.?/gi,' | ') .replace(/\b([1-9]\d*)\s+safety failures?\.?/gi,' | $1 safety issues | ') .replace(/Repair\s+Range\s+SAR\s*[0-9,.]+\s*-\s*[0-9,.]+\.?/gi,' | ') .replace(/Repair\s+range\s+SAR\s*[0-9,.]+\s*-\s*[0-9,.]+\.?/gi,' | ') .replace(/التصنيف\s*:\s*[^|؛.]+[.؛]?/g,' | ') .replace(/الحالة الهيكلية\s*:\s*سليم[.؛]?/g,' | ') .replace(/ألواح الهيكل المتأثرة\s*:\s*0[.؛]?/g,' | ') .replace(/أعطال ميكانيكية\s*:\s*0[.؛]?/g,' | ') .replace(/ملاحظات سلامة\s*:\s*0[.؛]?/g,' | ') .replace(/نطاق الإصلاح\s*:\s*[0-9,.-]+\s*ر\.س[.؛]?/g,' | '); return x.split(/\||؛/).map(clean).filter(Boolean); } function arIssue(v){ let x=clean(v);if(!x)return ''; x=x.replace(/Structural condition needs inspection/gi,'ملاحظة هيكلية تحتاج فحص') .replace(/([1-9]\d*) body panels flagged/gi,'ألواح هيكل متأثرة: $1') .replace(/([1-9]\d*) mechanical issues/gi,'أعطال ميكانيكية: $1') .replace(/([1-9]\d*) safety issues/gi,'ملاحظات سلامة: $1'); x=translateArPhrase(x); x=x.replace(/قراءات سماكة (?:الدهان|الطلاء)\s*:\s*يوجد اختلاف في سماكة (?:الدهان|الطلاء)/g,'اختلاف في سماكة الدهان') .replace(/يوجد اختلاف في سماكة (?:الدهان|الطلاء)/g,'اختلاف في سماكة الدهان') .replace(/حالة الإطارات\s*:\s*حالة الإطارات تحتاج متابعة\s*\[?\s*أقل من 4 مم\s*\]?/g,'الإطارات أقل من 4 مم') .replace(/حالة الإطارات تحتاج متابعة\s*\[?\s*أقل من 4 مم\s*\]?/g,'الإطارات أقل من 4 مم'); const hadLatin=/[A-Za-z]/.test(x); x=x.replace(/[A-Za-z]+/g,' ').replace(/\s+/g,' ').replace(/\s*:\s*/g,': ').trim(); if(!x&&hadLatin)return 'ملاحظة فنية إضافية في تقرير الفحص'; if(hadLatin && !/[\u0600-\u06FF]/.test(x))return 'ملاحظة فنية إضافية في تقرير الفحص'; return latinDigits(x); } function enIssue(v){ let x=clean(v);if(!x)return ''; x=x.replace(/Coating Thickness Readings\s*:\s*There Is Difference In Coating Thickness/gi,'Paint thickness variation') .replace(/There Is Difference In Coating Thickness/gi,'Paint thickness variation') .replace(/Tires? Condition\s*:\s*Tires? Condition Needs Attention\s*\[\s*Less than 4\s*mm\s*\]/gi,'Tire tread below 4 mm') .replace(/Tires? Condition Needs Attention\s*\[\s*Less than 4\s*mm\s*\]/gi,'Tire tread below 4 mm'); return latinDigits(x.replace(/[\u0600-\u06FF]+/g,' ').replace(/\s+/g,' ').trim()); } function summarize(text,lang){ const out=[],seen=new Set(); for(const clause of splitIssueClauses(text)){ const raw=lang==='ar'?arIssue(clause):enIssue(clause);const value=clean(raw).replace(/[.،؛;:\s]+$/g,'').trim(); if(!value)continue; const key=value.toLowerCase();if(seen.has(key))continue;seen.add(key);out.push(value); } return out.join(lang==='ar'?'؛ ':'; '); } function language(){return clean(document.documentElement.lang).toLowerCase().startsWith('en')?'en':'ar';} function findDefectIndex(table){const ths=[...table.querySelectorAll('thead th')];for(let i=0;i{queued=false;ensureUi();localizeTables();normalizeVisibleDigits();});} new MutationObserver(run).observe(document.documentElement,{attributes:true,attributeFilter:['lang','dir']}); new MutationObserver(run).observe(document.body,{subtree:true,childList:true,characterData:true}); run(); })();');} const AR_PHRASES=[ ['coating thickness readings: there is difference in coating thickness','اختلاف في سماكة الدهان'], ['there is difference in coating thickness','اختلاف في سماكة الدهان'], ['tires condition: tires condition needs attention [less than 4mm]','الإطارات أقل من 4 مم'], ['tires condition: tires condition needs attention [less than 4 mm]','الإطارات أقل من 4 مم'], ['tires condition needs attention [less than 4mm]','الإطارات أقل من 4 مم'], ['tires condition needs attention [less than 4 mm]','الإطارات أقل من 4 مم'], ['tires condition needs attention','الإطارات تحتاج متابعة'], ['engine oil leakage','تهريب زيت المحرك'],['engine oil leak','تهريب زيت المحرك'],['engine oil seepage','رشح زيت المحرك'], ['transmission oil leak','تهريب زيت ناقل الحركة'],['coolant leak','تهريب سائل التبريد'], ['check engine light','لمبة فحص المحرك مضاءة'],['airbag warning light','لمبة تحذير الوسادة الهوائية مضاءة'], ['abs warning light','لمبة تحذير نظام الفرامل مضاءة'],['battery weak','البطارية ضعيفة'], ['tire wear','تآكل في الإطارات'],['tyre wear','تآكل في الإطارات'],['uneven tire wear','تآكل غير منتظم في الإطارات'], ['minor scratch','خدش بسيط'],['deep scratch','خدش عميق'],['scratch','خدش'], ['minor dent','بعجة بسيطة'],['major dent','بعجة كبيرة'],['dent','بعجة'], ['cracked','مشقوق'],['crack','شرخ'],['broken','مكسور'],['damage','ضرر'],['damaged','متضرر'], ['needs replacement','يحتاج استبدال'],['needs repair','يحتاج إصلاح'],['needs attention','يحتاج متابعة'], ['front bumper','الصدام الأمامي'],['rear bumper','الصدام الخلفي'], ['front right fender','الرفرف الأمامي يمين'],['front left fender','الرفرف الأمامي يسار'], ['rear right fender','الرفرف الخلفي يمين'],['rear left fender','الرفرف الخلفي يسار'], ['right front door','الباب الأمامي يمين'],['left front door','الباب الأمامي يسار'], ['right rear door','الباب الخلفي يمين'],['left rear door','الباب الخلفي يسار'], ['hood','الكبوت'],['bonnet','الكبوت'],['trunk','الشنطة'],['tailgate','باب الشنطة'],['roof','السقف'], ['windshield','الزجاج الأمامي'],['mirror','المرآة'],['headlight','الشمعة الأمامية'],['taillight','الشمعة الخلفية'], ['brake pads','فحمات الفرامل'],['brake pad','فحمة الفرامل'],['brake disc','قرص الفرامل'], ['shock absorber','مساعد'],['control arm','مقص'],['ball joint','مفصل كروي'],['tie rod','ذراع توجيه'], ['engine mount','قاعدة المحرك'],['transmission mount','قاعدة ناقل الحركة'], ['a/c','المكيف'],['air conditioning','المكيف'] ]; function translateArPhrase(v){ let x=clean(v);if(!x)return ''; for(const [from,to] of AR_PHRASES)x=x.replace(new RegExp(escapeRe(from),'gi'),to); x=x.replace(/\b4WD\b/gi,'دفع رباعي').replace(/\bAWD\b/gi,'دفع كلي').replace(/\b2WD\b/gi,'دفع ثنائي').replace(/\bFWD\b/gi,'دفع أمامي').replace(/\bRWD\b/gi,'دفع خلفي') .replace(/\bTPMS\b/gi,'نظام مراقبة ضغط الإطارات').replace(/\bSRS\b/gi,'نظام الوسائد الهوائية').replace(/\bABS\b/gi,'نظام منع انغلاق المكابح') .replace(/\bSAR\b/gi,'ر.س').replace(/\bmm\b/gi,'مم').replace(/\bkm\b/gi,'كم'); return clean(x); } function splitIssueClauses(text){ let x=clean(text); x=x .replace(/Grade\s+(?:CLEAN|COSMETIC|MODERATE|HEAVY|STRUCTURAL_REVIEW|REJECT|NO_REPORT)\.?/gi,' | ') .replace(/Structural\s+(?:PASS|PASSED)\.?/gi,' | ') .replace(/Structural\s+(?:FAIL|FAILED|REVIEW|STRUCTURAL_REVIEW)\.?/gi,' | Structural condition needs inspection | ') .replace(/\b0\s+body panels flagged\.?/gi,' | ') .replace(/\b([1-9]\d*)\s+body panels flagged\.?/gi,' | $1 body panels flagged | ') .replace(/\b0\s+mechanical failures?\.?/gi,' | ') .replace(/\b([1-9]\d*)\s+mechanical failures?\.?/gi,' | $1 mechanical issues | ') .replace(/\b0\s+safety failures?\.?/gi,' | ') .replace(/\b([1-9]\d*)\s+safety failures?\.?/gi,' | $1 safety issues | ') .replace(/Repair\s+Range\s+SAR\s*[0-9,.]+\s*-\s*[0-9,.]+\.?/gi,' | ') .replace(/Repair\s+range\s+SAR\s*[0-9,.]+\s*-\s*[0-9,.]+\.?/gi,' | ') .replace(/التصنيف\s*:\s*[^|؛.]+[.؛]?/g,' | ') .replace(/الحالة الهيكلية\s*:\s*سليم[.؛]?/g,' | ') .replace(/ألواح الهيكل المتأثرة\s*:\s*0[.؛]?/g,' | ') .replace(/أعطال ميكانيكية\s*:\s*0[.؛]?/g,' | ') .replace(/ملاحظات سلامة\s*:\s*0[.؛]?/g,' | ') .replace(/نطاق الإصلاح\s*:\s*[0-9,.-]+\s*ر\.س[.؛]?/g,' | '); return x.split(/\||؛/).map(clean).filter(Boolean); } function arIssue(v){ let x=clean(v);if(!x)return ''; x=x.replace(/Structural condition needs inspection/gi,'ملاحظة هيكلية تحتاج فحص') .replace(/([1-9]\d*) body panels flagged/gi,'ألواح هيكل متأثرة: $1') .replace(/([1-9]\d*) mechanical issues/gi,'أعطال ميكانيكية: $1') .replace(/([1-9]\d*) safety issues/gi,'ملاحظات سلامة: $1'); x=translateArPhrase(x); x=x.replace(/قراءات سماكة (?:الدهان|الطلاء)\s*:\s*يوجد اختلاف في سماكة (?:الدهان|الطلاء)/g,'اختلاف في سماكة الدهان') .replace(/يوجد اختلاف في سماكة (?:الدهان|الطلاء)/g,'اختلاف في سماكة الدهان') .replace(/حالة الإطارات\s*:\s*حالة الإطارات تحتاج متابعة\s*\[?\s*أقل من 4 مم\s*\]?/g,'الإطارات أقل من 4 مم') .replace(/حالة الإطارات تحتاج متابعة\s*\[?\s*أقل من 4 مم\s*\]?/g,'الإطارات أقل من 4 مم'); const hadLatin=/[A-Za-z]/.test(x); x=x.replace(/[A-Za-z]+/g,' ').replace(/\s+/g,' ').replace(/\s*:\s*/g,': ').trim(); if(!x&&hadLatin)return 'ملاحظة فنية إضافية في تقرير الفحص'; if(hadLatin && !/[\u0600-\u06FF]/.test(x))return 'ملاحظة فنية إضافية في تقرير الفحص'; return latinDigits(x); } function enIssue(v){ let x=clean(v);if(!x)return ''; x=x.replace(/Coating Thickness Readings\s*:\s*There Is Difference In Coating Thickness/gi,'Paint thickness variation') .replace(/There Is Difference In Coating Thickness/gi,'Paint thickness variation') .replace(/Tires? Condition\s*:\s*Tires? Condition Needs Attention\s*\[\s*Less than 4\s*mm\s*\]/gi,'Tire tread below 4 mm') .replace(/Tires? Condition Needs Attention\s*\[\s*Less than 4\s*mm\s*\]/gi,'Tire tread below 4 mm'); return latinDigits(x.replace(/[\u0600-\u06FF]+/g,' ').replace(/\s+/g,' ').trim()); } function summarize(text,lang){ const out=[],seen=new Set(); for(const clause of splitIssueClauses(text)){ const raw=lang==='ar'?arIssue(clause):enIssue(clause);const value=clean(raw).replace(/[.،؛;:\s]+$/g,'').trim(); if(!value)continue; const key=value.toLowerCase();if(seen.has(key))continue;seen.add(key);out.push(value); } return out.join(lang==='ar'?'؛ ':'; '); } function language(){return clean(document.documentElement.lang).toLowerCase().startsWith('en')?'en':'ar';} function findDefectIndex(table){const ths=[...table.querySelectorAll('thead th')];for(let i=0;i{queued=false;ensureUi();localizeTables();normalizeVisibleDigits();});} new MutationObserver(run).observe(document.documentElement,{attributes:true,attributeFilter:['lang','dir']}); new MutationObserver(run).observe(document.body,{subtree:true,childList:true,characterData:true}); run(); })();