{"id":2130,"date":"2024-09-26T16:23:02","date_gmt":"2024-09-26T08:23:02","guid":{"rendered":"\/ms\/?page_id=2130"},"modified":"2026-07-28T14:42:17","modified_gmt":"2026-07-28T06:42:17","slug":"%e8%aa%b2%e7%a8%8b%e8%a6%8f%e5%8a%83-2","status":"publish","type":"page","link":"\/ms\/?page_id=2130","title":{"rendered":"\u8ab2\u7a0b\u898f\u5283"},"content":{"rendered":"\n<div class=\"d-flex flex-row\" style=\"background-color: none;border-top:1px solid none;border-bottom:1px solid #333333;\">\n<div class=\"fs-6 fw-bold px-1 pt-2\"><i class=\"fa fa-home\"><\/i><a href=\"\/ms\/\" style=\"text-decoration:none\">\u9996\u9801<\/a><\/div>\n<div class=\"fs-6 fw-bold px-1 pt-2 text-black-50\">\/<\/div>\n<div class=\"fs-6 fw-bold px-1 pt-2\"><a href=\"\/ms\/?page_id=443\" style=\"text-decoration:none\">\u7cfb\u6240\u7c21\u4ecb<\/a><\/div>\n<div style=\"width:0; height:0;margin-top:15px; border-left:8px solid #49adf6; border-top:8px solid transparent;border-bottom:10px solid transparent;\"><\/div>\n<\/div>\n\n\n\n<style>\r\n.even-row {\r\n    background-color: rgba(236, 236, 236, 0.3);\r\n}\r\n<\/style>\r\n<script>\r\n$(document).ready(function() {\r\n            $('.filter-btn2,.filter-btn3').on('click', function(e) {\r\n                e.preventDefault();\r\n                \/\/ \u79fb\u9664\u6240\u6709\u6309\u9215\u7684 active \u72c0\u614b\r\n                \/\/ $('.filter-btn2').removeClass('active');\r\n                \/\/ \u70ba\u7576\u524d\u6309\u9215\u6dfb\u52a0 active \u72c0\u614b\r\n                \/\/ $(this).addClass('active');\r\n                \/\/ \u7372\u53d6 data-filter \u7684\u503c\r\n                var filterClass = $(this).data('filter');\r\n                \/\/ \u96b1\u85cf\u6240\u6709\u7684 article-list-2 \u5340\u584a \r\n                \/\/ $('.article-list-2').hide();\r\n                \/\/ \u986f\u793a\u5c0d\u61c9\u7684 article-list-2 \u5340\u584a\r\n                $(filterClass).show();\r\n \r\n                \/\/ \u5c0d\u986f\u793a\u7684 article-list-2 \u5340\u584a\u4e2d\u7684\u6bcf\u500b\u9805\u76ee\u9032\u884c\u5947\u5076\u6578\u5217\u80cc\u666f\u8272\u8655\u7406\r\n                $(filterClass).children().each(function(index) {\r\n                    if (!$(this).hasClass('text-end')) {\r\n                        if (index % 2 === 0) {\r\n                            $(this).addClass('even-row').removeClass('odd-row');\r\n                        } else {\r\n                            $(this).addClass('odd-row').removeClass('even-row');\r\n                        }\r\n                    }\r\n                });\r\n            });\r\n            \/\/ \u521d\u59cb\u5316\u986f\u793a active \u7684\u5167\u5bb9\u5340\u584a\r\n            $('.filter-btn2.active').trigger('click');\r\n        });\r\n<\/script>\n\n\n\n<div style=\"height:5vh\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h2 class=\"wp-block-post-title\">\u8ab2\u7a0b\u898f\u5283<\/h2>\n\n\n<div style=\"height:2vh\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-white-background-color has-background\">\u672c\u7cfb\u7684\u8ab2\u7a0b\u8a2d\u8a08\u79c9\u6301\u5546\u7ba1\u5b78\u9662\u57f9\u80b2\u5c08\u696d\u7ba1\u7406\u4eba\u624d\u4e4b\u7b56\u7565\uff0c\u767c\u5c55\u51fa\u4ee5\u4f01\u696d\u7d93\u71df\u8207\u884c\u92b7\u6d41\u901a\u3001\u5927\u6578\u64da\u8cc7\u6599\u5206\u6790\u61c9\u7528\u4e8c\u5927\u65b9\u5411\uff0c\u4e26\u64da\u6b64\u4e3b\u8ef8\u8a2d\u8a08\u8ab2\u7a0b\u3002\u5176\u4e2d\u6ce8\u91cd\u57fa\u790e\u8ab2\u7a0b\u7684\u7d2e\u6839\u8a13\u7df4\u3001\u555f\u767c\u5b78\u751f\u7684\u601d\u8003\u80fd\u529b\u3001\u8f14\u4ee5\u5be6\u52d9\u9762\u7684\u8a98\u5c0e\uff0c\u4e26\u5f37\u5316\u793e\u6703\u502b\u7406\u898f\u7bc4\u4e4b\u6f5b\u79fb\u9ed8\u5316\uff0c\u4ffe\u6559\u80b2\u51fa\u4e0d\u540c\u5c64\u7d1a\u7684\u9ad8\u7d20\u8cea\u89e3\u6c7a\u554f\u984c\u4eba\u624d\u3002<\/p>\n\n\n\n<p class=\"has-white-background-color has-background\">\u8ab2\u7a0b\u67e5\u8a62\uff1a<a href=\"http:\/\/esquery.tku.edu.tw\/acad\/\">http:\/\/esquery.tku.edu.tw\/acad\/<\/a><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"zh-Hant\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>115\u8ab2\u7a0b\u5730\u5716<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Space+Grotesk:wght@500;600;700&#038;family=Noto+Sans+TC:wght@400;500;700;900&#038;family=JetBrains+Mono:wght@400;500;700&#038;display=swap\" rel=\"stylesheet\">\n<style>\n:root{\n  --page-bg:#F6F5F1;\n  --surface:#FFFFFF;\n  --border:#DEDBD3;\n  --border-soft:#EAE7DF;\n  --ink:#232323;\n  --ink-dim:#6B6B63;\n  --accent:#3D5A80;\n  --card-text:#1A1A1A;\n}\n*{box-sizing:border-box;}\nhtml,body{margin:0;padding:0;}\nbody{background:var(--page-bg);color:var(--ink);font-family:'Noto Sans TC',sans-serif;min-height:100vh;}\n.shell{max-width:1100px;margin:0 auto;padding:40px 24px 80px;}\n#mapRoot{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:26px;}\n.map-hero h2{font-family:'Space Grotesk',sans-serif;font-size:26px;margin:0 0 4px;color:var(--ink);}\n.map-hero p{font-size:13px;color:var(--ink-dim);margin:0 0 20px;}\n.view-tabs{display:flex;gap:6px;margin-bottom:18px;border-bottom:1px solid var(--border);}\n.view-tab{font-family:'Noto Sans TC',sans-serif;font-size:13px;font-weight:700;padding:8px 16px;border:none;background:none;color:var(--ink-dim);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;}\n.view-tab.active{color:var(--accent);border-bottom-color:var(--accent);}\n.plan-section{margin-bottom:26px;}\n.plan-section h3{font-family:'Space Grotesk',sans-serif;font-size:16px;margin:0 0 4px;color:var(--ink);display:flex;align-items:center;gap:8px;}\n.plan-section .plan-sub{font-size:12px;color:var(--ink-dim);margin:0 0 10px;}\ntable.plan-table{width:100%;border-collapse:collapse;font-size:13px;}\ntable.plan-table th{text-align:left;padding:8px 10px;background:#F0EFEA;color:var(--ink-dim);font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.03em;border-bottom:1px solid var(--border);}\ntable.plan-table td{padding:7px 10px;border-bottom:1px solid var(--border-soft);}\ntable.plan-table tr:last-child td{border-bottom:none;}\ntable.plan-table td.plan-credit, table.plan-table th.plan-credit{text-align:center;width:70px;font-family:'JetBrains Mono',monospace;}\ntable.plan-table td.plan-year, table.plan-table th.plan-year{text-align:center;width:90px;font-family:'JetBrains Mono',monospace;}\ntable.plan-table .plan-cat-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;}\n.plan-summary{display:flex;gap:0;margin-top:4px;margin-bottom:24px;border:1px solid var(--border);border-radius:10px;overflow:hidden;flex-wrap:wrap;}\n.plan-summary .cell{flex:1 1 120px;padding:12px 16px;border-right:1px solid var(--border);}\n.plan-summary .cell:last-child{border-right:none;}\n.plan-summary .cell .num{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700;color:var(--ink);}\n.plan-summary .cell .lbl{font-size:11px;color:var(--ink-dim);margin-top:2px;}\n.plan-toolbar{display:flex;gap:8px;margin-bottom:16px;}\n.btn{font-family:'Noto Sans TC',sans-serif;font-weight:700;font-size:13.5px;padding:10px 20px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;}\n.btn.subtle{background:var(--surface);color:var(--ink);border-color:var(--border);}\n#printFullPlan{display:none;}\n@media print{\n  @page{size:A3 portrait;margin:10mm;}\n  body > *:not(#printFullPlan){display:none !important;}\n  #printFullPlan{display:block !important;font-family:'Noto Sans TC',sans-serif;color:#1a1a1a;}\n  .print-header{margin-bottom:8px;}\n  .print-header h1{font-family:'Space Grotesk',sans-serif;font-size:16pt;margin:0 0 2pt;}\n  .print-header p{font-size:9pt;color:#555;margin:0;}\n  .print-columns{column-count:3;column-gap:14px;}\n  .print-section{break-inside:avoid-column;margin-bottom:10pt;}\n  .print-section h2{font-size:10.5pt;margin:0 0 2pt;line-height:1.3;}\n  .print-section .print-sub{font-size:8pt;color:#555;margin:0 0 4pt;}\n  table.print-plan-table{width:100%;border-collapse:collapse;font-size:7.3pt;table-layout:fixed;}\n  table.print-plan-table th{border:0.5pt solid #999;padding:2px 3px;background:#EFEFEA;text-align:left;font-size:7pt;}\n  table.print-plan-table td{border:0.5pt solid #999;padding:2px 3px;vertical-align:top;word-break:break-word;}\n  table.print-plan-table th:nth-child(2), table.print-plan-table td.plan-credit{width:26px;text-align:center;}\n  table.print-plan-table th:nth-child(3), table.print-plan-table td.plan-year{width:30px;text-align:center;}\n  .plan-en{display:block;font-size:6.3pt;color:#666;}\n  .print-footnote{margin-top:6pt;font-size:6.8pt;color:#333;column-count:2;column-gap:24px;}\n  .print-footnote p{margin:0 0 3pt;break-inside:avoid-column;}\n  .print-footnote .footnote-en{color:#666;font-size:6.2pt;}\n}\n.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}\n.chip{\n  font-size:12px;padding:6px 13px;border-radius:999px;border:1px solid var(--border);\n  background:var(--surface);cursor:pointer;user-select:none;color:var(--ink-dim);\n  display:flex;align-items:center;gap:6px;\n}\n.chip .dot{width:8px;height:8px;border-radius:50%;}\n.chip.active{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:700;}\n.timeline{display:flex;flex-direction:column;gap:4px;}\n.year-block{display:grid;grid-template-columns:60px 1fr;gap:0 14px;border-top:1px dashed var(--border);padding:18px 0;}\n.year-block:first-child{border-top:none;}\n.year-label{font-family:'Space Grotesk',sans-serif;font-weight:700;color:var(--ink-dim);text-align:center;padding-top:4px;}\n.year-label .num{font-size:26px;display:block;color:var(--ink);}\n.year-label .credit-tally{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--ink-dim);line-height:1.6;margin-top:4px;}\n.year-label .credit-tally b{color:var(--ink);}\n.semesters{display:grid;grid-template-columns:1fr 1fr;gap:12px;}\n.semester-col{background:#FAFAF8;border:1px solid var(--border-soft);border-radius:9px;padding:10px;min-height:40px;}\n.semester-col .sem-head{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--ink-dim);margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--border-soft);letter-spacing:.06em;}\n.course-card{background:#fff;border:1px solid var(--border);border-left:4px solid var(--cat-color,#999);border-radius:7px;padding:8px 10px;margin-bottom:7px;font-size:12.5px;display:flex;justify-content:space-between;gap:8px;align-items:flex-start;}\n.course-card.elective{border-left-style:dashed;}\n.course-card .name{font-weight:500;line-height:1.4;color:var(--card-text);}\n.course-card .meta{flex:none;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--ink-dim);text-align:right;}\n.empty-note{font-size:11px;color:var(--ink-dim);padding:2px;}\n.legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:20px;padding-top:14px;border-top:1px solid var(--border-soft);font-size:11.5px;color:var(--ink-dim);}\n.legend .item{display:flex;align-items:center;gap:6px;}\n.legend .sw{width:11px;height:11px;border-radius:3px;}\n<\/style>\n<\/head>\n<body>\n<div class=\"shell\">\n  <div id=\"mapRoot\">\n    <div class=\"map-hero\">\n      <h2 id=\"mapTitleDisplay\"><\/h2>\n      <p id=\"mapSubtitleDisplay\"><\/p>\n    <\/div>\n    <div class=\"filter-bar\" id=\"filterBar\"><\/div>\n    <div class=\"timeline\" id=\"timeline\"><\/div>\n    <div class=\"legend\" id=\"legend\"><\/div>\n  <\/div>\n<\/div>\n<script type=\"application\/json\" id=\"viewerStateData\">{\"courses\":[{\"id\":\"c1\",\"zh\":\"\u4e2d\u570b\u8a9e\u6587\u80fd\u529b\u8868\u9054\",\"credits\":\"2\",\"yearText\":\"\u4e00\u4e0b\",\"type\":\"required\",\"cat\":\"foundation\"},{\"id\":\"c2\",\"zh\":\"\u7d93\u6fdf\u5b78\",\"credits\":\"2\/2\",\"yearText\":\"\u4e00\",\"type\":\"required\",\"cat\":\"other\"},{\"id\":\"c3\",\"zh\":\"\u6578\u4f4d\u79d1\u6280\u8207AI\u61c9\u7528\",\"credits\":\"2\/2\",\"yearText\":\"\u4e00\",\"type\":\"required\",\"cat\":\"ai\"},{\"id\":\"c4\",\"zh\":\"\u7ba1\u7406\u5b78\",\"credits\":\"3\",\"yearText\":\"\u4e00\u4e0a\",\"type\":\"required\",\"cat\":\"mgmt\"},{\"id\":\"c5\",\"zh\":\"\u6703\u8a08\u5b78\",\"credits\":\"2\/2\",\"yearText\":\"\u4e00\",\"type\":\"required\",\"cat\":\"finance\"},{\"id\":\"c6\",\"zh\":\"\u7ba1\u7406\u7d93\u6fdf\",\"credits\":\"3\",\"yearText\":\"\u4e00\u4e0b\",\"type\":\"required\",\"cat\":\"other\"},{\"id\":\"c7\",\"zh\":\"\u5fae\u7a4d\u5206\",\"credits\":\"2\/2\",\"yearText\":\"\u4e00\",\"type\":\"required\",\"cat\":\"other\"},{\"id\":\"c8\",\"zh\":\"\u63a2\u7d22\u6c38\u7e8c\",\"credits\":\"1\",\"yearText\":\"\u4e00\u4e0a\",\"type\":\"required\",\"cat\":\"other\"},{\"id\":\"c9\",\"zh\":\"\u5546\u4e8b\u6cd5\",\"credits\":\"2\",\"yearText\":\"\u4e8c\u4e0a\",\"type\":\"required\",\"cat\":\"other\"},{\"id\":\"c10\",\"zh\":\"\u4eba\u5de5\u667a\u6167\u6982\u8ad6\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0b\",\"type\":\"required\",\"cat\":\"ai\"},{\"id\":\"c11\",\"zh\":\"\u884c\u92b7\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0a\",\"type\":\"required\",\"cat\":\"mgmt\"},{\"id\":\"c12\",\"zh\":\"\u4f5c\u696d\u7814\u7a76\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0b\",\"type\":\"required\",\"cat\":\"quant\"},{\"id\":\"c13\",\"zh\":\"\u8cc7\u8a0a\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0a\",\"type\":\"elective\",\"cat\":\"quant\"},{\"id\":\"c14\",\"zh\":\"\u7d71\u8a08\u5b78\",\"credits\":\"2\/2\",\"yearText\":\"\u4e8c\",\"type\":\"required\",\"cat\":\"quant\"},{\"id\":\"c15\",\"zh\":\"\u8cc7\u6599\u63a2\u52d8\u8207\u5206\u6790\u5c0e\u8ad6\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0a\",\"type\":\"required\",\"cat\":\"quant\"},{\"id\":\"c16\",\"zh\":\"\u7522\u696d\u6578\u64da\u5206\u6790\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0a\",\"type\":\"elective\",\"cat\":\"quant\"},{\"id\":\"c17\",\"zh\":\"\u7da0\u8272\u91d1\u878d\u79d1\u6280\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0a\",\"type\":\"elective\",\"cat\":\"finance\"},{\"id\":\"c18\",\"zh\":\"\u91d1\u878d\u6a5f\u69cb\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0b\",\"type\":\"elective\",\"cat\":\"finance\"},{\"id\":\"c19\",\"zh\":\"\u6578\u4f4d\u5316\u7b56\u7565\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0b\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c20\",\"zh\":\"AI\u884c\u92b7\u6578\u64da\u5206\u6790\u5be6\u52d9\",\"credits\":\"3\",\"yearText\":\"\u4e8c\u4e0b\",\"type\":\"elective\",\"cat\":\"ai\"},{\"id\":\"c21\",\"zh\":\"\u500b\u4eba\u7406\u8ca1\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0a\",\"type\":\"elective\",\"cat\":\"finance\"},{\"id\":\"c22\",\"zh\":\"\u8ca1\u52d9\u98a8\u96aa\u7ba1\u7406\",\"credits\":\"2\",\"yearText\":\"\u4e09\u4e0b\",\"type\":\"elective\",\"cat\":\"finance\"},{\"id\":\"c23\",\"zh\":\"\u6c7a\u7b56\u5206\u6790\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0b\",\"type\":\"required\",\"cat\":\"quant\"},{\"id\":\"c24\",\"zh\":\"\u4e2d\u5c0f\u4f01\u696d\u7d93\u71df\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0b\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c25\",\"zh\":\"\u8ca1\u52d9\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0a\",\"type\":\"required\",\"cat\":\"finance\"},{\"id\":\"c26\",\"zh\":\"\u77e5\u8b58\u7ba1\u7406\",\"credits\":\"2\",\"yearText\":\"\u4e09\u4e0a\",\"type\":\"elective\",\"cat\":\"other\"},{\"id\":\"c27\",\"zh\":\"\u4f9b\u61c9\u93c8\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0a\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c28\",\"zh\":\"\u6578\u4f4d\u8f49\u578b\u7406\u8ad6\u8207\u5be6\u52d9\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0a\",\"type\":\"elective\",\"cat\":\"other\"},{\"id\":\"c29\",\"zh\":\"\u5e02\u5834\u8abf\u67e5\u8207\u5206\u6790\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0b\",\"type\":\"elective\",\"cat\":\"other\"},{\"id\":\"c30\",\"zh\":\"\u5ee3\u544a\u884c\u92b7\u8207\u7814\u7a76\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0b\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c31\",\"zh\":\"\u8ff4\u6b78\u5206\u6790\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0b\",\"type\":\"required\",\"cat\":\"quant\"},{\"id\":\"c32\",\"zh\":\"\u6578\u7406\u7d71\u8a08\u5b78\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0a\",\"type\":\"required\",\"cat\":\"quant\"},{\"id\":\"c33\",\"zh\":\"\u79d1\u6280\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u4e09\u4e0b\",\"type\":\"elective\",\"cat\":\"other\"},{\"id\":\"c34\",\"zh\":\"AI\u5e73\u53f0\u7b56\u7565\u7ba1\u7406\",\"credits\":\"2\",\"yearText\":\"\u4e09\u4e0a\",\"type\":\"elective\",\"cat\":\"ai\"},{\"id\":\"c35\",\"zh\":\"\u4f01\u696d\u7d93\u71df\u5be6\u52d9\",\"credits\":\"3\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c36\",\"zh\":\"\u54c1\u8cea\u7ba1\u7406\",\"credits\":\"3\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"other\"},{\"id\":\"c37\",\"zh\":\"\u96fb\u5b50\u5546\u52d9\",\"credits\":\"2\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"other\"},{\"id\":\"c38\",\"zh\":\"\u7db2\u8def\u884c\u92b7\",\"credits\":\"3\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c39\",\"zh\":\"\u8b49\u5238\u5206\u6790\u8207\u5be6\u52d9\",\"credits\":\"2\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"finance\"},{\"id\":\"c40\",\"zh\":\"\u884c\u92b7\u8207\u7269\u6d41\u7ba1\u7406\u5be6\u52d9\",\"credits\":\"3\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c41\",\"zh\":\"\u6295\u8cc7\u5206\u6790\u5be6\u52d9\",\"credits\":\"3\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"finance\"},{\"id\":\"c42\",\"zh\":\"AI\u8207\u6587\u5316\u5275\u610f\u7522\u696d\",\"credits\":\"2\",\"yearText\":\"\u56db\u4e0b\",\"type\":\"elective\",\"cat\":\"ai\"},{\"id\":\"c43\",\"zh\":\"\u4f01\u696d\u78b3\u7b56\u7565\u8207\u6c38\u7e8c\u8f49\u578b\",\"credits\":\"3\",\"yearText\":\"\u56db\u4e0a\",\"type\":\"elective\",\"cat\":\"mgmt\"},{\"id\":\"c44\",\"zh\":\"\u5c08\u6848\u7ba1\u7406\",\"credits\":\"2\",\"yearText\":\"\u56db\u4e0a\",\"type\":\"elective\",\"cat\":\"other\"},{\"id\":\"c45\",\"zh\":\"\u7ba1\u7406\u6578\u5b78\",\"credits\":\"2\",\"yearText\":\"\u4e00\u4e0b\",\"type\":\"required\",\"cat\":\"other\"}],\"categories\":[{\"key\":\"foundation\",\"label\":\"\u5171\u540c\u57fa\u790e\",\"color\":\"#5B9BD5\"},{\"key\":\"mgmt\",\"label\":\"\u7ba1\u7406\u5be6\u52d9\",\"color\":\"#9B8CF2\"},{\"key\":\"quant\",\"label\":\"\u91cf\u5316\u8207\u6578\u64da\u5206\u6790\",\"color\":\"#5FC9BA\"},{\"key\":\"finance\",\"label\":\"\u8ca1\u52d9\u8207\u7b56\u7565\",\"color\":\"#E3A857\"},{\"key\":\"ai\",\"label\":\"AI\u61c9\u7528\",\"color\":\"#EC4899\"},{\"key\":\"other\",\"label\":\"\u5176\u4ed6\",\"color\":\"#AAAAAA\"}],\"colors\":{\"page\":\"#F6F5F1\",\"surface\":\"#FFFFFF\",\"accent\":\"#3D5A80\",\"text\":\"#1A1A1A\"},\"title\":\"115\u8ab2\u7a0b\u5730\u5716\",\"subtitle\":\"\u4f9d\u6838\u5fc3\u80fd\u529b\u5206\u985e\u8207\u5165\u5b78\u5e74\u7d1a\u6392\u5217\",\"activeFilters\":[\"all_type\",\"foundation\",\"mgmt\",\"quant\",\"finance\",\"ai\",\"other\"]}<\/script>\n<script>\nfunction makeChip(label, key, active, accent, dotColor){\n  const el = document.createElement('div');\n  el.className = 'chip' + (active ? ' active' : '');\n  el.dataset.key = key;\n  el.innerHTML = (dotColor ? `<span class=\"dot\" style=\"background:${dotColor}\"><\/span>` : '') + label;\n  if(active){ el.style.background = accent; el.style.borderColor = accent; }\n  return el;\n}\n\nfunction escapeAttr(s){\n  return String(s ?? '').replace(\/&\/g,'&amp;').replace(\/\"\/g,'&quot;').replace(\/<\/g,'&lt;');\n}\n\nfunction catColor(key){\n  const c = state.categories.find(c=>c.key===key);\n  return c ? c.color : '#999999';\n}\n\nfunction catLabel(key){\n  const c = state.categories.find(c=>c.key===key);\n  return c ? c.label : key;\n}\n\nfunction creditSum(str){\n  if(str == null || str === '') return 0;\n  const parts = String(str).split('\/').map(s=>parseFloat(s)).filter(n=>!isNaN(n));\n  return parts.reduce((a,b)=>a+b, 0);\n}\n\nfunction parseYearText(text){\n  if(!text) return {year:'', sem:''};\n  const m = String(text).match(\/([\u4e00\u4e8c\u4e09\u56db])\\s*(\u4e0a|\u4e0b)?\/);\n  if(!m) return {year:'', sem:''};\n  return { year: '\u4e00\u4e8c\u4e09\u56db'.indexOf(m[1]) + 1, sem: m[2] ? (m[2] === '\u4e0a' ? 1 : 2) : '' };\n}\n\nfunction courseVisible(c){\n  if(state.activeFilters.has('all')) return true;\n  const typeOk = state.activeFilters.has('required') || state.activeFilters.has('elective')\n    ? state.activeFilters.has(c.type) : true;\n  const catOk = state.categories.some(cat=>state.activeFilters.has(cat.key))\n    ? state.activeFilters.has(c.cat) : true;\n  return typeOk && catOk;\n}\n\nfunction courseCardHtml(c){\n  const typeLabel = c.type==='required' ? '\u5fc5\u4fee' : '\u9078\u4fee';\n  return `<div class=\"course-card ${c.type}\" style=\"--cat-color:${catColor(c.cat)}\">\n    <div class=\"name\">${escapeAttr(c.zh)}<\/div>\n    <div class=\"meta\">${escapeAttr(c.credits)}<br>${typeLabel}<\/div>\n  <\/div>`;\n}\n\nfunction renderFilterBar(){\n  const bar = document.getElementById('filterBar');\n  bar.innerHTML = '';\n  const allChip = makeChip('\u5168\u90e8', 'all', state.activeFilters.has('all'), state.colors.accent);\n  allChip.addEventListener('click', ()=>{\n    state.activeFilters = new Set(['all', 'required', 'elective', ...state.categories.map(c=>c.key)]);\n    renderFilterBar(); renderTimeline();\n  });\n  bar.appendChild(allChip);\n\n  ['required','elective'].forEach(t=>{\n    const chip = makeChip(t==='required'?'\u5fc5\u4fee':'\u9078\u4fee', t, state.activeFilters.has(t), state.colors.accent);\n    chip.addEventListener('click', ()=>toggleFilter(t));\n    bar.appendChild(chip);\n  });\n  state.categories.forEach(cat=>{\n    const chip = makeChip(cat.label, cat.key, state.activeFilters.has(cat.key), state.colors.accent, cat.color);\n    chip.addEventListener('click', ()=>toggleFilter(cat.key));\n    bar.appendChild(chip);\n  });\n}\n\nfunction renderTimeline(){\n  const root = document.getElementById('timeline');\n  root.innerHTML = '';\n  const years = [1,2,3,4];\n  const withParsed = state.courses.map(c=>Object.assign({}, c, parseYearText(c.yearText)));\n  const withYear = withParsed.filter(c=>c.year);\n  const noYear = withParsed.filter(c=>!c.year);\n\n  years.forEach(y=>{\n    const block = document.createElement('div');\n    block.className = 'year-block';\n    const s1 = withYear.filter(c=>c.year==y && c.sem==1 && courseVisible(c));\n    const s2 = withYear.filter(c=>c.year==y && c.sem==2 && courseVisible(c));\n    const noSem = withYear.filter(c=>c.year==y && !c.sem && courseVisible(c));\n    if(s1.length===0 && s2.length===0 && noSem.length===0) return;\n\n    const yearAll = withYear.filter(c=>c.year==y);\n    const reqTotal = yearAll.filter(c=>c.type==='required').reduce((a,c)=>a+creditSum(c.credits),0);\n    const elecTotal = yearAll.filter(c=>c.type==='elective').reduce((a,c)=>a+creditSum(c.credits),0);\n\n    block.innerHTML = `\n      <div class=\"year-label\"><span class=\"num\">${y}<\/span>\u5e74\u7d1a\n        <div class=\"credit-tally\">\u5fc5\u4fee <b>${reqTotal}<\/b><br>\u9078\u4fee <b>${elecTotal}<\/b><\/div>\n      <\/div>\n      <div>\n        ${noSem.length? `<div style=\"margin-bottom:8px;\">${noSem.map(courseCardHtml).join('')}<\/div>` : ''}\n        <div class=\"semesters\">\n          <div class=\"semester-col\"><div class=\"sem-head\">\u4e0a\u5b78\u671f<\/div>${s1.length? s1.map(courseCardHtml).join('') : '<div class=\"empty-note\">\u2014<\/div>'}<\/div>\n          <div class=\"semester-col\"><div class=\"sem-head\">\u4e0b\u5b78\u671f<\/div>${s2.length? s2.map(courseCardHtml).join('') : '<div class=\"empty-note\">\u2014<\/div>'}<\/div>\n        <\/div>\n      <\/div>\n    `;\n    root.appendChild(block);\n  });\n\n  const visibleNoYear = noYear.filter(courseVisible);\n  if(visibleNoYear.length){\n    const block = document.createElement('div');\n    block.className = 'year-block';\n    block.innerHTML = `\n      <div class=\"year-label\">\u672a\u6a19\u793a<\/div>\n      <div class=\"semesters\" style=\"grid-template-columns:1fr;\">\n        <div class=\"semester-col\"><div class=\"sem-head\">\u5e74\u7d1a\uff0f\u5b78\u671f\u672a\u6a19\u793a<\/div>${visibleNoYear.map(courseCardHtml).join('')}<\/div>\n      <\/div>\n    `;\n    root.appendChild(block);\n  }\n\n  if(root.children.length===0){\n    root.innerHTML = '<div class=\"empty-note\">\u76ee\u524d\u7be9\u9078\u689d\u4ef6\u4e0b\u6c92\u6709\u8ab2\u7a0b\uff0c\u8acb\u8abf\u6574\u7be9\u9078\u6216\u56de\u5230\u6821\u5c0d\u6b65\u9a5f\u65b0\u589e\u8ab2\u7a0b\u3002<\/div>';\n  }\n}\n\nfunction renderLegend(){\n  const el = document.getElementById('legend');\n  el.innerHTML = state.categories.map(cat=>`\n    <div class=\"item\"><span class=\"sw\" style=\"background:${cat.color}\"><\/span>${escapeAttr(cat.label)}<\/div>\n  `).join('') + `\n    <div class=\"item\"><span style=\"display:inline-block;width:11px;border-top:2px solid #999;\"><\/span>\u5fc5\u4fee\uff08\u5be6\u7dda\uff09<\/div>\n    <div class=\"item\"><span style=\"display:inline-block;width:11px;border-top:2px dashed #999;\"><\/span>\u9078\u4fee\uff08\u865b\u7dda\uff09<\/div>\n  `;\n}\n\nfunction toggleFilter(key){\n  if(state.activeFilters.has('all')) state.activeFilters.delete('all');\n  if(state.activeFilters.has(key)) state.activeFilters.delete(key);\n  else state.activeFilters.add(key);\n  if(state.activeFilters.size===0) state.activeFilters.add('all');\n  renderFilterBar(); renderTimeline();\n}\n\nconst state = JSON.parse(document.getElementById('viewerStateData').textContent);\nstate.activeFilters = new Set(state.activeFilters && state.activeFilters.length ? state.activeFilters : ['all']);\n\ndocument.getElementById('mapTitleDisplay').textContent = state.title || '\u8ab2\u7a0b\u5730\u5716';\ndocument.getElementById('mapSubtitleDisplay').textContent = state.subtitle || '';\n\nrenderFilterBar();\nrenderTimeline();\nrenderLegend();\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u9801 \/ \u7cfb\u6240\u7c21\u4ecb \u672c\u7cfb\u7684\u8ab2\u7a0b\u8a2d\u8a08\u79c9\u6301\u5546\u7ba1\u5b78\u9662\u57f9\u80b2\u5c08\u696d\u7ba1\u7406\u4eba\u624d\u4e4b\u7b56\u7565\uff0c\u767c\u5c55\u51fa\u4ee5\u4f01\u696d\u7d93\u71df\u8207\u884c\u92b7\u6d41\u901a\u3001\u5927\u6578\u64da\u8cc7\u6599\u5206\u6790\u61c9\u7528\u4e8c\u5927\u65b9\u5411\uff0c\u4e26\u64da\u6b64\u4e3b\u8ef8\u8a2d\u8a08\u8ab2\u7a0b\u3002\u5176\u4e2d\u6ce8\u91cd\u57fa\u790e\u8ab2\u7a0b\u7684\u7d2e\u6839\u8a13\u7df4\u3001\u555f\u767c\u5b78\u751f\u7684\u601d\u8003\u80fd\u529b\u3001\u8f14\u4ee5\u5be6\u52d9\u9762\u7684\u8a98\u5c0e\uff0c\u4e26\u5f37\u5316\u793e\u6703\u502b\u7406\u898f\u7bc4\u4e4b\u6f5b\u79fb\u9ed8\u5316\uff0c\u4ffe\u6559\u80b2\u51fa\u4e0d\u540c\u5c64\u7d1a\u7684\u9ad8\u7d20\u8cea\u89e3\u6c7a\u554f\u984c\u4eba\u624d\u3002 \u8ab2\u7a0b\u67e5\u8a62\uff1ahttp:\/\/esquery.tku.edu.tw\/acad\/ 115\u8ab2\u7a0b\u5730\u5716<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"wp-custom-template-detail-4-page","meta":{"_uag_custom_page_level_css":"","footnotes":""},"acf":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"\u738b\u79cb\u6dd1","author_link":"\/ms\/?author=6"},"uagb_comment_info":0,"uagb_excerpt":"\u9996\u9801 \/ \u7cfb\u6240\u7c21\u4ecb \u672c\u7cfb\u7684\u8ab2\u7a0b\u8a2d\u8a08\u79c9\u6301\u5546\u7ba1\u5b78\u9662\u57f9\u80b2\u5c08\u696d\u7ba1\u7406\u4eba\u624d\u4e4b\u7b56\u7565\uff0c\u767c\u5c55\u51fa\u4ee5\u4f01\u696d\u7d93\u71df\u8207\u884c\u92b7\u6d41\u901a\u3001\u5927\u6578\u64da\u8cc7\u6599\u5206\u6790\u61c9\u7528\u4e8c\u5927\u65b9\u5411\uff0c\u4e26\u64da\u6b64\u4e3b\u8ef8\u8a2d\u8a08\u8ab2\u7a0b\u3002\u5176\u4e2d\u6ce8\u91cd\u57fa\u790e\u8ab2\u7a0b\u7684\u7d2e\u6839\u8a13\u7df4\u3001\u555f\u767c\u5b78\u751f\u7684\u601d\u8003\u80fd\u529b\u3001\u8f14\u4ee5\u5be6\u52d9\u9762\u7684\u8a98\u5c0e\uff0c\u4e26\u5f37\u5316\u793e\u6703\u502b\u7406\u898f\u7bc4\u4e4b\u6f5b\u79fb\u9ed8\u5316\uff0c\u4ffe\u6559\u80b2\u51fa\u4e0d\u540c\u5c64\u7d1a\u7684\u9ad8\u7d20\u8cea\u89e3\u6c7a\u554f\u984c\u4eba\u624d\u3002 \u8ab2\u7a0b\u67e5\u8a62\uff1ahttp:\/\/esquery.tku.edu.tw\/acad\/ 115\u8ab2\u7a0b\u5730\u5716","_links":{"self":[{"href":"\/ms\/index.php?rest_route=\/wp\/v2\/pages\/2130"}],"collection":[{"href":"\/ms\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"\/ms\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"\/ms\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"\/ms\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2130"}],"version-history":[{"count":11,"href":"\/ms\/index.php?rest_route=\/wp\/v2\/pages\/2130\/revisions"}],"predecessor-version":[{"id":4497,"href":"\/ms\/index.php?rest_route=\/wp\/v2\/pages\/2130\/revisions\/4497"}],"wp:attachment":[{"href":"\/ms\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}