面試趣
網路家庭 is hiring 【物流技術】C#工程師! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【物流技術】C#工程師 Taipei City, Taiwan 軟體開發 Full Time 投遞 工作內容 【工作內容與核心任務】 1.C#程式開發設計。 2.倉庫相關管理系統開發及維護。 3.軟體程式之撰寫、測試與修改。 4.修正現有軟體的錯誤,使其適應新需求或改進其性能。 5.線上專案系統維運,程式修改及資料庫維護等工作。 6.系統開發文件產出。 必要條件 .2年以上C#相關開發經驗(WebAPI、Application) .熟悉C#、NET Core、MVC、JavaScript、Jquery、HTML、了解AJAX .熟悉SQL語法(MSSQL,MySQL,PostgreSQL...至少一種) .版本控制工具經驗(Git) .具備良好溝通協調能力及解決問題能力,並與團隊合作無間 .主動積極、有責任感 .具倉儲、物流領域經驗尤佳 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【營運管理】廠商服務專員/資深專員! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【營運管理】廠商服務專員/資深專員 Taipei City, Taiwan 營運 Full Time 投遞 工作內容 1. 廠商後台系統服務諮詢 2. 廠商客訴處理 / 一般行政事務處理 3. 廠商對帳 必要條件 1. EQ 穩定、抗壓性強、配合度高、執行力佳 2. 具電話禮儀、擅溝通協調、主動積極、細心負責 加分條件 具備基礎會計知識 薪資 月薪 36,000 ~ 40,000 TWD 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 最高學歷 學位或系所 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】軟體測試工程師 Manual SQA Engineer! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】軟體測試工程師 Manual SQA Engineer Taipei City, Taiwan 測試工程 Full Time 投遞 工作內容 【工作內容與核心任務】 協助軟體測試 :協助進行 Web 和 App 產品的軟體測試,涵蓋既有流程及新專案。 測試案例開發 :配合自動化測試工程師編寫並執行測試案例。 測試工具運用 :學習並使用軟體測試工具進行測試。 問題蒐集與跟進 :整理測試記錄,追蹤問題並協助工程師修復。 必要條件 科系要求: - 資訊、工程任一科系,或具備資訊科技相關職訓結業資格 語言條件要求: - 英文聽讀達中等以上 + 中文流暢 工作經歷要求 ( 二擇一 ): - 資訊、工程任一科系,或具備資訊科技相關職訓結業資格 熟悉 Chrome 、 Android 、 iOS 平台的測試工具 熟悉測試案例的撰寫與管理 具備基礎的資安概念 良好的溝通能力,能與工程師及產品經理協調工作 具備細膩的觀察力,能發現細節中的錯誤 沉穩、有耐心、理解力強,配合度高,具備邏輯思維能力 熟悉程式語言(如 Python) 熟悉自動化測試技術 加分條件 具備軟體相關測試經驗者優先 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】資深產品規劃師/資深產品經理! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】資深產品規劃師/資深產品經理 Taipei City, Taiwan 產品管理 Full Time 投遞 工作內容 【工作內容與核心任務】 在 PChome 自行建立的倉儲與物流系統 中,設計並推動新方法來提高運籌績效,處理每日數百萬筆的進出貨紀錄。 站在 供應商的視角 ,設計改進方案,使供應商能更高效經營與獲利,特別針對商品上下架、促銷活動的紀錄處理。 從 消費者視角 改善網站與 App 上的購物體驗,涉及商品搜尋、加入購物車、付款及填寫收貨資訊等流程。 針對 資源有限 的情況下,計算效益並估算技術實作成本,推動最適合的計畫,提升線上購物模式的成效。 【我們正在尋找的夥伴】 新科技玩家 :樂於學習新科技,並從中發現適合應用於電商流程中的創新突破,助力 PChome 創新發展。 數據驅動決策 :能夠處理來自 倉儲、物流、訂單、金流等數據 ,並設計實驗來評估專案成效,確保決策建立在數據基礎上。 Google Analytics & Firebase 熟練 :在產品迭代中能夠有效使用這些工具觀察關鍵指標,並設計對應的埋點與 Console 操作。 專案管理能力 :熟悉使用 WBS 表格、利害關係人表格 等專案管理工具,與 UI/UX 設計師協作,製作 Wireframe 傳達產品願景。 良好的觀察力與溝通能力 :能夠與 內外部使用者 (包括商品部、外部供應商、客服、消費者等)密切合作,深入理解需求並提出可行的產品改進方向。 文檔撰寫與模組化思維 :具備清晰的文檔撰寫能力,能夠規劃系統化的解決方案,減少日常維運和客訴中的重複性問題,讓團隊專注於更重要的事務。 耐心與邏輯清晰 :能夠處理大型電商系統的複雜性,並與不同職能的同事進行有效溝通與協調,確保項目的順利推進。 |我們的期待| 快速學習能力 :你將需要快速掌握不熟悉的領域並應用於實際工作中,與團隊一同推動進步。 創新與改進 :在挑戰中尋找創新機會,對電商環境的變化保持敏銳的洞察力,並敢於推動變革。 如果你具備以上技能和特質,並希望在一個充滿挑戰和創新的工作環境中發揮你的潛力,歡迎加入 PChome 24h,一起提升台灣電商的新標竿。 加分條件 具備 網頁或 App 開發工程師 ,或 UI/UX 設計師 的經歷 熟悉 Scrum 或任何 敏捷式專案開發流程 熟悉 iOS 及 Android App 及 Web 的設計準則與上架流程 具備 財務與營運思維 ,能夠判斷建置與維運成本 具備 金融基礎知識 ,能夠規劃財稅相關功能 具備 資訊科技 或 產品企劃 相關職訓結業資格 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】自動化軟體測試工程師 SQA Automation Engineer(約聘職)! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】自動化軟體測試工程師 SQA Automation Engineer(約聘職) Taipei City, Taiwan 測試工程 Full Time 投遞 工作內容 【工作內容與核心任務】 做為 PChome 的 SQA Automation Engineer,我們期待你能在以下環節幫助團隊: 1.在產品新專案開發初期加入討論,協助產品在企劃階段就能將自動化測試工作納入開發期程控管 2.依優先程度對 Web 及 App 進行自動化測試案例開發,包含既有流程及新專案 3.熟悉自動化測試技術及基礎建設知識,以平行單位的角度追蹤產品開發工程師的程式碼是否為可測試的品質 4.熟悉視覺化信息呈現工具及專案進度追蹤工具,能將各種進度透明展開供團隊即時查閱 5.建置及管理 Regression Testing 與 Stress Testing 相關環境及設備,確保自動化執行效率持續精進 6.將自動化測試結果的資訊整理為工作項目,決定嚴重程度後指派給產品工程師做後續處理,並追蹤處理進度 7.測試資源管理,例如測試案例、特殊帳號、特定環境、採購測試設備等 *本職缺為約聘性質,聘期約 1 年,約聘期間若表現優良,將有機會依組織需求及個人績效評估轉任正職。 必要條件 【必備技能包!】 1. 熟悉 Web 及 App 自動化測試框架,例如:Appium、Selenium等 2. 熟悉測試框架所對應的腳本語言例如 Python 等 3. 熟悉 Chrome、Android、iOS 平台的測試工具 4. 懂架設或管理 Jenkins 等 CI/CD 平台 5. 熟悉版控工具例如 Git 管理程式碼或資源 6. 熟悉測試案例撰寫及管理 7. 具備基礎資安概念 8. 能與工程師及產品經理協調工作的良好溝通能力 加分條件 【符合以下條件,更加分!】 1. 熟悉雲端技術 2. 熟悉 VM 及 Docker 相關技術 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】自動化軟體測試工程師 SQA Automation Engineer! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】自動化軟體測試工程師 SQA Automation Engineer Taipei City, Taiwan 測試工程 Full Time 投遞 工作內容 【工作內容與核心任務】 作為 PChome 的 SQA Automation Engineer ,我們期望你在以下環節中協助並推動團隊進步: 產品新專案初期參與 :在產品開發的企劃階段加入討論,協助將自動化測試納入開發計劃中,確保測試需求從一開始就有妥善規劃。 自動化測試案例開發 :根據產品開發的優先順序,針對 Web 和 App 平台進行自動化測試案例的開發,涵蓋現有流程及新專案。 自動化測試技術與基礎設施 :熟悉自動化測試技術,能夠與平行單位協作,追蹤和確保程式碼具有良好的可測試品質。 視覺化工具與進度追蹤 :熟悉並運用視覺化信息呈現工具及專案進度追蹤工具,能夠清晰呈現測試進度及問題點,確保團隊成員可以及時查閱並應對。 回歸測試與壓力測試管理 :建置並管理回歸測試及壓力測試的環境與設備,確保自動化測試執行效率持續提升。 自動化測試結果處理 :將測試結果整理為具體工作項目,根據問題的嚴重程度指派給相應的產品工程師處理,並追蹤處理進度,確保問題及時解決。 測試資源管理 :負責測試資源的管理,包括測試案例、特殊帳號、特定環境設置及測試設備的採購等,確保測試過程順利進行。 這些是你在 PChome SQA Automation Engineer 角色中需要負責的核心工作項目,期待你能夠協助團隊達成高品質的測試目標,並推動公司產品的持續改進。 必要條件 自動化測試 :熟悉 Web 及 App 自動化測試框架(如 Appium、Selenium) 腳本開發 :具備 Python 等測試框架對應的腳本語言能力 跨平台測試 :熟悉 Chrome、Android、iOS 平台的測試工具 CI/CD 管理 :具備架設或管理 Jenkins 等 CI/CD 平台的經驗 版本控制 :熟悉 Git,能有效管理測試程式碼與資源 測試案例管理 :具備撰寫與管理測試案例的經驗 資安基礎 :了解基礎資安概念,確保測試流程符合安全標準 團隊協作 :具備良好的溝通能力,能與工程師及產品經理緊密協作 加分條件 熟悉雲端技術 熟悉 VM 及 Docker 相關技術 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】機器學習工程師-搜尋與推薦系統專家(Search & Recommendation ML Engineer)! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】機器學習工程師-搜尋與推薦系統專家(Search & Recommendation ML Engineer) Taipei City, Taiwan 資料工程 / 機器學習 Full Time 投遞 工作內容 負責 PChome 電子商務平台的「搜尋(Search)與推薦(Recommendation)」核心演算法,串聯多語言商品內容與用戶行為數據,設計並運營涵蓋傳統搜尋、個人化推薦、對話式搜尋與 Agentic AI 的完整解決方案,直接影響使用者體驗與營收成長。 【工作內容與核心任務】 1. 搜尋與推薦模型開發: 設計、開發並部署機器學習模型,應用於站內搜尋引擎、個人化推薦與排序(Ranking)場景,提升 CTR、CVR、留存等關鍵營運指標。 2. 用戶行為分析與演算法優化: 分析使用者搜尋、瀏覽、加購、購買等行為與互動 Log,持續優化搜尋排序與推薦演算法,包含 query understanding、learning-to-rank、session-based / sequential recommendation 等方法。 3. 對話式搜尋與 Agentic 體驗: 開發對話式搜尋與推薦體驗(Conversational Search & Recommendation),整合 LLM、向量搜尋(Vector Search)、Agentic RAG 等技術,提升互動體驗並優化模型效能與延遲(Latency)。 4. 跨團隊合作與產品落地: 與產品經理、前後端工程、資料工程、數據分析及資料科學團隊緊密合作,將模型落地於搜尋結果頁、商品頁、個人化模組與聊天助理等場景,並透過 A/B Test 或實驗設計驗證效果。 5. 特徵工程與模型實驗: 進行資料探索(EDA)、特徵工程與模型實驗,包含資料前處理、特徵選擇、模型調參與壓力測試,提升模型準確度、穩定性與跨國市場適用性。 6. 模型監控與持續優化(MLOps): 建立模型監控與告警機制(Model Monitoring),追蹤線上成效指標、偵測資料漂移與模型漂移,並規劃回訓、版本管理與回滾策略,確保模型在 production 環境長期穩定運行。 7. Agentic AI 與自動化工作流(含 n8n 類工具): -7.1 利用 MLOps 與 Workflow 平台(如 Kubeflow、Airflow、n8n 類工具)設計並自動化特徵產出、資料管線、模型訓練排程、部署與回滾流程,降低人工操作與部署風險。 -7.2 探索並建置面向 ML 的 AI Agent,應用於模型異常偵測、實驗管理、參數建議與線上配置調整(例如推薦策略 A/B 配比),提升模型運營效率與回應速度。 必要條件 必備條件 Must-have 具機器學習、人工智慧、資料科學、電機資訊或相關領域之學術背景,或具備等同實務經驗。 熟悉機器學習模型原理與演算法,包含 Supervised / Unsupervised Learning 以及 Ranking / Recommendation 演算法(如協同過濾、Learning-to-Rank)。 具備自然語言處理(NLP)相關知識:文本表示、語意匹配、Embedding、Semantic Search、Query Understanding 等。 理解並實作過深度學習模型架構(如 Transformer、Embedding-based Models),熟悉其在搜尋與推薦情境下之應用與微調(Fine-tuning)。 具備大規模資料處理與分散式系統基本概念,如使用 Spark、Hadoop、生產級向量資料庫等技術處理大規模資料集。 技能要求 Skills 精通 Python 程式開發,能撰寫高可讀性、可維護且具測試覆蓋的 ML / Data Pipeline 程式碼。 熟悉主流機器學習/深度學習框架(如 TensorFlow、PyTorch),具備模型訓練、調參、最佳化與部署的實務經驗。 具備搜尋或推薦系統相關技術實作經驗,能獨立完成模型訓練、離線評估、線上部署與 A/B Test 分析。 熟悉 PySpark 或其他大數據處理工具,能設計與實作可擴展的資料處理 Pipeline(Batch / Streaming)。 具備分散式資料處理與大數據系統操作經驗,了解效能調校與資源使用最佳化。 加分條件 加分條件 Nice-to-have 具備對話式 AI、Conversational Search、Agentic RAG 或多 Agent 系統的實務經驗。 具備 MLOps、CI/CD 或 Infrastructure as Code(IaC)實務經驗(如使用 MLflow、Kubeflow、Jenkins、GitHub Actions、Terraform 等)。 有使用 Workflow / Automation 工具(如 n8n、Airflow、Argo Workflows 等)自動化 ML 或推薦系統運營流程(如訓練排程、部署、監控與報表)的經驗。 熟悉雲端平台(優先 GCP),並具備使用 Vertex AI、BigQuery、Dataflow 等雲端 ML / Data 服務的經驗。 具備多語言搜尋或跨語言 NLP 系統開發經驗(繁中/簡中/英語等跨國站點)。 曾於搜尋、推薦、NLP、深度學習等相關領域發表學術論文或技術文章,或參與開源專案並有公開作品(GitHub / 技術部落格)者佳。 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 最高學歷 學位或系所 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】服務可靠性工程師 Site Reliability Engineer! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】服務可靠性工程師 Site Reliability Engineer Taipei City, Taiwan DevOps / SRE Full Time 投遞 工作內容 【工作內容與核心任務】 SRE 服務可靠性工程師,站在能夠綜覽 Dev & Ops 兩端的視野,以流程及監控等技術,提升優化整體的服務可靠性: .服務維運:掌握雲端 production 環境的特性,以 SLO 角度協助各產品團隊辨識優化服務品質的方向。 .軟體工程:掌握軟體研發的流程與工具,以自動化角度協助產品團隊優化 DX (developer experience)。 .監控系統:量測並監控軟體服務品質,協助各產品團隊具備掌握服務品質指標、及時應變劇本、經驗傳承的能力。 .自動化:撰寫雲端工具程式,善用雲端平台,以自動化機制確保服務品質。 .系統架構:掌握 well-architected 分散式軟體架構,協助自動擴展服務元件,並將最佳實務內嵌至系統中。 【團隊文化】 扁平化的組織架構,適才適所、能發揮自己對技術的想法。 就事論事、用數據及事實溝通。 隨時歡迎提出建議及看法、達成共識後即快速執行、遇到問題也願意共同面對並解決。 技術及非技術的分享會、讀書會、專題講座,希望大家都能跟著公司一起前進成長。 【我們正在尋找的夥伴】 具有 Larry Wall 所說的三大特質:Laziness、Impatience、Hubris,並樂於以自動化手法捍衛這種特質。 擁抱 DevOps 講究的 CALMS (culture, automation, lean, measurement, sharing) 五大工作面向。 喜歡分散式系統,覺得照顧著大規模大流量系統正常運作,並以系統化方式持續優化它,是一件很酷的事。 喜歡持續優化自己及團隊的工作流程。 想挑戰自我的能力,願意嘗試在快節奏的公司工作。 Growth mindset:對於學習新語言、新工具、新平台、新領域、新做事方法抱持開放態度,對團隊的最大利益負責,也對自己工程師職涯的競爭力負責。 Data-driven:喜歡用數字(業務面數據及工程面數據)來驗證工作成效,而不是只是憑感覺。 溝通能力佳,喜歡團隊合作更勝一人球隊。 必要條件 【必備技能包!】 .熟悉 scripting 語言或框架:Python、Node.js 等。 .熟悉 GCP 操作、部署、監控。 .熟悉任何一種 CI/CD 流程與工具:GitHub、Jenkins、GitLab 等。 .熟悉任何一種 Infrastructure as Code 工具:Ansible、Terraform、CDK、Helm、Kustomize 等。 .有透過 Sentry、Prometheus、Grafana 監控線上服務運行狀況,並進行改善的經驗(流量、主機擴容計畫、程式碼 refactor or rebuild、DB 瓶頸等)。 .有 API test 的經驗。 .有系統問題除錯定位、效能分析與系統指標規劃等經驗。 加分條件 【符合以下條件,更加分!】 .有電商網站維運經驗者為優先考量。 .相關雲端平台證書優先考量。 .開發 Web application 的經驗。 .熟悉 Kubernetes 及 CNCF 生態圈。 .熟悉 DBMS 及相關 data pipeline 的監控。 .如果有 GitHub repo、iThome 鐵人賽、或是相關作品,請與履歷一併提供參考,謝謝。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】大數據處 處長! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】大數據處 處長 Taipei City, Taiwan 資料工程 / 機器學習 Full Time 投遞 工作內容 【工作內容】 我們正在尋找一位能主導 PChome 大數據技術藍圖、搜尋推薦平台、資料治理與資料分析策略的資深主管。 此角色將帶領多個工程與分析團隊,打造高效、安全且能直接支撐電商核心業務的資料平台與 AI/搜尋能力。 職務重點包含:資料平台、資料治理、搜尋與推薦、資料科學、商業分析與團隊管理。 主要職責如下: 一、資料平台與數倉建設 規劃並主導雲端化資料平台(GCP / AWS / Azure)架構演進、效能優化與穩定性治理。 建置可擴充、高可用的 Data Lake / Data Warehouse,支援大規模電商資料處理需求。 制定資料標準、血緣追蹤、品質管理與資料治理制度,確保數據一致性與可用性。 推動 ETL/ELT 數據流程、批次與即時資料管線(Batch / Streaming)建設與優化。 二、搜尋與推薦系統 主導 PChome 搜尋與推薦技術策略,制定技術路線圖與平台演進。 優化搜尋排序、查詢理解、Embedding Search、個人化推薦與 CTR/CVR 模型。 與產品、行銷、商務團隊合作,提升搜尋與推薦在流量分發、轉換率與營收成長的貢獻。 三、資料分析與商業洞察 帶領資料科學與商業分析團隊,提供跨部門的決策支援與成效分析。 建立指標體系、儀表板、A/B Test、使用者行為與漏斗分析模型,促進資料驅動決策。 協助團隊以數據為基礎優化營運策略。 四、組織領導與人才發展 管理包含 Data Engineering、Search/Recommendation Engineering、Data Analytics 的技術與分析團隊。 招募並培育資深技術人才,建立穩健、協作、高標準的工程文化。 掌握專案進度、技術風險、資源配置與預算管理。 必要條件 【必要資格】 8 年以上資料平台、搜尋、推薦、或大數據工程相關經驗。 3 年以上領導團隊的管理經驗(技術團隊、分析團隊皆可)。 熟悉雲端資料平台(GCP / AWS / Azure 其一以上)。 熟悉並致力實行嚴謹工程開發流程 (e.g. TDD, CI/CD, Agile, etc) 具備強勁的資料架構能力,熟悉 Data Warehouse、Data Mart、Data Modeling、ETL/ELT 設計。 對搜尋與推薦自有系統技術有強勁的架構能力與實戰經驗(ElasticSearch/Vespa、向量搜尋、排序模型、推薦模型)。 能與產品/商業主管協作,將數據洞察轉化為可行策略。 加分條件 【加分資格】 具大型電商、零售、O2O、MarTech 或內容平台經驗。 有建立公司級 data governance、數據資產管理架構之實務經驗。 熟悉 Dbt、Airflow、BigQuery、Kafka、Spark 等技術。 具備 Machine Learning、LLM、個人化推薦或 AI Infra 經驗。 能規劃並落地跨部門資料專案(如 360 會員資料、成效 attribution、商品知識圖譜等)。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】Web Backend Developer! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】Web Backend Developer Taipei City, Taiwan 後端工程 Full Time 投遞 工作內容 【工作內容與核心任務】 1. 與 PM、設計師、前端工程師合作,開發高效能 Web 應用(主要使用 PHP)。 2. 持續學習與實作,掌握 Web 應用的最佳實踐。 3. 分析業務與技術數據,優化產品與系統效能。 4. 參與電商平台開發,包括: 前台:商品展示、購物流程、金流付款等。 後台:商品管理、版位設定、採購系統、爬蟲、第三方系統串接等。 必要條件 2 年以上 Web 開發經驗,熟悉 PHP RESTful API 設計 。 熟悉 RDBMS (不僅限於 ORM),具備 SQL 撰寫能力 。 熟悉 物件導向分析與設計 (OOP) 。 熟悉 Laravel 或其他現代 PHP 框架 。 熟悉 CI/CD 流程與工具 (GitHub、Jenkins、GitLab 等)。 熟悉 雲端服務 API (GCP、AWS、Azure 任一)。 加分條件 多語言開發經驗 :熟悉 Python、Java、JavaScript/TypeScript、C#、Go 任一。 測試經驗 :具備 Unit Test / API Test 撰寫與執行能力。 系統監控與優化 :有使用 Sentry、Prometheus、New Relic、Datadog 監控系統並優化效能的經驗。 架構設計經驗 :曾實踐 Domain Driven Design (DDD)、Clean Architecture、Onion Architecture 等。 技術作品或分享 :若有 GitHub Repo、iThome 鐵人賽 作品,歡迎提供參考。 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】ERP開發工程師(C#)! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】ERP開發工程師(C#) Taipei City, Taiwan 後端工程 Full Time 投遞 工作內容 【工作內容與核心任務】 與各單位緊密合作,開發高流量 Applications,參與用戶體驗的大改造。 使用技術包含 C#、.NET Core、React 等。 【 團隊文化 】 扁平化組織 ,重視適才適所,鼓勵對產品與技術提出想法。 數據驅動決策 ,就事論事,透過數據和事實進行溝通。 快速執行 ,鼓勵提出建議,達成共識後即行動,遇到問題共同解決。 技術與非技術分享 ,定期舉辦讀書會、專題講座,與公司一同成長。 【工作流程 (Scrum) 】 在 Asana 確認工作事項。 每日立會 ,同步進度並討論問題尋求支援。 專案實作前討論 ,確認架構與開發方向。 定期回顧(retrospective meeting) ,持續優化開發流程。 積極參與 團隊開發流程改進 。 【我們正在尋找的夥伴】 熱愛寫 Code ,勇於挑戰、適應快節奏工作環境。 持續優化工作流程 ,追求更高效率與品質。 Growth Mindset ,樂於學習新語言、新框架、新技術,強化自身競爭力。 Data-Driven ,以數據驗證工作成效,而非憑感覺決策。 良好溝通與團隊合作能力 ,喜歡與夥伴協作勝過單打獨鬥。 必要條件 2 年以上 C# 及 .NET Core 開發經驗 熟悉 Git 版本控制 熟悉 RESTful API 串接流程 熟悉資料庫查詢語法 ,具備效能調校概念 加分條件 有撰寫 Unit testing 的經驗 具備 React 開發經驗 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 最高學歷 學位或系所 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】Data Engineer! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】Data Engineer Taipei City, Taiwan 資料工程 / 機器學習 Full Time 投遞 工作內容 你是否渴望在充滿創造力和挑戰的領域中施展拳腳? 我們正在尋找充滿激情、敢於挑戰極限的資料工程師,加入團隊,一起探索未知、攜手打造頂尖的數據系統! 我們負責搜尋系統,推薦系統與數據平台的相關技術. 【工作內容與核心任務】 資料架構設計與實施 :設計高效能、可擴展的資料處理與儲存系統,專注於開源技術解決方案。 資料管道開發 :建立穩健的 ETL/ELT 管道,用於處理大型電商數據集,包括批量處理與即時數據處理。 資料基礎設施管理 :管理和優化資料庫(關聯式與非關聯式)與分散式計算平台。 資料平台維護 :確保資料平台的穩定性與可靠性,解決系統性能瓶頸。 技術領導 :指導團隊成員,分享最佳實踐(Agile, CI/CD, TDD等),提升整體技術能力。 跨部門合作 :與資料科學家、產品經理和業務分析師密切合作,確保資料解決方案符合業務需求。 技術創新 :研究和實現最新的開源技術,提升系統效率與靈活性。 如果您對技術的追求充滿熱情,並希望在高流量電商環境中實現技術創新,歡迎加入我們! 必要條件 技術專業 : 深入了解分散式數據處理技術(如 Apache Hadoop、Apache Spark、Kafka)。 精通開源資料庫技術(如 PostgreSQL、MySQL、Cassandra、MongoDB)。 熟悉 ETL/ELT 工具(如 Apache Airflow、dbt)。 熟練掌握程式語言(如 Python、Scala、Java 和 SQL)。 熟悉 Linux 系統操作與 Shell Script。 數據架構與建模 :具有設計高效數據模型與資料管道的實際經驗。 領導力 :具備帶領工程團隊的能力,能有效指導與提升團隊技能。 問題解決能力 :善於分析與解決資料系統的性能問題與擴展挑戰。 行業知識 :了解電商行業常用的數據指標和應用場景。 加分條件 具備資料平台從雲端到自建基礎架構的遷移經驗。 熟悉大數據即時處理框架(如 Apache Flink 或 Apache Storm)。 了解開源監控工具(如 Prometheus、Grafana)用於數據平台監控。 能夠在雙語環境中流利溝通(中文與英文)。 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【技術】Android App Engineer ! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【技術】Android App Engineer Taipei City, Taiwan 軟體開發 Full Time 投遞 工作內容 【工作內容與核心任務】 與 PM、設計師、後端工程師緊密合作,負責 PChome 24h APP 的開發與優化,打造流暢高效的購物體驗。 參與網站與 APP 的用戶體驗改造,從技術角度提出創新想法,並與團隊共同執行。 採用 Scrum 流程,透過 Asana 管理工作事項,確保專案順利推進。 每日站會同步進度,協助團隊成員解決開發上的挑戰。 進入專案前,與夥伴討論技術架構與開發方向,確保開發過程順暢。 定期參與 Retrospective Meeting,持續優化開發流程,提高團隊效率與產品品質。 透過數據分析用戶行為與系統效能,推動產品與技術優化,提升用戶體驗。 如果你熱愛技術,喜歡在快節奏環境中挑戰自我,歡迎加入我們,共同打造更好的 PChome 24h APP。 必要條件 Kotlin 開發經驗 :2 年以上 Android App 開發經驗 架構與設計模式 :熟悉 MVVM 與 DataBinding 非同步處理 :熟悉 Kotlin Coroutines 版本控制 :熟悉 Git 現代 UI 開發 :具備 Jetpack Compose 開發經驗 API 串接 :熟悉 RESTful API 整合 網頁與應用互動 :有 WebView 相關開發經驗 效能優化 :具備 App 效能調校經驗 推播整合 :熟悉 Push Notification 串接 加分條件 具備金流服務與第三方登入串接經驗 熟悉 KMM (Kotlin Multiplatform Mobile) 開發 並擁有撰寫 Unit Testing 的實務經驗 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【客服】退貨維保科專員! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【客服】退貨維保科專員 Taipei City, Taiwan 客戶服務 Full Time 投遞 工作內容 維修與保固諮詢案件處理:回應顧客的維修與保固相關詢問,提供準確資訊,並協助案件進度追蹤。 退貨爭議案件釐清與處理:與顧客溝通退貨爭議,釐清問題,並依據公司政策提供適當的解決方案。 訂單問題跟進:協助合作單位處理訂單相關疑問,確保流程順暢。 主管交辦事項執行與推進:配合主管安排的專案或行政作業,確保團隊運作順利。 必要條件 具備基本文書行政處理能力(Word, Excel, outlook)、中文輸入50字/分鐘 具備口語及文字編輯溝通能力,喜歡溝通以及高度服務熱忱 具責任感、抗壓性佳 採固定班別排班制、須配合國定假日排班 班別時段: 【早班】09:00~18:00 加分條件 善於溝通,細心且具備耐心,能透過文字及電話與客戶有效互動。 良好的問題解決能力,能夠快速判斷客戶需求並提供合適的協助。 注重細節且具備團隊合作精神,樂於與夥伴協作,共同提升服務品質。 薪資 月薪 35,000 ~ 40,000 TWD 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
我們正在尋找具備以下特質的你: 1.良好的溝通技巧:能清楚表達想法,並有效傾聽、理解他人觀點。 2.專業知識和經驗:熟悉消費者保護法規、電商產業運作,或具相關申訴處理實務經驗者尤佳。 3.問題解決能力:面對突發或複雜的案件,能快速判斷情勢,提出具體可行的解決方案。 4.同理心與耐心:能設身處地理解消費者的立場,並以耐心穩定地協助化解糾紛。 5.開放心態與學習意願:樂於學習新知、接受挑戰,勇於精進專業能力。 如果以下任務你可以勝任,歡迎加入我們的團隊: ■ 承辦公機關爭議案件及重大客訴處理,並參與相關訓練與制度優化。 ■ 分析客訴案例,提出預防及改善建議,協助降低申訴風險。 ■ 配合主管執行各項專案或交辦任務,推動作業持續優化。 如果你對客服與電商有熱情,並希望在這個領域累積經驗,歡迎
網路家庭 is hiring 【客服】售後科專員! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【客服】售後科專員 Taipei City, Taiwan 客戶服務 Full Time 投遞 工作內容 1. 網路購物服務電話及信件回覆處理 2. 客訴案件關懷及協助 3. 協調客戶及相關單位共同解決客訴 必要條件 1. 熟悉網路購物、客服專線值機經驗1年以上 2. EQ 穩定、抗壓性強、配合度高、執行力佳 3. 具電話禮儀、擅溝通協調、主動積極、細心負責 4. 採固定班別排班制,需配合國定例假日排班 學歷要求: 專科、大學、碩士 班別時段: 【早班】09:00-18:00 薪資 月薪 35,000 ~ 40,000 TWD 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【商品】產品企劃/資深產品企劃! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【商品】產品企劃/資深產品企劃 Taipei City, Taiwan 商業開發 Full Time 投遞 工作內容 [ 工作內容與核心任務 ] 1.負責商品資料建檔、上架與下架作業,並依營運需求調整價格與版面呈現。 2.協助處理商品突發狀況,與廠商保持良好溝通與協調,確保供應穩定。 3.參與檔期及促銷活動規劃,負責商品文宣設計與製作(含商品圖片、文案及 EDM)。 4.辦理活動相關申請文件及簽呈流程,確保作業時效與正確性。 5.配合全站主題與節慶活動規劃,協助商品選品、整合及促銷規劃。 6.依行銷策略調整各版位曝光內容與商品陳列,確保活動順利進行。 7.主管交辦之其他專案或臨時事項。 必要條件 [ 我們正在尋找的夥伴 ] 1.細心並具責任感,能在快節奏環境中保持效率。 2.擁有團隊合作精神,能與不同部門夥伴良好互動。 [ 必備技能包! ] 1.具備良好的溝通協調能力,能與廠商與內部跨部門順利合作。 加分條件 [ 符合以下條件,更加分!] 1. 有過電商相關平台的商品上架或活動執行經驗。 2. 具商品文案撰寫或視覺設計、美編圖繪軟體(例如:Adobe Photoshop)操作經驗。 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 月薪 35,000 ~ TWD 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 其他問題 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【商品】業務暨產品經理/資深產品經理(PM)! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【商品】業務暨產品經理/資深產品經理(PM) Taipei City, Taiwan 商業開發 Full Time 投遞 工作內容 [ 工作內容與核心任務 ] 1.制定並執行產品的業績發展策略,聚焦銷售成長與獲利,以達成公司KPI目標。 2.規劃並推動行銷活動,持續追蹤銷售成效,並提出改善方案。 3.定期追蹤並分析產品銷售數據與達成率,提出行動計畫以優化業績表現。 3.進行市場與競品分析,掌握產業趨勢與競爭態勢(Ex: 廠商優劣勢分析),確保產品具市場競爭力。 4.跨部門協調合作、供應商開發、談判與關係管理,協助拓展業務合作機會。 必要條件 [ 我們正在尋找的夥伴 ] 1.具備跨部門協作能力,善於溝通與談判,能與不同單位及供應商建立良好合作關係。 2.責任心強,能在快節奏環境中有效管理多項專案。 [ 必備技能包! ] 1.對電商平台運營及商品營運流程有基礎了解 2.具跨部門協作與供應商管理經驗, 3.具產品規劃與業績策略制定能力,對於銷售與目標管理有基礎了解。 加分條件 [ 符合以下條件,更加分!] 1.具中大型綜合電商平台商品營運或業務推進相關經驗,且具兩年以上工作經驗者。 2.具供應商開發或品牌導入經驗者尤佳。 公司福利 ★ 每個重要節日都值得慶祝 ★ 端午、中秋、生日禮金 ★ 好好休息是為了匯聚戰鬥力 ★ 優於勞基法的特休假制度、 優於防疫政策的疫苗安薪假 ★ 安心工作有保障 ★ 網家成立職工福利委員會、依法提撥新制退休金, 並額外為員工加保團體保險、讓同仁在職與退休皆有保障。 ★ 終生學習是一種生活態度 ★ 語言學習補助、在職進修補助 ★ 工作生活平衡不是口號是實踐 ★ 定期健檢、健康講座、社團活動與補助 哺乳室空間、鮮食、飲料、咖啡茶水 ★ 團結從團購開始 ★ 特約商店、不定期的團購優惠 【集團子公司】 集團旗下公司同仁享有各公司專屬的福利,詳見各職缺內容。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 其他問題 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【商品】品類經營主管! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【商品】品類經營主管 Taipei City, Taiwan 業務人員 Full Time 投遞 工作內容 工作內容 1.制定並執行品類的發展策略及年度專案規劃,聚焦銷售成長與獲利。 2.規劃並監督品類活動執行,追蹤品類銷售數據與達成率,帶領團隊優化業績表現。 3.進行市場與競品分析,掌握產業趨勢與競爭態勢,提升市場競爭力。 4.跨部門協調合作,開發與維護供應商關係,協助拓展合作機會。 【我們正在尋找的夥伴】 1.具策略思考與業務推進思維 2.具備良好的溝通協調與問題解決能力。 3.具3年以上品類營運相關經驗,並有2年以上帶領團隊經驗。 【必備技能包!】 1.熟悉電商平台運營及商品營運流程 2.熟悉跨部門協作與供應商管理 3.了解銷售與目標管理,具品類規劃與業績策略制定能力。 【符合以下條件,更加分!】 曾於中大型綜合電商平台擔任商品營運、業務推進之團隊管理相關職務者佳 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們
網路家庭 is hiring 【公關】公關企劃專員/ 資深專員! (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:1716512,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); document.addEventListener("turbolinks:load", function(){ var url = window.location.href; dataLayer.push({ 'event': 'pageView', 'virtualUrl': url }); }); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M3544VR'); window.addEventListener('turbolinks:before-render', function () { window.zEACLoaded = undefined; }); $('.flash-message-close').click(function(e){ e.preventDefault(); $(this).parent().fadeOut('slow'); }); $('.notification.is-info, .notification.is-primary, .notification.is-success').delay(2500).fadeOut('slow') function showFlashMessage(type, message) { $('.flash-container').html(' ' + message + ' '); $('.notification.is-'+type).delay(2500).fadeOut('slow'); } body { --brand-color: rgba(0,133,255,1); --highlighted-color: rgba(1,214,166,1); } input[type="checkbox"], input[type="radio"] { height: 25px; width: 25px; } $(document).ready(function() { var carousel = $(".banner-inside").slick({ autoplay: true, dots: true, prevArrow: false, nextArrow: false }); $('.banner-action-button.forward').click(function(e){ carousel.slick('slickPrev'); }); $('.banner-action-button.backward').click(function(e){ carousel.slick('slickNext'); }); }); 【公關】公關企劃專員/ 資深專員 Taipei City, Taiwan 傳播 / 媒體 Full Time 投遞 工作內容 【工作內容與核心任務】 1. 策略提案與公共事務執行: * 負責年度公關策略或大型專案的企劃書撰寫,具備將創意轉化為可行計畫的邏輯能力。 * 主導或協助公共事務/專案計畫(如:政府補助案、標案、協會合作或大型機構專案) 之申請、執行與結案報告製作。 * 針對產業議題進行研析,提供策略建議,協助公司建立良好的外部溝通立場。 2. 公關內容產出與活動執行: * 撰寫高品質新聞稿、官方聲明及各類公關文件,將電商動態與行銷資訊轉化為具新聞價 值的內容。 * 規劃與執行記者會、媒體餐敘及參訪活動,具備獨立控管專案進度、預算與成效的能 力。 3. 品牌企劃與異業合作: * 主動發掘潛在合作夥伴,規劃異業合作案型。 * 策劃具備新聞點的品牌行銷活動,整合線上線下資源以達成宣傳目標。 -------------------------- [ 我們正在尋找的夥伴 ] 1. 邏輯思辨能力強,能從繁雜資訊中理出頭緒。 2. 積極主動,對電商產業有高度熱忱,能靈活應對快速變化的環境。 必要條件 [ 必備技能包! ] 1. 具備優秀的提案撰寫能力:精通簡報與新聞稿撰寫,能獨立完成邏輯清晰、架構完整的企劃案。 2. 具備 PA 或專案經驗:曾實際執行過政府標案、補助計畫或跨部門大型專案。 加分條件 [ 符合以下條件,更加分!] 1. 具備 2 年以上公關、品牌行銷或標案企劃相關經驗。 2. 具備 PR Agency、FMCG 或 EC 產業經驗尤佳。 薪資 面議 應徵表單 * 為必填 若您是 Yourator 會員,建議匯入 Yourator 履歷,可加速投遞流程並於 Yourator 檢視投遞紀錄與進度。 沒有 Yourator 帳號嗎?立即註冊 匯入 履歷 個人資料 Email 行動電話 姓氏 名字 最近任職公司 最近任職職務 自我推薦信 履歷 上傳履歷 預覽 移除 警告訊息 系統不支援此檔案類型。請上傳符合以下類型,且小於 25 MB 的檔案 Acrobat (.pdf) Word (.doc, .docx) Pages (.pages) Keynote (.key) PowerPoint (.ppt, .pptx) Images (.png, .jpg, .jpeg) 我知道了 function showFilenameContainerAndHideUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.remove('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.add('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.add('tw-invisible'); } function hideFilenameContainerAndShowUploadButton(id) { const filenameContainer = document.getElementById(`${id}-filename-container`); filenameContainer.classList.add('tw-invisible'); const fileWrapper = document.getElementById(`file-wrapper-${id}`); fileWrapper.classList.remove('tablet:tw-flex-row-reverse', 'tw-flex-col-reverse', 'tw-justify-end'); const uploadButton = document.getElementById(`${id}-upload-button`); uploadButton.classList.remove('tw-invisible'); } function showFileName(event) { // fileId should be in theformat `file-${identifier}` const fileId = event.target.id; // get identifier const id = fileId.split('-')[1]; const infoArea = document.getElementById(`filename-${id}`); const input = event.srcElement; if (input.files[0]) { const fileName = input.files[0].name; const fileSize = Number((input.files[0].size / 1048576).toFixed(1)); if (fileSize > 25) { alert('注意!目前僅能上傳 25 MB 以下的檔案'); input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } else { showFilenameContainerAndHideUploadButton(id); infoArea.textContent = fileName; } } else { input.files[0] = undefined; input.value = ''; infoArea.classList.remove('has-file'); infoArea.textContent = '檔案大小限制:25MB 以下'; return false; } } function onPreviewClick(fileId) { // Use Blob URL instead of data URL to support large PDF files const input = document.getElementById(`file-${fileId}`); if (!input || !input.files || !input.files[0]) { return; } const file = input.files[0]; // Only proceed for files that the browser can handle in an const blobUrl = URL.createObjectURL(file); const newWindow = window.open(); if (!newWindow) { // popup blocked alert('Please allow popups to preview the file.'); URL.revokeObjectURL(blobUrl); return; } // Write minimal HTML that embeds the blob URL newWindow.document.write(` PDF Preview html,body{height:100%;margin:0;}iframe{width:100%;height:100%;border:0;} `); // Revoke blob URL when the preview window is closed to free memory const revokeInterval = setInterval(function() { if (newWindow.closed) { clearInterval(revokeInterval); try { URL.revokeObjectURL(blobUrl); } catch (e) { /* ignore */ } } }, 500); } function onRemoveAttachment(fileId) { const file = document.getElementById(`file-${fileId}`); if (file) { file.value = ""; hideFilenameContainerAndShowUploadButton(fileId); } } // 期望薪資上限不得低於下限 $("#application_salary_expectation_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_salary_expectation_upper_bound").attr("min", lower_bound + 1); }); // 當前薪資上限不得低於下限 $("#application_current_salary_lower_bound").on("change", function() { let lower_bound = parseInt($(this).val()); if (isNaN(lower_bound)) { lower_bound = 0; } $("#application_current_salary_upper_bound").attr("min", lower_bound + 1); }); $(document).ready(function() { $('[data-toggle="tooltip"]').tooltipster({ maxWidth: '195', position: 'bottom', theme: 'tooltipster-default' }); // Hash email pre-fill (#16155) (function() { var hash = window.location.hash; if (hash) { var params = new URLSearchParams(hash.substring(1)); var email = params.get('email'); if (email) { var emailField = document.getElementById('application_email'); if (emailField && !emailField.value) { emailField.value = email; emailField.dispatchEvent(new Event('blur')); } } } })(); // 移除原有的 form submit 事件,改用 fetch + FormData $('form').off('submit').on('submit', function(event) { event.preventDefault(); var form = this; var valid = true; $('label[for^="application_application_question_answers_attributes_"][required]').each(function() { var key = $(this).attr('key'); var checkboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]'); var checkedboxes = $('input[name="application[application_question_answers_attributes][' + key + '][value][]"]:checked'); if (checkboxes.length > 0) { if (checkedboxes.length > 0) { checkboxes.eq(0).prop('required', false); } else { checkboxes.eq(0).prop('required', true); checkboxes.unbind('click').on('click', function() { checkboxes.eq(0).prop('required', false); }); valid = false; form.reportValidity(); event.preventDefault(); } } }); $('input[type="file"]').each(function() { if ($(this).val() !== '') { var file_types = ["doc", "docx", "ppt", "pptx", "pages", "key", "jpg", "jpeg", "png", "html", "pdf"]; function getExtension(filename) { var parts = filename.split('.'); return parts[parts.length - 1]; } getExtension($(this).val()); function fileTypeErrorHandler() { $('.modal').addClass('is-active'); $('.modal .modal-background, .modal .delete, .modal .box-button') .unbind('click') .click(function(e) { $(e.target).parents('.modal').removeClass('is-active'); }); } if (!file_types.includes(getExtension($(this).val()))) { fileTypeErrorHandler(); form.reportValidity(); event.preventDefault(); valid = false; } } }); if (!valid) { return; } $("input[type='submit']").prop('disabled', true); // 攔截後使用 fetch 搭配 FormData 發送 request var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, credentials: 'same-origin', redirect: 'manual' // 我們自己處理成功的轉址 }) .then(function(response) { if (response.ok) { return response.json().then(function(data) { if (data.redirect_to) { window.location.href = data.redirect_to; } }); } else if (response.status === 422) { return response.json().then(function(data) { if (data.error_message) { showFlashMessage("danger", data.error_message); } }); } else { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 } }) .catch(function(error) { showFlashMessage('danger', 'Apply failed. Please try again later.'); // 未知錯誤 }).finally(function() { $("input[type='submit']").prop('disabled', false); }); }); // show previous job applied record const jobAppliedMsgEl = document.querySelector('[data-job-applied-msg]'); if (jobAppliedMsgEl) { const dateTime = new Date(''); const month = ((dateTime.getMonth() + 1) 技術支援 語言: const localeToLabelMapping = { 'en': 'English', 'ja': '日本語', 'zh-TW': '繁體中文' }; function localeDropdown(event){ event.stopPropagation(); document.getElementById('locale-dropdown').classList.toggle('is-active'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-down'); document.getElementById('locale-dropdown-icon').classList.toggle('fa-angle-up'); } function setLocale(locale){ window.location.href = window.location.href.replace( /[\?#].*|$/, "?lng=" + locale); } window.onload = function(){ document.getElementById('locale-label').innerHTML = localeToLabelMapping['zh-TW'] } English English 日本語 繁體中文 2026 Teamdoor. All rights reserved. 使用條款 個資法宣告 聯絡我們