\n\n
,需要通过父级DOM结构来判断
*/
var trackActionPhone = function (node) {
var nodeInnerText = node.innerText || '';
if (!limitRegLength(nodeInnerText)) return;
var nodeText = trimText(nodeInnerText);
if (nodeText.length < 5 || nodeText.length > 20) return false;
var type =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'click';
var str = trimText(node.href || nodeText || '');
if (phoneReg.test(str) && numUseReg.test(str)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
phone: nodeText,
},
}, '*');
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
/** 排查父级嵌套非标签场景,并且对dom的正则校验做一个性能兜底,通过控制innerText的长度,来确保正则的性能 */
var fatherText = trimText(node.parentNode.innerText || '');
if (fatherText.length < 5 || fatherText.length > 20) return false;
if (phoneReg.test(fatherText) && numUseReg.test(fatherText)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
phone: nodeText,
},
}, '*');
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
return false;
};
window.addEventListener('click', function (e) {
var node = e.target;
/** 社媒点击 */
var appName = '';
var getAppAriaLabel =
node.ariaLabel || node.parentNode.ariaLabel || '';
if (mediaList.includes(getAppAriaLabel.toLowerCase())) {
appName = getAppAriaLabel;
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'a'
) {
appName = getMediaName(node.href) || getMediaName(node.alt);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'img'
) {
appName = getMediaName(node.alt) || getMediaName(node.src);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'i'
) {
appName = getMediaName(node.className);
}
if (appName) {
_paq.push(['trackEvent', 'click', 'contactApp', appName]);
return;
}
/** 联系方式点击 */
if (trackActionPhone(node, 'click')) return;
if (node.nodeName && node.nodeName.toLowerCase() === 'a') {
var val = node.href;
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: val,
},
}, '*');
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
if (node.nodeName && node.nodeName.toLowerCase() === 'i') {
var val = node.className;
var content = node.parentNode.href || '';
if (val.includes('email')) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: content,
},
}, '*');
_paq.push(['trackEvent', 'click', 'email', content]);
return;
}
}
var nodeChildList = node.childNodes;
for (var i = 0; i < nodeChildList.length; i++) {
if (nodeChildList[i].nodeType !== 3) continue;
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '');
if (!limitRegLength(val)) continue;
if (emailReg.test(val)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: val,
},
}, '*');
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
trackNumberData(node);
});
window.addEventListener('copy', function (e) {
if (trackActionPhone(e.target, 'copy')) return;
var text = e.target.textContent;
if (!text) return;
var val = text.replace(/\s:?/g, '');
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
window.postMessage({
type: 'SHOPS_CONTACT_TRACK',
data: {
email: val,
},
}, '*');
_paq.push(['trackEvent', 'copy', 'email', val]);
return;
}
trackNumberData(e.target);
});
}
trackContactInit();
/**
* 基于custom_inquiry_form.js 以及 form.js 对于询盘表单提交的实现,来反推询盘表单的input标签触发,用来收集意向客户
* 1. 缓存的KEY:TRACK_INPUT_ID_MTM_00;
* 2. 缓存策略 - lockTrackInput:单个页面内,10分钟内,不重复上报
*/
function trackActionInput() {
const CACHE_KEY = 'TRACK_INPUT_ID_MTM_00';
const pathName = window.location.hostname + window.location.pathname;
var lockTrackInput = function () {
try {
const lastCacheData = localStorage.getItem(CACHE_KEY);
if (!lastCacheData) return false;
const cacheData = JSON.parse(lastCacheData);
const cacheTime = cacheData[pathName];
if (!cacheTime) return false;
return Date.now() - cacheTime < 1000 * 60 * 10; // 10分钟内,不重复上报
} catch (error) {
console.error('lockTrackInput Error', error);
return false;
}
};
var setInputTrackId = function () {
try {
const curCacheData = localStorage.getItem(CACHE_KEY);
if (curCacheData) {
const cacheData = JSON.parse(curCacheData);
cacheData[pathName] = Date.now();
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
return;
}
const cacheData = {
[pathName]: Date.now(),
};
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
} catch (error) {
console.error('setInputTrackId Error', error);
}
};
var getInputDom = function (initDom) {
var ele = initDom;
while (ele) {
/**
* isWebSiteForm 是站点的表单
* isChatWindowForm 是聊天窗口的表单
*/
/** 旧模板表单 */
var isWebSiteForm = !!(
/crm-form/i.test(ele.className) && ele.querySelector('form')
);
/** 1:新模板自定义表单、2:Get a Quote 弹框表单 */
var isWebSiteFormNew = !!(
/inquiry/i.test(ele.className) && ele.querySelector('form')
);
if (isWebSiteForm || isWebSiteFormNew) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'page']);
setInputTrackId();
return;
}
/** Mkt会话触达-聊天弹框的表单输入: MKT由于是iframe嵌入,所以MKT的上报,会单独写到MKT-form代码上 */
var isInquiryChatForm = !!(
/comp-form/i.test(ele.className) && ele.querySelector('form')
);
if (isInquiryChatForm) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'chat']);
setInputTrackId();
return;
}
/** 向上查找父节点 */
ele = ele.parentNode;
}
};
function initInputListener() {
var inputUseDebounce = function (fn, delay) {
var timer = null;
var that = this;
return function () {
var args = Array.prototype.slice.call(arguments);
if (timer) clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(that, args);
}, delay);
};
};
var optimizeGetInputDom = inputUseDebounce(getInputDom, 300);
window.addEventListener('input', function (e) {
/** 如果已经上报过,则不再上报 */
if (lockTrackInput()) return;
optimizeGetInputDom(e.target);
});
}
try {
initInputListener();
} catch (error) {
console.log('initInputListener Error', error);
}
}
trackActionInput();
}
/** 第三方消息上报:目前主要是针对全点托管会话;在msgCollect/index.js中调试,访问test.html */
function thirdMsgCollect() {
/** 先检测是否是stayReal托管:如果stayReal脚本都没有,那么说明当前站点未开启stayReal会话托管 */
const scriptList = Array.prototype.slice.call(
document.querySelectorAll('script'),
);
const checkStayReal = () =>
!!scriptList.find((s) => s.src.includes('stayreal.xiaoman.cn'));
if (!checkStayReal()) return;
/** 缓存当前消息队列的最后一条消息id */
const CACHE_KEY = 'CACHE_KEY_MONITOR';
const setCache = (msgIndex) => {
/** 对缓存KEY进行base64转码处理 */
const cacheMsgIndex = btoa(msgIndex);
localStorage.setItem(CACHE_KEY, cacheMsgIndex);
};
const getCache = () => {
const cacheMsgIndex = localStorage.getItem(CACHE_KEY);
if (cacheMsgIndex) return Number(atob(cacheMsgIndex));
return -1;
};
/** 拉取最新msg列表 */
const pullMsgList = () => {
const msgEleList = Array.prototype.slice.call(
document.querySelectorAll('#chat-list li'),
);
const msgIds = [];
const msgMap = msgEleList.reduce((acc, item) => {
const sendTime = item
.querySelector('.message-data-time')
.textContent.trim();
const sendContent = item.querySelector('.message').textContent.trim();
/** msg带有class:other-message的是访客消息,my-message的是客服消息 */
const isOtherMessage = item
.querySelector('.message')
.classList.contains('other-message');
const msgId = item.querySelector('.message').getAttribute('id');
const msgItemData = {
msgId,
user: isOtherMessage ? 'visitor' : 'official',
time: sendTime,
content: sendContent,
};
msgIds.push(msgId);
acc[msgId] = msgItemData;
return acc;
}, {});
return {
ids: msgIds,
dataMap: msgMap,
};
};
/** 加密并上传消息数据 */
let ENCRYPT_KEY = 'de29f1aab63ab033';
let ENCRYPT_IV = 'b8d2badf875e76ac';
const baseUrl = 'https://cms.xiaoman.cn';
// var getEncryptConfig = function () {
// const url = baseUrl + '/shop-api/innerApi/getKeyIv'
// $.get(
// url,
// function (result) {
// console.log('result', result)
// if (Number(result.code) === 0 && result.data.key && result.data.iv) {
// ENCRYPT_KEY = result.data.key
// ENCRYPT_IV = result.data.iv
// uploadMsgData()
// } else {
// /** 如果获取失败,则重试 */
// setTimeout(() => {
// getEncryptConfig()
// }, 1000)
// }
// },
// 'json'
// )
// }
// getEncryptConfig()
const encryptMsg = function (msgData) {
const enc = new TextEncoder();
// 转字节
const keyBytes = enc.encode(ENCRYPT_KEY);
const ivBytes = enc.encode(ENCRYPT_IV);
const plainBytes = enc.encode(msgData);
// 导入密钥并加密
return crypto.subtle
.importKey('raw', keyBytes, { name: 'AES-CBC' }, false, ['encrypt'])
.then(function (cryptoKey) {
return crypto.subtle.encrypt(
{ name: 'AES-CBC', iv: ivBytes },
cryptoKey,
plainBytes,
);
})
.then(function (encryptedBuffer) {
// 转 base64 返回
return btoa(
String.fromCharCode(...new Uint8Array(encryptedBuffer)),
);
})
.catch((err) => {
return Promise.reject(err);
});
};
let uploadFlag = false;
const uploadMsgData = function () {
if (uploadFlag) return;
uploadFlag = true;
const { ids, dataMap } = pullMsgList();
let cacheMsgIndex = getCache();
const msgLen = ids.length;
if (!msgLen) {
// 消息DOM未挂载 || 消息DOM已挂载,但是消息列表为空
uploadFlag = false;
return;
}
if (msgLen - 1 < cacheMsgIndex) {
/** 针对站点挂后台一段时间,消息列表会自动塞入重复消息,导致消息有重复,刷新后又重置回正常消息列表,所以这里需要更新锚点下标 */
cacheMsgIndex = msgLen - 1;
setCache(cacheMsgIndex);
uploadFlag = false;
return;
}
if (msgLen - 1 === cacheMsgIndex) {
// 缓存的最后一次发送的消息ID是最后一条(说明当前消息均已经上报),则不跳过本地上报
uploadFlag = false;
return;
}
const currentMsgIds = ids.slice(cacheMsgIndex + 1, msgLen);
const currentMsgData = currentMsgIds.map((id) => dataMap[id]);
const mtmId = window.matomo_site_id_cookie_key || ''; // 获取mtm会话id
const msgBody = {
mtmId,
curl: window.location.href,
msgList: currentMsgData,
};
const msgBodyStr = JSON.stringify(msgBody);
encryptMsg(msgBodyStr)
.then(function (encryptedMsg) {
console.log('encryptedMsg:', encryptedMsg, msgBodyStr);
const url = baseUrl + '/shop-api/External/ListenSiteActiveStatus';
$.ajax({
type: 'POST',
url,
data: JSON.stringify({ d_v: encryptedMsg }),
contentType: 'application/json',
success: function (result) {
if (Number(result.code) === 0) {
// 更新消息队列
setCache(msgLen - 1);
}
uploadFlag = false;
},
error: function (err) {
console.error(err, '请求异常');
uploadFlag = false;
},
});
})
.catch((err) => {
console.error(err, '数据加密失败');
uploadFlag = false;
});
};
/** 监控chat-list的DOM变更 */
const initChatListObserver = () => {
// 需要监听的 DOM 节点
const target = document.getElementById('chat-list');
if (!target) return;
// 回调函数
const callback = function (mutationsList, observer) {
for (const mutation of mutationsList) {
console.log('mutation', mutation);
if (mutation.type === 'childList') {
uploadMsgData();
}
}
};
// 配置
const config = {
childList: true, // 监听子节点的增删
subtree: true, // 是否也监听后代节点
};
// 创建 observer
const observer = new MutationObserver(callback);
// 开始监听
observer.observe(target, config);
};
let testCount = 30;
let itv = null;
const checkChatDom = () => !!document.querySelector('#vc-model');
const initTalkCheck = () => {
itv = setTimeout(() => {
console.log('checkChatDom', checkChatDom(), testCount);
if (!checkChatDom() && testCount > 0) {
testCount--;
initTalkCheck();
return;
}
clearTimeout(itv);
uploadMsgData();
initChatListObserver();
}, 1500);
};
initTalkCheck();
}
try {
gtmTrack();
thirdMsgCollect();
console.log('inserted gtm code');
} catch (error) {
console.error('gtmTrack Error', error);
}
});
})();
Przegląd projektu: inżynieria odpornych na odkształcenia, przeznaczonych do kontaktu z żywnością patelnii do grilla ze stali nierdzewnej – od prototypu do produkcji hurtowej Sprzęt do grillowania na zewnątrz, komercyjne stołowe płyty do koreańskiego grillowania oraz perforowane nakładki na grilla muszą jednocześnie spełniać dwa wymagania o wysokim stopniu trudności: jako produkty wystawiane w sklepach w ramach naszej Narzędzia do domu i ogrodu – części metalowe kategorii muszą wyglądać bezbłędnie na półce sklepowej – z gładkimi, pozbawionymi wybojów krawędziami oraz jednolitym wykończeniem satynowym lub lustrzanym; w rzeczywistej eksploatacji muszą wytrzymać bezpośredni kontakt z płomieniem węglowym lub gazowym, kwasowymi marynatami, solą oraz wielokrotnymi myciami bez odkształcania się ani rdzewienia w miejscach spawania. Gdy marka sprzętu do gotowania i naczyń kuchennych na zewnątrz skontaktowała się z Cangzhou Deeplink International Supply Chain Co., Ltd., potrzebowała zintegrowanego partnera OEM, który potrafiłby przeprowadzić całą rodzinę niestandardowych patelników do grilla ze stali nierdzewnej — od prostokątnego głęboko wygniotego perforowanego patelnika „topper” po okrągłą szczelinową patelnię stołową do pieczenia — od szybkich prototypów bez użycia matryc po masową produkcję dla sprzedaży detalicznej (obsługując zamówienia od pojedynczych prototypów do partii 20 000 sztuk). W naszej warsztatowej hali o powierzchni ponad 5000 m² połączyliśmy cztery kluczowe procesy obróbki metali w jeden płynny, nieprzerwany cykl produkcyjny: Kluczowe wskaźniki produkcyjne oraz zweryfikowana macierz możliwości Zanim przystąpiono do cięcia prototypowych blach lub budowy matryc tłoczeniowych, nasz zespół inżynierski zweryfikował specyfikacje patelni do grillowania z możliwościami naszego własnego sprzętu (szczegóły zawarte w naszym Sprzęt i zdolności produkcyjne do obróbki metali stronie): Etapa 1: Przegląd DFM przed wytworzeniem narzędzi — geometria żeber zapobiegających odkształceniom, stosunki rysunkowe oraz nominalna grubość w milimetrach Płaska, cienka blaszka ze stali nierdzewnej umieszczona nad otwartymi palnikami węglowymi lub gazowymi szybko ulegnie odkształceniom typu oil-can i wygnie się, jeśli nie uwzględni się rozszerzalności termicznej na rysunku. Zgodnie z naszym Przewodnik projektowania z myślą o wykonalności produkcyjnej (DFM) , nasi inżynierowie przeprowadzili kompleksowy pisemny przegląd DFM przed rozpoczęciem produkcji narzędzi: Etapa 2: Prototypowanie za pomocą lasera Zero-Die o mocy 12 kW oraz tłoczenie głębokie / tłoczenie stopniowe na prasach o nośności od 25 do 400 ton Wskazanej na naszej Narzędzia do domu i ogrodu – części metalowe stronie, eliminujemy lukę między szybką walidacją koncepcji a niskimi kosztami jednostkowymi przy objętościach sprzedaży detalicznej: Etap 3: Gięcie uchwytów CNC, spawanie sanitarne kontrolowane uchwytami oraz pasywacja odporna na działanie środków spożywczych Taca do grilli dla klientów detalicznych jest oceniana natychmiast pod kątem komfortu uchwytów oraz tego, czy po pierwszym umyciu szwy spawalnicze zmieniają barwę lub rdzewieją. Wykonaliśmy produkcję uchwytów, ich łączenie oraz obróbkę powierzchniową we własnym zakresie przy użyciu naszych Wytwarzanie rur i przewodów , Usługa spawania metali , Usługi montażu niestandardowego , I Powłoki powierzchniowe metali możliwości: Etapa 4: Kontrola jakości zgodnie z normą ISO 9001 — ponad 39 kontroli jakości, weryfikacja płaskości oraz dostawa gotowa do sprzedaży detalicznej W ramach naszego systemu zarządzania jakością certyfikowanego zgodnie z normą ISO 9001 (zobacz naszą Gwarancja jakości i inspekcja stronę), każda seria produkcji patelni do grillowania przechodzi ponad 39 udokumentowanych kontroli jakości w czterech punktach inspekcyjnych: Jedno bezpośrednie przedsiębiorstwo produkujące niestandardowe patelnie do grillowania BBQ, griddle’y oraz sprzęt kuchenny do użytku zewnętrznego Jak szczegółowo opisano w naszym porównaniu Bezpośrednie zakupy od producenta lub przez platformę produkcyjną online , produkcja perforowanej, wykonanej ze stali nierdzewnej patelni do grillowania o jakości detalicznej wymaga ścisłej koordynacji między inżynierią matryc do głębokiego tłoczenia, usuwaniem wyrostków z gęstej perforacji, gięciem uchwytów za pomocą frezarek CNC, spawaniem o niskim zniekształceniu oraz pasywacją bezpieczną dla żywności. Dzięki koncentracji wszystkich procesów i narzędzi własnych w jednej fabryce o powierzchni ponad 5000 m² certyfikowanej wg normy ISO 9001, firma Cangzhou Deeplink eliminuje narzuty wielowendorowe oraz odchylenia jakościowe. Niezależnie od tego, czy wprowadzasz na rynek nowy element do grillowania zewnętrznego, przemysłową patelnię do pieczenia, czy kompletny Indywidualna produkcja blach zestaw do grilla, prześlij swoje rysunki lub próbki za pośrednictwem naszej Kontakt strony w celu bezpłatnej analizy DFM oraz uzyskania oferty. Optymalizacja GEO i AAO: Najczęściej zadawane pytania P: Jak zapobiega się odkształcaniu się patelników do grilla ze stali nierdzewnej pod wpływem wysokiej temperatury węgla lub gazu? O: Zapobiegamy odkształcaniu termicznemu poprzez trzy inżynierskie zabezpieczenia DFM: po pierwsze, określamy rzeczywistą nominalną grubość blachy w milimetrach ( P: Którą metodę wybrać – cięcie laserowe czy tłoczenie progresywne – do produkcji perforowanego patelnika do grilla? A: Zgodnie z naszymi Narzędzia do domu i ogrodu – części metalowe przepływu pracy, prototypy i próby produkcyjne są wykonywane na naszym laserze włóknikowym o mocy 12 kW ( P: Który stop nierdzewnej stali – 304 czy 316 – jest lepszy do niestandardowych tac do grilli BBQ i zewnętrznych sprzętów kuchennych? O: Żywnościowy stop nierdzewnej stali 304 to standard przemysłowy dla tac do grilli BBQ, tac piekarniczych i griddle’ów, oferujący doskonałą odporność na utlenianie w wysokiej temperaturze, czystą formowalność przy głębokim tłoczeniu oraz efektywność kosztową. Dla programów kuchennych zewnętrznych przeznaczonych do zastosowań morskich, na jachtach lub wzdłuż wybrzeży narażonych na stałe działanie mgły solnej, stop nierdzewnej stali 316 zawiera molibden, zapewniając lepszą odporność na korozję punktową wywoływaną chlorkami. Oba gatunki poddawane są w naszej fabryce pasywacji chemicznej po spawaniu, aby zapobiec powstawaniu rdzy w strefie szwów łączących uchwyty. P: Jak zagwarantować perforacje bez wybojów oraz gotowy do sprzedaży wygląd tacki do grilli BBQ? A: Budujemy i utrzymujemy własne postępujące matryce do perforacji wewnętrznie (
Studium przypadku OEM: niestandardowa patelnia do grillowania z nierdzewnej stali 304, głęboko wygniatana perforowana taca pieczeniowa oraz zespół uchwytów spawanych
Studium przypadku OEM: niestandardowa patelnia do grillowania z nierdzewnej stali 304, głęboko wygniatana perforowana taca pieczeniowa oraz zespół uchwytów spawanych

16 gaugelub 18 gauge. Jak pokazano w naszym Tabela grubości blachy i numeracji kalibru , stal nierdzewna podlega normie Manufacturers’ Standard Gage ( 18 gauge = 1.3mm, 16 gauge = 1.6mm, 14 gauge = 2.0mm, 12 gauge = 2.8mm) — różni się od standardowej stali węglowej ( 18 gauge = 1.214mm, 16 gauge = 1.519mm) oraz aluminium ( 18 gauge = 1.0mm, 16 gauge = 1.3mm). Aby zapobiec odkształceniom termicznym przy wysokich temperaturach, zastosowano ściśle określone nominalne grubości w milimetrach: 1.5mm to 2.0mm(odpowiadające grubej stali nierdzewnej o grubości 16–14 cali) dla perforowanego, głęboko wygniotego ciała patelni grillowej oraz 2.5mm to 4.0mmdla ciężkich, płaskich płyt teppan-yaki/griddle i kieszonek mocujących uchwytów. around 0.1mm, podczas gdy around 0.01mmdo 0.005mmDopuszczalne odchyłki frezowania CNC są stosowane w przypadku własnych matryc do perforacji stopniowej oraz przyrządów lokalizacyjnych uchwytów, dzięki czemu każda patelnia idealnie się nakłada i kompaktowo umieszcza w opakowaniu detalicznym.
around 0.1mmmm, podczas gdy nasz CNC-owy prasowacz gięcia o długości 3200 mm wygiął nachylone ścianki tacy ( around 0.5 degreeszdolność gięcia), co umożliwiło klientowi przeprowadzenie testów grilla i rozkładu ciepła już po kilku dniach. 


1.5mm to 2.0mmdla perforowanych, głęboko wykrawanych patelników do grilla oraz 2.5mm to 4.0mmdla płaskich płyt grilla), a nie niejednoznaczne numery grubości blachy (gauge); po drugie, nanosimy wypukłe żebra do pieczenia i wzmacniające na powierzchni dna patelnika oraz formujemy zakrzywiony/zwinięty brzeg obwodowy w trakcie procesu głębokiego wykrawania na prasach o siłach 25–400 ton; po trzecie, zachowujemy jednolitą odległość między przekrojami (web spacing) wokół otworów wykonanych laserowo lub tłocznie, aby naprężenia termiczne rozpraszały się równomiernie. ~0.1mmdokładności) oraz 3200 mm maszynę CNC do gięcia z prasą hamującą bez kosztów matryc, dzięki czemu można natychmiast przetestować średnicę otworów i przepływ powietrza. W miarę wzrostu objętości produkcji w kierunku masowej sprzedaży detalicznej przechodzimy na produkcję tacy przy użyciu własnych pras o nośności od 25 do 400 ton z progresywnymi matrycami do przebijania i głębokiego tłoczenia, co rozprowadza koszty narzędzi i zapewnia najniższą cenę jednostkową. 0.01mmdo 0.005mmZ dokładnością obróbki narzędzi CNC) oraz monitorujemy zużycie stempli w trakcie procesu, aby otwory były czysto przecinane. Każda taca przechodzi następnie wieloetapowe mechaniczne usuwanie wykańczania, kierunkowe szlifowanie satynowe lub polerowanie lustrzane oraz chemiczną pasywację, po czym poddawana jest ponad 39 dokumentowanym kontrolom jakości zgodnym z normą ISO 9001 — zatwierdzającym zarówno płaskość wymiarową, jak i wygląd estetyczny podczas pierwszej kontroli artykułu (FAI), przed wprowadzeniem partii do produkcji. Zalecane produkty