From 74f941fa2ae4d75d0faabde2b01b3f36da813b16 Mon Sep 17 00:00:00 2001 From: 7his15CYS <127721339+7his15CYS@users.noreply.github.com> Date: Thu, 2 Apr 2026 01:54:02 +0800 Subject: [PATCH] Update Rule_internal.tsx --- src/page/Rule_internal.tsx | 1209 ++++++++++++++++++++---------------- 1 file changed, 681 insertions(+), 528 deletions(-) diff --git a/src/page/Rule_internal.tsx b/src/page/Rule_internal.tsx index 3da7f06..2129304 100644 --- a/src/page/Rule_internal.tsx +++ b/src/page/Rule_internal.tsx @@ -28,21 +28,21 @@ export function RuleInternal() { { title: "共通核心訓練", subtitle: "Core Curriculum", - color: "#ff6b6b", - bg: "rgba(255, 107, 107, 0.10)", - border: "rgba(255, 107, 107, 0.32)", + accent: "#ff8b8b", + bg: "rgba(255, 122, 122, 0.08)", + border: "rgba(255, 122, 122, 0.22)", items: [ "所有學生必修,不因主軌而免除", "碩一上以建立研究、表達、紀錄、回報能力為主", - "目標是避免只會比賽、不會研究;或只會研究、不會實作", + "避免只會比賽、不會研究;或只會研究、不會實作", ], }, { title: "主軌制度", subtitle: "Primary Track", - color: "#7dd3fc", - bg: "rgba(125, 211, 252, 0.10)", - border: "rgba(125, 211, 252, 0.32)", + accent: "#8dd5ff", + bg: "rgba(94, 201, 255, 0.08)", + border: "rgba(94, 201, 255, 0.22)", items: [ "碩一上結束前完成能力盤點", "碩一下正式確認一個主軌", @@ -52,13 +52,13 @@ export function RuleInternal() { { title: "公共任務制度", subtitle: "Service Role", - color: "#fcd34d", - bg: "rgba(252, 211, 77, 0.10)", - border: "rgba(252, 211, 77, 0.32)", + accent: "#ffd76b", + bg: "rgba(255, 215, 107, 0.08)", + border: "rgba(255, 215, 107, 0.22)", items: [ "每學期原則上一人一項任務", "任務以有限度、可交付、可驗證為原則", - "公共任務與資源配置、可信任度、推薦支持連動", + "與資源配置、可信任度、推薦支持連動", ], }, ]; @@ -67,11 +67,9 @@ export function RuleInternal() { { title: "Research Track", subtitle: "研究型", - color: { - title: "#7dd3fc", - bg: "rgba(6, 147, 227, 0.10)", - border: "rgba(6, 147, 227, 0.35)", - }, + accent: "#7dd3fc", + bg: "rgba(125, 211, 252, 0.08)", + border: "rgba(125, 211, 252, 0.24)", positioning: "適合希望深化研究能力、對升學或研究型工作有興趣的學生。", goals: [ "建立文獻閱讀與問題定義能力", @@ -94,11 +92,9 @@ export function RuleInternal() { { title: "CTF Track", subtitle: "比賽型", - color: { - title: "#fcd34d", - bg: "rgba(252, 185, 0, 0.10)", - border: "rgba(252, 185, 0, 0.35)", - }, + accent: "#fcd34d", + bg: "rgba(252, 211, 77, 0.08)", + border: "rgba(252, 211, 77, 0.24)", positioning: "適合希望提升實戰技術、攻防能力,並以資安實務職涯為目標的學生。", goals: [ "建立可驗證之實戰能力", @@ -126,11 +122,9 @@ export function RuleInternal() { { title: "Project Track", subtitle: "專案型", - color: { - title: "#fda4af", - bg: "rgba(255, 77, 79, 0.10)", - border: "rgba(255, 77, 79, 0.35)", - }, + accent: "#fda4af", + bg: "rgba(253, 164, 175, 0.08)", + border: "rgba(253, 164, 175, 0.24)", positioning: "適合希望累積工程落地、系統設計與工具開發能力,並以業界實作為目標的學生。", goals: [ "建立需求分析、系統設計、實作與驗證能力", @@ -236,7 +230,7 @@ export function RuleInternal() { ["B", "達到基本要求"], ["C", "需改善"], ["D", "嚴重落後或不適任"], - ]; + ] as const; const serviceRoles = [ { @@ -304,624 +298,783 @@ export function RuleInternal() { ]; const pageStyle = { - background: - "radial-gradient(circle at top, rgba(122,27,27,0.28) 0%, rgba(10,10,10,1) 36%, rgba(6,6,6,1) 100%)", minHeight: "100vh", - color: "#f3f4f6", + color: "#f5f7fb", + background: + "radial-gradient(circle at top, rgba(133, 31, 31, 0.22) 0%, rgba(17, 18, 24, 1) 32%, rgba(10, 11, 15, 1) 100%)", } as const; - const heroStyle = { - background: - "linear-gradient(135deg, rgba(122,27,27,0.96) 0%, rgba(64,13,13,0.96) 55%, rgba(20,20,20,0.96) 100%)", - border: "1px solid rgba(255,255,255,0.10)", - boxShadow: "0 24px 60px rgba(0,0,0,0.35)", + const shellStyle = { + maxWidth: "1240px", } as const; - const panelStyle = { - background: "rgba(17,17,17,0.82)", + const glassStyle = { + background: "rgba(20, 24, 31, 0.76)", border: "1px solid rgba(255,255,255,0.08)", - boxShadow: "0 10px 30px rgba(0,0,0,0.18)", - backdropFilter: "blur(4px)", + boxShadow: "0 18px 50px rgba(0,0,0,0.24)", + backdropFilter: "blur(10px)", + } as const; + + const softCardStyle = { + background: "rgba(255,255,255,0.03)", + border: "1px solid rgba(255,255,255,0.07)", + boxShadow: "0 8px 24px rgba(0,0,0,0.12)", + } as const; + + const heroStyle = { + background: + "linear-gradient(135deg, rgba(112, 23, 23, 0.98) 0%, rgba(58, 17, 20, 0.96) 42%, rgba(19, 22, 28, 0.96) 100%)", + border: "1px solid rgba(255,255,255,0.09)", + boxShadow: "0 24px 64px rgba(0,0,0,0.32)", + overflow: "hidden", + position: "relative", } as const; const sectionTitleStyle = { - color: "#ff7b7b", - letterSpacing: "0.02em", + color: "#fff4f4", + fontWeight: 800, + letterSpacing: "0.01em", + marginBottom: "0.65rem", } as const; - const listTextStyle = { - color: "#e5e7eb", - lineHeight: 1.85, - fontSize: "1rem", + const sectionDescStyle = { + color: "#b9c0cf", + lineHeight: 1.8, + fontSize: "0.98rem", + marginBottom: 0, } as const; - const mutedTextStyle = { - color: "#cbd5e1", + const bodyTextStyle = { + color: "#dde3ee", lineHeight: 1.8, fontSize: "0.98rem", } as const; + const mutedTextStyle = { + color: "#aeb7c8", + lineHeight: 1.75, + fontSize: "0.95rem", + } as const; + const chipStyle = { - display: "inline-block", - padding: "0.35rem 0.75rem", + display: "inline-flex", + alignItems: "center", + gap: "0.45rem", + padding: "0.4rem 0.85rem", borderRadius: "999px", - fontSize: "0.85rem", + fontSize: "0.82rem", fontWeight: 700, - backgroundColor: "rgba(255,255,255,0.08)", color: "#fff", - border: "1px solid rgba(255,255,255,0.08)", + background: "rgba(255,255,255,0.08)", + border: "1px solid rgba(255,255,255,0.10)", + } as const; + + const numberCardStyle = { + ...softCardStyle, + borderRadius: "22px", + padding: "1rem 1.1rem", + height: "100%", + } as const; + + const sectionWrapStyle = { + ...glassStyle, + borderRadius: "28px", + padding: "1.6rem", + } as const; + + const listResetStyle = { + marginBottom: 0, + paddingLeft: "1.15rem", } as const; + const renderList = (items: string[], className = "") => ( + + ); + return (
-
- {/* Hero */} -
-
-
-
- - is1ab Lab Handbook v2 - -
-

- 資訊安全實驗室運作手冊 -

-
- 研究能力、實戰能力、團隊合作能力並重的訓練環境 -
-

- 本實驗室的目標不是只培養會讀論文的人,也不是只培養會打比賽的人,而是培養能在兩年內完成碩士學位、 - 具備清楚專業成果,並能在畢業後進入資安相關職涯的成員。 -

-
- -
- {[ - ["Priority 01", "準時且有品質地完成碩士學位"], - ["Priority 02", "建立可驗證的資安專業能力"], - ["Priority 03", "維持基本團隊運作與知識傳承"], - ].map(([title, desc], index) => ( -
-
-
{title}
-
{desc}
-
+
+
+
+
+
+
+
+ is1ab Internal + Lab Handbook + Version 2
- ))} -
-
-
- - {/* Principles + Basic */} -
-
-
-

- 核心原則 -

-
    - {principles.map((item, index) => ( -
  • - {item} -
  • - ))} -
-
-
-
-
-

- 所有人都需遵守的基本要求 -

-
    - {baseRequirements.map((item, index) => ( -
  • - {item} -
  • - ))} -
-
-
-
- - {/* 3-layer framework */} -
-
-
-

- 整體訓練架構 -

-
- 本實驗室採三層制度:共通核心訓練、主軌制度、公共任務制度。 +

+ 資訊安全實驗室 +
+ 運作手冊 +

+ +

+ 本實驗室的目標不是只培養會讀論文的人,也不是只培養會打比賽的人,而是培養能在兩年內完成碩士學位、 + 具備清楚專業成果,並能在畢業後進入資安相關職涯的成員。 +

+ +
+ {[ + ["Priority 01", "先完成碩士學位"], + ["Priority 02", "建立可驗證能力"], + ["Priority 03", "維持團隊與傳承"], + ].map(([title, desc]) => ( +
+
+
+ {title} +
+
+ {desc} +
+
+
+ ))} +
-
-
-
- {frameworkCards.map((card, index) => ( -
+
-
- {card.title} -
-
- {card.subtitle} +
+ 這份手冊在處理什麼
-
    - {card.items.map((item, i) => ( -
  • - {item} -
  • +
    + {[ + ["核心原則", "先定義價值排序與管理方式"], + ["訓練架構", "共通核心、主軌、公共任務三層並行"], + ["評估邏輯", "以紀律、產出、可信任度作為配置依據"], + ["畢業導向", "所有路線最終都必須回到論文與學位完成"], + ].map(([title, desc]) => ( +
    +
    {title}
    +
    + {desc} +
    +
    ))} -
+
- ))} +
-
+
- {/* Common core */} -
-

- 共通核心訓練 -

+
-
-
-
設計目的
-
- 不論最後走研究、比賽還是專案,所有學生都必須先建立基本的研究閱讀、表達、紀錄、回報與合作能力。 - 這一層是為了避免學生在碩二才第一次面對 proposal、論文寫作與正式報告時完全失速。 +
+
+
+
核心原則
+

+ 這一段是整份手冊的底層邏輯。它不是活動規範而已,而是整個實驗室在資源配置、角色期待與訓練排序上的基本立場。 +

-
-
-
-
-
所有學生必修能力
-
- {commonCore.map((item, index) => ( -
+ +
+ {principles.map((item, index) => ( +
-
{item}
+ {String(index + 1).padStart(2, "0")}
+
{item}
))}
-
-
- - {/* Tracks */} -
-

- 主軌制度 -

-
- 學生於碩一上結束前完成能力盤點,並於碩一下正式確認主軌。主軌代表主要投入方向, - 但不代表可以免除共通核心訓練,也不代表可免除碩士論文基本要求。 -
- -
- {tracks.map((track, index) => ( -
-
-
- {track.title} -
-
- {track.subtitle} -
+
+
+
-
定位
-
{track.positioning}
+
基本要求
+

所有學生都適用,屬於最低標準,不因主軌不同而免除。

- -
-
主要目標
-
    - {track.goals.map((item, i) => ( -
  • {item}
  • - ))} -
-
- -
-
基本要求
-
    - {track.requirements.map((item, i) => ( -
  • {item}
  • - ))} -
+
+ {baseRequirements.map((item, index) => ( +
+
+
+
+
{item}
+
+
+
+ ))}
+
+
-
預期成果
-
    - {track.outcomes.map((item, i) => ( -
  • {item}
  • - ))} -
+
共通核心能力
+

這些能力是所有後續研究、競賽與專案能否穩定推進的底盤。

- -
-
重要說明
-
    - {track.notes.map((item, i) => ( -
  • {item}
  • - ))} -
+
+ {commonCore.map((item, index) => ( +
+
+
+ Core {index + 1} +
+
{item}
+
+
+ ))}
- ))} +
-
+
- {/* Timeline */} -
-

- 碩士兩年標準流程 -

-
- {timeline.map((phase, index) => ( -
-
-
- - {phase.badge} - -
-
- {phase.phase} +
+
+
+
整體訓練架構
+

本實驗室不是單一路線培養,而是三層制度一起運作,彼此補位而不是互相取代。

+
+ +
+ {frameworkCards.map((card) => ( +
+
+
+ {card.title} +
+
+ {card.subtitle} +
+ {renderList(card.items)}
-
    - {phase.items.map((item, i) => ( -
  • - {item} -
  • - ))} -
-
- ))} + ))} +
-
- - {/* KPI */} -
-
-
-

- KPI 與考核制度 -

-
- 本實驗室採用「月檢視、學期總評」制度。KPI 的目的不是製造壓力,而是讓學生知道自己是否在正確軌道上, - 並讓教授能及早介入輔導。 -
+ -
- {kpiStructure.map((block, index) => ( -
-
-
{block.title}
-
    - {block.items.map((item, i) => ( -
  • {item}
  • - ))} -
-
+
+
+
+
共通核心訓練
+

+ 不論最後走研究、比賽還是專案,所有學生都必須先建立基本的研究閱讀、表達、紀錄、回報與合作能力。 + 這一層是為了避免學生在碩二才第一次面對 proposal、論文寫作與正式報告時完全失速。 +

+
+ +
+
+
+
+ 設計目的
- ))} +

+ 先建立共同工作語言與基本訓練能力,降低學生在研究、專案或競賽路線上出現結構性失衡的風險。 +

+
-
-
考核週期
-
    -
  • 每月:學生提交摘要,教授進行簡要檢視
  • -
  • 每學期期中:進行一次正式檢查
  • -
  • 每學期末:進行一次總評,作為下學期資源與安排依據
  • -
+
+
+
+ 具體能力項目 +
+
+ {commonCore.map((item, index) => ( +
+
+
能力 {index + 1}
+
+ {item} +
+
+
+ ))} +
+
+
-
-
-

- 考核分級 -

-
- {kpiGrades.map(([grade, desc], index) => ( +
+
+
+
主軌制度
+

+ 學生於碩一上結束前完成能力盤點,並於碩一下正式確認主軌。主軌代表主要投入方向, + 但不代表可以免除共通核心訓練,也不代表可免除碩士論文基本要求。 +

+
+ +
+ {tracks.map((track) => ( +
-
-
+
+
+ {track.title} +
+
+ {track.subtitle} +
+
+ - {grade} + Track + +
+ +
+
+
定位
+
{track.positioning}
+
+ +
+
主要目標
+ {renderList(track.goals)} +
+ +
+
基本要求
+ {renderList(track.requirements)} +
+ +
+
預期成果
+ {renderList(track.outcomes)} +
+ +
+
重要說明
+ {renderList(track.notes)}
-
{desc}
- ))} -
- -
-
未達基本要求的情況
-
    -
  • 長期無故缺席 meeting
  • -
  • 長期未提交進度或無法說明進度
  • -
  • 已承諾事項多次未交付
  • -
  • 主軌成果長期無累積
  • -
  • 公共任務明顯怠惰
  • -
  • 論文時程嚴重落後且無改善行動
  • -
-
+
+ ))}
-
- - {/* Service roles + resources */} -
-
-
-

- 公共任務制度 -

-
- 公共任務的目的是維持實驗室正常運作,不是將行政壓力無限制轉嫁給學生。 - 因此採「每學期每人原則上一項任務、任務範圍明確、任務可交付、與資源配置連動」的方式運作。 -
+ -
- {serviceRoles.map((role, index) => ( -
-
-
{role.title}
-
    - {role.examples.map((item, i) => ( -
  • {item}
  • - ))} -
+
+
+
+
碩士兩年標準流程
+

下面這條時間線的目的是讓學生知道自己在不同階段應該達成哪些最低里程碑。

+
+ +
+
+
+ {timeline.map((phase) => ( +
+
+
+
+ ● +
+
+
+ + {phase.badge} + +
+
+ {phase.phase} +
+
+
+
+ +
+
+ {renderList(phase.items)} +
))}
- -
-
任務完成標準
-
    -
  • 是否按時完成
  • -
  • 是否有交接文件
  • -
  • 是否能獨立或穩定執行
  • -
  • 是否造成額外管理成本
  • -
-
+
+ +
+
+
+
+
+
KPI 與考核制度
+

+ 本實驗室採用「月檢視、學期總評」制度。KPI 的目的不是製造壓力,而是讓學生知道自己是否在正確軌道上, + 並讓教授能及早介入輔導。 +

+
-
-
-

- 資源配置與推薦信原則 -

- -
-
可提供資源
-
    - {resourceRules.map((item, index) => ( -
  • {item}
  • +
    + {kpiStructure.map((block) => ( +
    +
    + {block.title} +
    + {renderList(block.items)} +
    ))} -
+
+ +
+
考核週期
+
    +
  • 每月:學生提交摘要,教授進行簡要檢視
  • +
  • 每學期期中:進行一次正式檢查
  • +
  • 每學期末:進行一次總評,作為下學期資源與安排依據
  • +
+
+
+ +
+
+
+
+
考核分級
+

分級不是標籤,而是讓資源配置、改善要求與指導強度能更透明。

+
+ +
+ {kpiGrades.map(([grade, desc]) => { + const gradeStyle = + grade === "A" + ? { bg: "rgba(34,197,94,0.14)", color: "#86efac" } + : grade === "B" + ? { bg: "rgba(59,130,246,0.14)", color: "#93c5fd" } + : grade === "C" + ? { bg: "rgba(245,158,11,0.14)", color: "#fcd34d" } + : { bg: "rgba(239,68,68,0.14)", color: "#fca5a5" }; + + return ( +
+
+
+ {grade} +
+
{desc}
+
+
+ ); + })} +
+
-
-
配置依據
-
    -
  • 是否達到基本要求
  • -
  • 主軌投入程度與產出
  • -
  • 公共任務完成情況
  • -
  • 是否具備可信任度與交付能力
  • -
  • 是否能代表實驗室對外展現成果
  • -
+
+
+
未達基本要求的情況
+
+
    +
  • 長期無故缺席 meeting
  • +
  • 長期未提交進度或無法說明進度
  • +
  • 已承諾事項多次未交付
  • +
  • 主軌成果長期無累積
  • +
  • 公共任務明顯怠惰
  • +
  • 論文時程嚴重落後且無改善行動
  • +
+
+
+
+
+ +
+
+
+
+
+
公共任務制度
+

+ 公共任務的目的是維持實驗室正常運作,不是將行政壓力無限制轉嫁給學生。任務應有限度、可交付、可驗證, + 並與可信任度、資源支持與團隊貢獻一起評估。 +

+
-
-
推薦信優先條件
-
    - {recommendationRules.map((item, index) => ( -
  • {item}
  • +
    + {serviceRoles.map((role) => ( +
    +
    +
    {role.title}
    +
    + {role.examples.map((example) => ( + + {example} + + ))} +
    +
    +
    ))} -
+
-
-
- - {/* Work-study + unsuitable */} -
-
-
-

- 兼職、實習與校外工作原則 -

-
    - {workStudyRules.map((rule, index) => ( -
  • - {rule.main} -
      - {rule.sub.map((item, i) => ( -
    • - {item} -
    • - ))} -
    -
  • - ))} -
+ +
+
+
+
+
資源配置可能連動項目
+
+
+ {resourceRules.map((item) => ( +
+
+
{item}
+
+
+ ))} +
+
+ +
+
+
推薦與對外支持原則
+
+ {renderList(recommendationRules)} +
+
+ + +
+
+
+
+
+
工讀、實習與校外工作原則
+

原則並不是一概禁止,而是要求優先順序、相關性與事前溝通。

+
-
-
-

- 不適合加入本實驗室的學生 -

-
    - {unsuitableItems.map((item, index) => ( -
  • - {item} -
  • + {workStudyRules.map((rule, index) => ( +
    +
    {rule.main}
    + {renderList(rule.sub)} +
    ))} -
+
-
-
- - {/* Improvement + commitments */} -
-
-
-

- 輔導、改善與調整機制 -

-
    - {improvementRules.map((item, index) => ( -
  • - {item} -
  • - ))} -
-
- 本機制的目的在於及早修正,而非事後處罰。 + +
+
+
+
+
不適合加入本實驗室的情況
+
+ {renderList(unsuitableItems)} +
+ +
+
+
改善機制
+
+ {renderList(improvementRules)} +
+
-
-
-

- 教授的承諾 -

-
    - {professorCommitments.map((item, index) => ( -
  • - {item} -
  • - ))} -
+
+
+
+
+
+
+ FACULTY COMMITMENT +
+
+ 教授的承諾 +
+

+ 管理不是單向要求。既然學生被要求承擔責任,教授也必須對制度清晰度、公平性與回饋品質負責。 +

+
+
-
-
結語
-
- 本實驗室期待的不是完美的學生,而是願意投入、願意成長、願意承擔責任的學生。 - 只要願意學、願意做、願意持續修正,教授會盡力提供資源、方向與支持; - 但若長期只希望索取資源、不願承擔基本責任,則不適合留在本實驗室。 +
+
+ {professorCommitments.map((item, index) => ( +
+
+
+ Commitment {index + 1} +
+
{item}
+
+
+ ))}
-
+
);