/** * 組織階層靜態資料模組 * 從 Excel 提取的下拉選單資料 */ // ==================== 下拉選單資料 ==================== // 事業體 export const businessUnits = [ '半導體事業群', '汽車事業體', '法務室', '岡山製造事業體', '產品事業體', '晶圓三廠', '集團人資行政事業體', '集團財務事業體', '集團會計事業體', '集團資訊事業體', '新創事業體', '稽核室', '總經理室', '總品質事業體', '營業事業體' ]; // 處級單位 export const deptLevel1Units = [ '半導體事業群', '汽車事業體', '法務室', '生產處', '岡山製造事業體', '封裝工程處', '副總辦公室', '測試工程與研發處', '資材處', '廠務與環安衛管理處', '產品事業體', '先進產品事業處', '成熟產品事業處', '晶圓三廠', '製程工程處', '集團人資行政事業體', '集團財務事業體', '岡山強茂財務處', '集團會計事業體', '岡山會計處', '集團會計處', '集團資訊事業體', '資安行動小組', '資訊一處', '資訊二處', '新創事業體', '中低壓產品研發處', '研發中心', '高壓產品研發處', '稽核室', '總經理室', 'ESG專案辦公室', '專案管理室', '總品質事業體', '營業事業體', '商業開發暨市場應用處', '海外銷售事業處', '全球技術服務處', '全球行銷暨業務支援處', '大中華區銷售事業處' ]; // 部級單位 export const deptLevel2Units = [ '生產部', '生產企劃部', '岡山品質管制部', '製程工程一部', '製程工程二部', '設備一部', '設備二部', '工業工程部', '測試工程部', '新產品導入部', '研發部', '採購部', '外部資源部', '生管部', '原物料控制部', '廠務部', '產品管理部(APD)', '產品管理部(MPD)', '品質部', '製造部', '廠務部(Fab3)', '工程一部', '工程二部', '工程三部', '製程整合部(Fab3)', '行政總務管理部', '招募任用部', '訓練發展部', '薪酬管理部', '岡山強茂財務部', '會計部', '管理會計部', '集團合併報表部', '應用系統部', '電腦整合製造部', '系統網路服務部', '資源管理部', '客戶品質管理部', '產品品質管理部', '品質系統及客戶工程整合部', '封測外包品質管理部', '品質保證部', '日本區暨代工業務部', '歐亞區業務部', '韓國區業務部-韓國區', '美洲區業務部', '應用工程部(GTS)', '系統工程部', '特性測試部', '業務生管部', '市場行銷企劃部', 'MOSFET晶圓採購部', '台灣區業務部', '業務一部', '業務二部' ]; // 崗位名稱 export const positionNames = [ '營運長', '營運長助理', '副總經理', '專案經理', '經副理', '法務專員', '專利工程師', '處長', '專員', '課長', '組長', '班長', '副班長', '作業員', '工程師', '副總經理助理', '副理', '專案經副理', '顧問', '人資長', '助理', '財務長', '專案副理', '會計長', '資訊長', '主任', '總裁', '總經理', '專員/工程師', '經理', '技術經副理', '處長/資深經理' ]; // ==================== 組織階層級聯映射 ==================== // 事業體 -> 處級單位 (預設資料,可被 API 覆蓋) export let businessToDivision = { '半導體事業群': ['半導體事業群'], '汽車事業體': ['汽車事業體'], '法務室': ['法務室'], '岡山製造事業體': ['生產處', '岡山製造事業體', '封裝工程處', '副總辦公室', '測試工程與研發處', '資材處', '廠務與環安衛管理處'], '產品事業體': ['產品事業體', '先進產品事業處', '成熟產品事業處'], '晶圓三廠': ['晶圓三廠', '製程工程處'], '集團人資行政事業體': ['集團人資行政事業體'], '集團財務事業體': ['集團財務事業體', '岡山強茂財務處'], '集團會計事業體': ['集團會計事業體', '岡山會計處', '集團會計處'], '集團資訊事業體': ['集團資訊事業體', '資安行動小組', '資訊一處', '資訊二處'], '新創事業體': ['新創事業體', '中低壓產品研發處', '研發中心', '高壓產品研發處'], '稽核室': ['稽核室'], '總經理室': ['總經理室', 'ESG專案辦公室', '專案管理室'], '總品質事業體': ['總品質事業體'], '營業事業體': ['營業事業體', '商業開發暨市場應用處', '海外銷售事業處', '全球技術服務處', '全球行銷暨業務支援處', '大中華區銷售事業處'] }; // 處級單位 -> 部級單位 (預設資料,可被 API 覆蓋) export let divisionToDepartment = { '半導體事業群': ['(直屬)'], '汽車事業體': ['(直屬)'], '法務室': ['(直屬)'], '生產處': ['(直屬)', '生產部', '生產企劃部'], '岡山製造事業體': ['岡山品質管制部'], '封裝工程處': ['(直屬)', '製程工程一部', '製程工程二部', '設備一部', '設備二部'], '副總辦公室': ['工業工程部'], '測試工程與研發處': ['(直屬)', '測試工程部', '新產品導入部', '研發部'], '資材處': ['(直屬)', '採購部', '外部資源部', '生管部', '原物料控制部'], '廠務與環安衛管理處': ['(直屬)', '廠務部'], '產品事業體': ['廠務部'], '先進產品事業處': ['(直屬)', '產品管理部(APD)'], '成熟產品事業處': ['(直屬)', '產品管理部(MPD)'], '晶圓三廠': ['產品管理部(MPD)', '品質部', '製造部', '廠務部(Fab3)'], '製程工程處': ['工程一部', '工程二部', '工程三部', '製程整合部(Fab3)'], '集團人資行政事業體': ['製程整合部(Fab3)', '行政總務管理部', '招募任用部', '訓練發展部', '薪酬管理部'], '集團財務事業體': ['薪酬管理部', '岡山強茂財務部'], '岡山強茂財務處': ['(直屬)', '岡山強茂財務部'], '集團會計事業體': ['岡山強茂財務部'], '岡山會計處': ['(直屬)', '會計部', '管理會計部'], '集團會計處': ['(直屬)', '集團合併報表部'], '集團資訊事業體': ['集團合併報表部'], '資安行動小組': ['集團合併報表部'], '資訊一處': ['應用系統部', '電腦整合製造部', '系統網路服務部'], '資訊二處': ['(直屬)'], '新創事業體': ['(直屬)', '資源管理部'], '中低壓產品研發處': ['(直屬)'], '研發中心': ['(直屬)'], '高壓產品研發處': ['(直屬)'], '稽核室': ['(直屬)'], '總經理室': ['(直屬)'], 'ESG專案辦公室': ['(直屬)'], '專案管理室': ['(直屬)'], '總品質事業體': ['(直屬)', '客戶品質管理部', '產品品質管理部', '品質系統及客戶工程整合部', '封測外包品質管理部', '品質保證部'], '營業事業體': ['品質保證部'], '商業開發暨市場應用處': ['(直屬)'], '海外銷售事業處': ['(直屬)', '日本區暨代工業務部', '歐亞區業務部', '韓國區業務部-韓國區', '美洲區業務部'], '全球技術服務處': ['(直屬)', '應用工程部(GTS)', '系統工程部', '特性測試部'], '全球行銷暨業務支援處': ['(直屬)', '業務生管部', '市場行銷企劃部', 'MOSFET晶圓採購部'], '大中華區銷售事業處': ['(直屬)', '台灣區業務部', '業務一部', '業務二部'] }; // 部級單位 -> 崗位名稱 (預設資料,可被 API 覆蓋) export let departmentToPosition = { '(直屬)': ['營運長', '營運長助理', '副總經理', '專案經理', '經副理', '法務專員', '專利工程師', '處長', '專員', '工程師', '課長', '專員/工程師', '主任', '總裁', '總經理', '經理', '助理'], '生產部': ['經副理', '課長', '組長', '班長', '副班長', '作業員'], '生產企劃部': ['經副理', '課長', '專員', '工程師'], '岡山品質管制部': ['經副理', '課長', '工程師', '組長', '班長', '副班長', '作業員', '副總經理', '副總經理助理'], '製程工程一部': ['經副理'], '製程工程二部': ['經副理', '課長', '工程師'], '設備一部': ['經副理'], '設備二部': ['經副理', '課長', '工程師'], '工業工程部': ['經副理', '工程師', '課長', '副理'], '測試工程部': ['經副理', '課長', '工程師'], '新產品導入部': ['經副理', '專員', '工程師'], '研發部': ['經副理', '課長', '工程師', '專員'], '採購部': ['經副理', '課長', '專員'], '外部資源部': ['專員'], '生管部': ['經副理', '課長', '專員', '班長', '副班長', '作業員'], '原物料控制部': ['經副理', '課長', '專員', '班長', '副班長', '作業員'], '廠務部': ['經副理', '課長', '工程師', '專員', '處長'], '產品管理部(APD)': ['經副理', '工程師'], '產品管理部(MPD)': ['經副理', '專案經副理', '工程師', '顧問', '專員'], '品質部': ['經副理', '工程師', '作業員'], '製造部': ['經副理', '課長', '班長', '副班長', '作業員'], '廠務部(Fab3)': ['經副理', '工程師'], '工程一部': ['經副理', '工程師'], '工程二部': ['經副理', '工程師'], '工程三部': ['經副理', '工程師'], '製程整合部(Fab3)': ['經副理', '工程師', '人資長'], '行政總務管理部': ['經副理', '專員', '助理'], '招募任用部': ['經副理', '專員'], '訓練發展部': ['經副理', '專員'], '薪酬管理部': ['經副理', '專員', '財務長'], '岡山強茂財務部': ['經副理', '課長', '專員', '專案副理', '會計長'], '會計部': ['經副理', '課長', '專員'], '管理會計部': ['經副理', '課長', '專員'], '集團合併報表部': ['經副理', '專員', '資訊長', '課長'], '應用系統部': ['經副理', '工程師'], '電腦整合製造部': ['經副理', '工程師'], '系統網路服務部': ['經副理', '工程師'], '資源管理部': ['經副理', '專員'], '客戶品質管理部': ['經副理', '課長', '工程師', '專員'], '產品品質管理部': ['經副理', '課長', '工程師', '班長', '作業員'], '品質系統及客戶工程整合部': ['經副理', '課長', '工程師'], '封測外包品質管理部': ['經副理', '課長', '工程師'], '品質保證部': ['經副理', '課長', '工程師', '班長', '副班長', '作業員', '副總經理', '副總經理助理'], '日本區暨代工業務部': ['經副理', '課長', '專員', '助理'], '歐亞區業務部': ['經副理', '課長', '專員', '助理'], '韓國區業務部-韓國區': ['經副理', '課長', '專員', '助理', '專案經理'], '美洲區業務部': ['經副理', '課長', '專員', '助理'], '應用工程部(GTS)': ['經副理', '專案經副理', '技術經副理', '工程師'], '系統工程部': ['經副理', '工程師'], '特性測試部': ['經副理', '課長', '工程師'], '業務生管部': ['經副理', '課長', '專員'], '市場行銷企劃部': ['處長', '經理', '專員'], 'MOSFET晶圓採購部': ['經副理', '課長', '專員'], '台灣區業務部': ['專員', '助理'], '業務一部': ['處長/資深經理', '經副理', '專員', '助理'], '業務二部': ['處長/資深經理', '經副理', '專員', '助理'] }; // ==================== API 資料載入函數 ==================== /** * 從 API 載入組織階層資料,覆蓋預設資料 * @returns {Promise} 是否載入成功 */ export async function loadHierarchyData() { try { const response = await fetch('/api/hierarchy/cascade'); if (response.ok) { const result = await response.json(); if (result.success && result.data) { // 更新級聯映射資料 if (result.data.businessToDivision) { Object.assign(businessToDivision, result.data.businessToDivision); } if (result.data.divisionToDepartment) { Object.assign(divisionToDepartment, result.data.divisionToDepartment); } if (result.data.departmentToPosition) { Object.assign(departmentToPosition, result.data.departmentToPosition); } console.log('[Hierarchy] 組織階層資料載入成功'); return true; } } return false; } catch (error) { console.warn('[Hierarchy] 無法從 API 載入組織階層資料,使用預設資料:', error.message); return false; } } // ==================== 工具函數 ==================== /** * 取得指定事業體的處級單位列表 * @param {string} businessUnit - 事業體名稱 * @returns {string[]} 處級單位列表 */ export function getDivisions(businessUnit) { return businessToDivision[businessUnit] || []; } /** * 取得指定處級單位的部級單位列表 * @param {string} division - 處級單位名稱 * @returns {string[]} 部級單位列表 */ export function getDepartments(division) { return divisionToDepartment[division] || []; } /** * 取得指定部級單位的崗位名稱列表 * @param {string} department - 部級單位名稱 * @returns {string[]} 崗位名稱列表 */ export function getPositions(department) { return departmentToPosition[department] || []; }