跳至主要內容

NAPAICP 平台管理操作手冊

管理平台帳號、跨競賽治理、權限與安全操作的完整手冊。內容依現行系統實際畫面與操作行為撰寫。

本頁目錄

0. 總覽與適用對象

本手冊說明如何操作 NAPAICP(一個管理團隊、作品繳交、評審與結果的多競賽平台)的兩層管理介面:平台管理主控台(/platform,僅 super_admin 可進入)與單一競賽管理介面(/admin/competitions/:id,competition_admin 與部分 staff 可進入)。內容依現行系統實際畫面與操作行為撰寫。

適用對象

平台超級管理員(Super Admin)、競賽主辦方管理員(Competition Admin)、協助競賽營運的 Staff。

重要原則

畫面上顯示或隱藏某個按鈕只是 UX 提示,不是安全邊界,所有授權判斷最終都在伺服器端重新驗證。管理員操作的每一個高敏感動作都會寫入稽核紀錄且無法刪除。

1. 角色與權限模型

NAPAICP 有兩層角色,彼此分離,不可互相取代:

層級角色說明
平台級(Global)super_admin跨所有競賽的治理權限,儲存在 users.global_role。授予/撤銷只能透過「平台管理員」頁面,且系統任何時候都必須至少保留一位啟用中的 super_admin(最後管理員保護)。
競賽級(Competition-scoped)competition_admin單一競賽的主辦管理員,可管理該競賽的排程、表單、隊伍、評審、評分規準、結果與稽核。
staff協助營運的工作人員,權限依頁面設定(部分頁面對 staff 開放唯讀或部分操作);具備評分查看權限 score.read(可讀審查意見與匯出評分報表),但不具 score.manage(重新開放分數)與結果管理。
teacher指導老師,隨隊伍設定。
student參賽學生。
judge評審,透過評審邀請流程加入該競賽。
observer唯讀觀察者。

同一個使用者帳號可以在「甲競賽」是評審、在「乙競賽」是學生,競賽角色永遠以使用者 × 競賽為單位存在(權威資料表 competition_roles),不會從全平台角色摘要反推。

最低平台權限清單

platform.dashboard.read、platform.users.read/manage、platform.memberships.read/manage、platform.judges.read/manage、platform.admins.read/manage、platform.audit.read、platform.operations.read、platform.competitions.approve。super_admin 預設持有全部。

2. 帳號、登入與 Bootstrap

2.1. 一般登入

管理員以一般帳號密碼或 OIDC 登入。Session 預設閒置 12 小時、絕對效期 7 天過期;密碼採版本化 PBKDF2-HMAC-SHA256 雜湊,D1 只保存雜湊值,永不保存明文。

2.2. 首位 Super Admin Bootstrap(僅限全新部署)

全新部署時系統沒有任何 super_admin,不會因為誰第一個註冊就自動取得權限(避免搶占接管)。正確流程:

  1. 部署負責人透過 Deployment Secret 設定一次性 Bootstrap Credential(不寫入 Git、前端 bundle 或任何 log)。
  2. 平台負責人以正常流程註冊帳號並完成 Email 驗證。
  3. 登入後直接前往 /bootstrap(此頁面刻意不出現在任何導覽選單或帳號選單中,只能直接輸入網址進入),輸入 Bootstrap Credential 送出。
  4. 伺服器驗證 session、Email 已驗證、帳號啟用中、目前啟用中 Super Admin 數量為 0、credential 有效且尚未使用,才會以並發安全(concurrency-safe)交易授予第一位 super_admin,並寫入 INITIAL_SUPER_ADMIN_BOOTSTRAP 稽核紀錄。
  5. Credential 立即失效/消耗;之後任何 Bootstrap 請求一律失敗(fail closed),即使已有 Super Admin 也不能重新 Bootstrap。

之後所有新的 super_admin 一律只能透過「平台管理員」頁面(3.5)由現任管理員授予。

禁止事項

不得以「第一個註冊者自動成為管理員」替代此流程;不得把 Bootstrap Secret 寫入程式碼或分享於 Slack/Email;不得在已有啟用中 Super Admin 時重新 Bootstrap;不得用直接手改 production 資料庫的方式產生管理員。

2.3. 忘記密碼

一般使用者(含管理員)可透過忘記密碼 → 重設密碼自助重設密碼。重設成功後既有 session 會被撤銷。

3. 平台管理主控台

路徑 /platform,僅 super_admin 可見。此區塊不是第二套使用者/競賽/評審主資料,它是對權威資料(users、competitions、competition_roles、評審關係、audit_logs)的跨競賽治理視圖與操作入口。左側導覽依四個群組分組:「平台總覽」(總覽)、「人員與權限」(使用者、評審治理、管理員、以及具使用者管理權限者可見的帳號刪除申請)、「競賽治理」(競賽、競賽申請、探索分類:後兩者僅具對應權限者可見)、「安全與稽核」(稽核紀錄)。手機寬度下導覽收合為選單按鈕開啟的抽屜。

3.1. 總覽(Dashboard)

畫面最上方是「需要你處理」卡片,彙整目前偵測到的治理待辦事項(待審核的競賽申請件數、若目前僅剩 1 位啟用中超級管理員的風險提示、評審配對衝突提示),沒有待辦事項時顯示明確的空狀態,而不是留白。其下是三張分組指標卡片:「平台規模」(啟用中使用者數、競賽總數:下方附註進行中/已結束或草稿的組成、評審關係數)、「治理狀態」(已停權使用者數、平台管理員數,若您具有審核競賽申請的權限則再加上待處理申請件數)與「營運健康度」(已註冊隊伍數、評分完成率),皆為平台整體的有界聚合值,每一項都可點擊直接前往對應的篩選/排序清單頁;再下方有一列快速入口(使用者/競賽申請/評審/稽核)。最下方是「近期重要治理活動」,預設會隱藏表單欄位層級等雜訊性編輯紀錄,只顯示重要治理操作,並提供「顯示全部活動」切換可查看完整清單;每筆以「某人+做了什麼(某競賽)」的可讀語句+分類徽章呈現,並統一以 Asia/Taipei 標準時間格式顯示時間戳。若部分指標本次無法計算,畫面會標示「部分降級」而不是整頁失敗,其餘資料仍準確可信。

3.2. 使用者

平台上所有帳號的清單,含帳號狀態、全域角色與各競賽角色摘要。可依姓名/Email 搜尋、依帳號狀態與競賽角色篩選,並可只顯示具有效評審角色者。點入任一使用者進入使用者詳細資料頁,內含分頁:

分頁內容 / 可執行操作
基本資料ID、顯示名稱、Email、帳號狀態、全域角色、登入方式、建立與最後活動時間。
競賽與角色列出此使用者在各競賽持有的角色。可授予角色(搜尋競賽 → 選角色 → 授予)或撤銷角色(需填寫原因)。撤銷角色不會刪除既有隊伍/評審關係的歷史紀錄。
隊伍此使用者在各競賽中所屬的隊伍關係。
評審此使用者的評審關係摘要:已提交分數 / 指派數、鎖定筆數、衝突筆數。
帳號與安全高敏感動作區,見下方說明。
稽核歷史與此使用者相關的稽核紀錄(唯讀)。

「帳號與安全」分頁的操作與影響:

  • 停權使用者(Suspend):立即撤銷該帳號所有進行中 session,帳號在恢復前無法登入。不會刪除任何投稿、評分、結果或稽核歷史(帳號停權 ≠ 個資刪除)。
  • 恢復使用者(Reactivate):帳號可再次登入。此動作的原因欄位為選填,不同於其他高敏感動作。
  • 撤銷所有工作階段(Revoke sessions):立即撤銷此使用者目前所有 session,但不停權帳號本身,使用者仍可重新登入。
  • 授予平台管理員(Grant super admin):立即授予平台全站所有平台管理權限,於下一次請求生效。
  • 撤銷平台管理員(Revoke super admin):立即撤銷所有平台管理權限。若此帳號是平台最後一位啟用中的 Super Admin,伺服器會拒絕此操作(最後管理員保護)。

每一項高敏感動作都是一個確認對話框:顯示對象、範圍、預期影響;除了「恢復使用者」原因為選填外,其餘動作皆要求填寫原因(必填)後才能送出。失敗時不會變更任何資料。

3.3. 競賽

先選擇一場競賽(可依名稱/代稱搜尋,並可依狀態、年度篩選;上方會顯示總數與進行中/草稿/已結束的摘要),再查看該競賽內所有持有角色的人員,並可依角色篩選。此頁是唯讀視圖,實際授予/撤銷角色請在使用者詳細資料頁(3.2)或該競賽自己的「成員與角色」頁(4.6)操作。

3.4. 評審治理

每一列代表一組「使用者 × 競賽」評審關係,同一人評審兩場競賽會出現兩列。可依姓名/Email 或以名稱搜尋單一競賽篩選。欄位包含檔案狀態(是否已設定評審檔案)、指派數、已提交分數、已鎖定分數、衝突數與完成度。

3.5. 平台管理員

列出目前持有平台級 super_admin 權限的所有帳號,含授予時間、授予者與近期稽核。可依姓名/Email 搜尋,每列右側選單提供「查看使用者」「查看稽核」「撤銷」。此頁可直接撤銷(Revoke)super_admin;若某帳號是「最後一位啟用中管理員」,撤銷操作會被標示為不可執行。注意:此頁不提供授予功能,授予新的 super_admin 僅能在使用者詳細資料頁(3.2)的「帳號與安全」分頁完成。

3.6. 稽核紀錄

跨所有競賽的平台治理操作紀錄,唯讀,沒有編輯或刪除功能。可依操作者、動作類型、競賽篩選;操作者(actor)欄位會顯示其角色徽章(例如「系統管理員」),被操作對象(entity)欄位顯示人類可讀名稱(而非只有內部 ID),對可解析成頁面的資源類型(例如使用者、競賽)會直接可點擊回到該筆資源。頁面另提供一個自由文字搜尋框,即時比對目前已載入這一頁的資料(伺服器端分頁,每頁 25 筆),不會回頭搜尋尚未載入的更早紀錄。每筆紀錄包含 actor(操作者,可能是系統本身)、action(動作)、competition(如適用)、entityType/entityId(被操作的對象類型與 ID)、reason(原因)與 timestamp;目前不含變更前後內容差異(before/after)或 correlation ID 欄位。

3.7. 競賽申請審核

僅具 platform.competitions.approve 權限者可見。以狀態頁籤呈現申請佇列(全部/已送出/審核中/已要求補件/已核准/已拒絕,各頁籤附即時件數)。開始處理一筆「已送出」的申請前須先點「開始審核」,狀態轉為「審核中」後才能進行後續動作;可執行的動作為「要求補件」「拒絕」「核准並建立競賽」,皆需填寫原因。核准會由伺服器一次性自動建立正式競賽並將申請人設為第一位 competition_admin,此流程具冪等性;若該申請已被處理過,畫面會顯示「已建立過競賽」的提示而不是重複建立。

3.8. 探索分類

僅具對應權限者可見。用於管理公開探索頁使用的分類標籤:以名稱建立新分類(網址代稱自動由名稱產生),清單以扁平表格呈現,每列可切換「啟用/停用」。分類只能停用不能刪除,確保曾使用該分類的競賽仍能正常顯示。

3.9. 帳號刪除申請

僅具使用者管理權限者可見。使用者在自己的「帳號與安全」頁(§5)「資料匯出與帳號刪除」區塊送出的每一筆自助刪除申請,都會出現在此頁供審核,可依狀態篩選(待審核/已核准並執行/已拒絕/已取消)。每列顯示申請人、狀態、申請時間與其填寫的(選填)原因。

核准即是破壞性操作本身,不是兩階段流程

此流程沒有「已核准但尚未執行」的中間狀態:點擊「核准並執行」會立即將該帳號的識別資訊(姓名、Email 等)匿名化,並永久刪除其登入憑證(session、驗證身分、任何待驗證的 Email 變更)。歷史競賽紀錄(作品繳交、評分、結果等)會保留但匿名化,以維持競賽結果的完整性;這與「停權」(§3.2)不是同一種操作,且無法復原。「拒絕」則不影響該帳號,使用者之後仍可再次送出申請。兩個動作都需要填寫原因,並會經過標準確認對話框。

4. 競賽管理

路徑 /admin/competitions,任何持有至少一個競賽角色的使用者都能看到自己有權限的競賽;平台管理員可看到所有競賽。進入單一競賽後(/admin/competitions/:id),左側依六個固定順序分組:設定(總覽/類別/賽程輪次/表單)、營運(營運儀表板/隊伍管理/資格驗證審核/作品繳交/公告)、資料(參賽者/檔案/報名資料/資格驗證資料/匯出中心)、審查(評審/審查進度/評分規準/結果)、權限(成員與角色)、治理(稽核紀錄)。每個群組標題可個別點擊摺疊/展開,目前所在頁面所屬的群組會恆為展開狀態且無法被摺疊;摺疊偏好保存在瀏覽器本機(不同裝置/瀏覽器不會同步),儲存失敗時會優雅降級為全部展開。

4.1. 建立競賽

在競賽清單頁點「新增競賽」,只需填寫名稱、網址代稱(小寫連字號、平台唯一)、年度、顯示時區與簡短介紹即可建立。競賽會以草稿狀態建立,在排程設定完成前參與者皆無法看見;其餘設定(排程、資格條件、類別、表單、評分規準…)都在建立後於「總覽」等分頁完成。

正式主辦申請流程(治理模式)

若平台採「Competition Creation Request」治理模式,一般使用者只能申請主辦競賽,不會自動建立正式競賽或取得 competition_admin;需由具 platform.competitions.approve 權限者審核、核准後由伺服器一次性自動建立競賽並把申請人設為第一位 competition_admin(核准與建置流程具冪等性,重試不會建立第二筆競賽)。

設定

4.2. 總覽:基本資訊 / 排程 / 資格條件 / 狀態 / 準備清單

  • 基本資訊:名稱、網址代稱、簡短介紹。
  • 排程:排程依輪次分組呈現與編輯(「管理輪次排程」),包含報名開始/截止、作品繳交開始/截止、評審開始/結束、結果發布;單輪與多輪競賽的編輯流程不同,多輪競賽並會檢查跨輪次排程順序(例如下一輪的報名/繳件開始時間早於上一輪的結果公布時間會顯示警告)。時間以瀏覽器當地時區輸入,以 UTC 儲存;調整截止時間會記錄稽核。
  • 資格條件:隊伍最小/最大人數、是否可含指導老師、是否須有指導老師、是否可多次繳交作品、是否啟用匿名評審。
  • 狀態:競賽狀態預設由排程自動推算;管理員可「固定狀態」覆蓋自動結果(需填寫原因),直到取消固定為止,底層排程仍持續計算。
  • 準備狀態清單:基本資訊、排程、資格條件、類別、動態表單、評分規準、評審設定、公開頁面、發布,逐項顯示「已就緒 / 尚未開始 / 平台尚未提供」,作為上線前檢查表。
  • 設定:公開聯絡信箱、公開競賽頁面是否上線。
  • 學生資格驗證政策:與上方「資格條件」(隊伍人數/指導老師規則)是分開的獨立功能:可開關本場競賽是否要求學生成員上傳在學證明並經審核;設定驗證範圍(全部學生成員/全部參賽成員/僅隊長/團隊最少驗證人數)、可接受的證明類型、是否需人工審核、待審核期間是否可先完成報名(預設允許)、證明有效天數。啟用後,資格檢查會在報名送出時與之後每次查詢報名狀態時皆即時依成員目前驗證狀態與團隊組成重新計算。系統會在競賽結束滿 365 天後自動刪除已上傳的原始證明檔案,僅保留審核結果與稽核紀錄,屬系統自動排程行為,無另外的手動觸發畫面。

4.3. 類別

競賽下的分組(例如高中組、大專組),名稱僅需在同一競賽內不重複,可設定名額上限;設定後系統會在報名時實際擋下超額報名,留空則不限制。類別只能封存而不能刪除,確保曾參照它的隊伍仍能正常顯示歷史資料。

4.4. 賽程輪次

競賽預設為單輪賽制;新增決賽輪次即可啟用「初賽書面審查 → 入圍 → 決賽」的雙階段賽制(一場競賽最多兩輪:preliminary 初賽、final 決賽,這是憲章層級的固定上限)。每輪可獨立設定名稱、狀態(草稿/開放中/評審中/已結束)、提交表單與預設評分表。

4.5. 表單

為每一輪建立動態欄位表單。重要:發布後再編輯表單會複製出新的草稿版本,不會變更目前上線中的內容,已綁定舊版本的繳交資料能永遠依當時的確切 schema 正確顯示。表單編輯器支援欄位排序、必填、驗證規則(最短/最長長度、格式、最小/最大值、允許副檔名)、條件顯示(依其他欄位的值顯示/隱藏),以及選填的「所屬區塊」名稱:填入相同區塊名稱的欄位會在參賽者的作品工作區顯示為同一個區塊標題底下的一組欄位,留空則維持獨立顯示,此設定僅影響參賽者填寫端的視覺分組。

營運

4.6. 營運儀表板

進入單一競賽後台最適合先看的頁面:此刻整場競賽的營運狀況(報名、參賽者、資格驗證、作品繳交、評審進度)。「待處理事項」卡片固定顯示在最上方、所有 KPI 群組之前,依目前競賽階段(報名期/繳件期/評審期/結果公布)調整項目排序,讓最急迫的類別優先出現;每項會標示嚴重程度(嚴重/警告/提醒),沒有待辦時顯示明確的空狀態。下方每組 KPI(報名、參賽者、資格驗證、作品繳交、評審)皆附有分母呈現(例如「7 / 8」),分母為零時明確顯示「N/A」而非誤算百分比。每個 KPI 群組標題旁有「隱藏」按鈕,可個別收起不需要的群組;隱藏後頁面上方會出現「已隱藏:...」摘要列,可個別點擊「顯示」還原。「待處理事項」卡片本身沒有隱藏選項,恆常可見。隱藏偏好依競賽分別保存在瀏覽器本機,不會回傳伺服器。

4.7. 隊伍管理(Team Operations Matrix)

單一表格彙整此競賽所有隊伍的完整營運狀態,共 11 欄:隊伍名稱(含代碼)、類別、隊長、成員數(點擊可在列內展開查看隊長/隊員徽章、姓名、Email,不會離開清單頁)、報名完成度、資格證明提交數、資格驗證通過數、作品繳交狀態、評審完成進度、注意事項(伺服器端計算的異常旗標,例如「尚未繳交作品」「資格證明已過期」「尚未指派評審」)、更新時間。可依報名狀態(全部/已完成/尚未完成/已取消退賽)篩選,篩選條件反映在網址上,從營運儀表板點擊帶入篩選的連結會正確套用初始篩選。工具列另提供「傳送報名提醒」(見下)與「另存目前篩選為檢視」(Saved Views,見下)。移除隊員、轉移隊長(需填寫原因)或建立一次性邀請連結(連結可撤銷)等操作仍在此頁進行,所有操作皆寫入稽核紀錄。

注意

傳送報名提醒:一鍵寄送提醒信給所有尚未完成報名的隊伍隊長(已完成報名或已取消退賽的隊伍不會收到)。點擊後會先顯示確認對話框說明影響範圍,確認送出後畫面顯示伺服器實際回報的收件人數,而非事先臆測的筆數。沒有伺服器端冷卻或頻率限制,短時間內重複觸發會讓同一隊長收到多封提醒信,請自行斟酌使用頻率。 確認對話框現在同時顯示「信件預覽」(即將寄出的主旨與內文,以第一支會收到的隊伍為範例,純文字)。此提醒只針對「尚未完成報名(沒有報名資料)」的隊伍隊長;已完成報名但答案需要補填的學生,請使用「報名資料」頁的「需補填的報名資料」。

注意

另存目前篩選為檢視:把目前的篩選組合(搜尋字串、報名狀態等)存成一個具名的「檢視」,之後可從下拉選單快速套用或刪除;純屬瀏覽器本機偏好,不會同步到其他裝置或分享給其他管理員,也不影響任何人實際看到的資料範圍。「資格驗證審核」頁(4.8)提供同樣的 Saved Views 功能。

4.8. 資格驗證審核

營運分組下的資格驗證審核直接入口,與「成員與角色」(4.19)的資格驗證分頁使用完全相同的審核工作台元件與後端資料,只是把它放在營運層讓主辦方不必先繞經「權限」分組就能找到日常審核工作。僅具 eligibility.review 權限者(預設僅 competition_admin,不含 staff)可見與操作。

4.9. 作品繳交

列出此競賽所有團隊的投稿紀錄,可依狀態、類別、團隊 ID 篩選;點入單筆可看填答內容與已提交版本,每次提交都是不可變快照,版本建立後內容永不變更。

4.10. 公告管理與 Email 通知

「營運」分組的「公告」頁:新增、編輯、刪除競賽公告,顯示對象(網站)可選全部(含訪客)、參賽者或評審,內容為純文字並提供預覽。可勾選「同時寄 Email 通知」,收件人依角色(學生、教師、評審)選擇,並可依類別、輪次、報名欄位縮小學生與教師的範圍;畫面即時顯示預計寄送的人數,按下「發布並寄送 Email」後先出現含「信件預覽」的確認對話框,確認前不會建立公告也不會寄信。另有「寄測試信給我自己」。每次寄送上限 300 位,已寄過的公告再寄需明確確認,已寄出的信無法收回。每次寄送寫一筆摘要稽核(人數、名單與篩選條件,不含 Email 位址)。詳細操作請見「NAPAICP 主辦方操作手冊」的「公告管理與 Email 通知」。

資料

4.11. 參賽者

本競賽所有隊長與隊員的名冊,與工作人員/管理員/評審等角色(「成員與角色」)刻意分開呈現。摘要列顯示參賽者總數、隊伍數、隊長數、隊員數,以及資格驗證狀態分布(已通過/審核中/已退回/尚未提交)。可依隊伍、類別、資格驗證狀態、報名狀態篩選,並可依姓名或最近活動排序。純唯讀,實際審核操作在「資格驗證審核」(4.8)進行。

4.12. 檔案

列出此競賽所有作品繳交的上傳檔案,可依狀態或投稿 ID 篩選並產生短效下載連結;作品物件永遠是 private,瀏覽器只能透過範圍受限的簽章操作存取。

4.13. 報名資料

所有隊伍的報名表填答狀態唯讀檢視,可依隊伍 ID、完成狀態、隊伍名稱/隊長姓名或 Email 篩選;點擊「查看填答內容」可看該隊伍目前使用中表單版本的完整填答、表單版本號、首次送出與最後修改時間。報名完成度不受資格驗證狀態影響,兩者是刻意分開的獨立判準。 頁面最上方另有「需補填的報名資料」區塊:列出「已完成報名,但已儲存的答案不符合目前已發布表單」的學生(姓名、隊伍、尚需補填的欄位;不含 Email 與答案),沒有人需要補填時不顯示。具備隊伍管理權限的人可以「寄測試信給我自己」(只寄到自己的帳號信箱,主旨標示【測試】),或「傳送補填提醒」(先顯示人數與信件預覽,確認後才寄出);提醒信只寄給該學生本人,信末附上競賽設定的聯絡信箱。系統不會代學生填寫或勾選任何內容,此功能沒有冷卻或頻率限制。

4.14. 資格驗證資料

資格驗證的唯讀資料檢視,與「資格驗證審核」(4.8)使用完全相同的資料來源,可依狀態、隊伍 ID、姓名/Email/學校篩選,並可展開查看每位成員的歷史版本(含已依保存政策清除的舊檔案標示)。此頁不提供審核/退回操作,需前往「資格驗證審核」進行。

4.15. 匯出中心

本競賽的伺服端 CSV/XLSX 報表:隊伍、作品、參賽者、資格驗證、報名資料、評審、評分與審查意見(需 score.read,每位評審每件作品一列,不含評審私人備註),共七種報表類型,各自支援欄位選擇與篩選匯出。每張報表卡片在下載按鈕之前會即時顯示「將匯出 N 筆」(依目前欄位與篩選條件查詢)與「目前篩選:...」摘要(無篩選時明確顯示「無」),讓管理員在真正下載前就能確認匯出範圍是否符合預期,此筆數查詢刻意不寫入稽核紀錄(避免管理員調整篩選時的即時查詢被誤記為一次次的匯出事件)。頁面下方的「匯出紀錄」區塊列出所有真正觸發下載的匯出呼叫,唯讀,僅供檢視。

審查

4.16. 評審邀請與指派

先在「成員與角色」(4.19)把某帳號設定為 judge 角色,或直接在此頁以 Email 邀請。此頁分為三個分頁(評審名單/邀請管理/作品指派),頁面上方有一列摘要數字(評審人數、待接受邀請數、進行中指派數、尚未指派作品數):

  • 評審名單:可搜尋、依工作量排序的評審名冊,顯示每位評審目前的指派與評分進度。
  • 邀請管理:輸入 Email 送出邀請。若該 Email 尚未有帳號,系統自動建立帳號並以 Email 寄送一次性臨時密碼;評審登入後會被強制立即設定新密碼,管理員全程不會看到密碼。邀請紀錄顯示狀態(待接受/已接受/已取消/已過期),可重新發送(會使舊臨時密碼立即失效)或取消邀請。詳見第 5 節安全規範。
  • 作品指派:勾選作品(可複選)與評審(可複選)並指定評分標準版本,送出前會顯示「N 件作品 × M 位評審,將建立 N×M 筆指派」的確認提示;系統會建立每個「作品 × 評審」的組合,重複指派與利益衝突會自動略過並顯示原因。此頁也可編輯(僅限「進行中」狀態的指派)或取消既有指派。自動指派功能尚未實作。

4.17. 審查進度

每位評審的指派負載、完成進度與利益衝突重疊情形,及早發現需要處理的異常,非「評審」分頁的替代品而是它的營運視角。評審負載表顯示每位評審的已指派、已完成、待評與已申報衝突數,並標示操作提示(非對評審的評斷):「工作量過重」指進行中指派數超過競賽平均值的 1.5 倍,「近期無活動」指有進行中指派但無任何完成紀錄且最近 14 天內無評分更新,「指派不足」則反向提示可再分配。「利益衝突重疊警示」區塊列出評審已申報迴避、但仍持有相同作品或隊伍進行中指派的資料異常,每列提供「重新指派」(選擇一位新評審,系統會對新評審重新驗證利益衝突後才建立新指派,並移除舊指派)為主要動作,「僅取消指派」為次要動作(不指定新評審,需填寫原因)。

4.18. 評分規準

建立評分項目(名稱、說明、權重、最小/最大分數);所有項目權重總和須等於 100 才能儲存。已鎖定的分數不會因規準調整而原地變更,已鎖定 score 不得原地修改,管理員重新開放須附理由並建立 revision history。可為版本設定標籤方便辨識。

4.19. 結果與晉級

每個 Result Run 卡片完整呈現該次計算的營運中繼資料:Run ID、賽程輪次、組別、計算時間、計算者、已納入評分數、缺少有效評分數(附隊伍名稱清單)、並列訊號(如有),以及一旦鎖定/發布後才會出現的鎖定者/發布者。「計算結果」與「鎖定」是各自獨立的兩步驟操作:點擊後先顯示風險警示或影響說明文字(例如「此操作只會納入至少 2 位評審完成鎖定評分…」「鎖定後仍可調整獎項等第,直到公布為止;公布後即不可變更」),需再次點擊確認才會真正觸發,避免誤按。發布(Publish)是與鎖定分開的獨立按鈕,鎖定不等於發布,兩者各自寫入稽核紀錄且各自記錄操作者。必要時可覆寫(override)單一結果並附理由。若競賽有下一輪(決賽),可把某輪的最新結果轉為「晉級名單」勾選清單,可勾選特定隊伍或用「取前 N 名」快速選取,再送出建立晉級關係;晉級與獎項永遠由人員決定,系統不會自動判定(憲章範圍外規定)。計算結果的合併方式是把每位評審的評分規準加權總分取未加權平均;單一作品須至少有 2 位評審的有效鎖定分數才會被計入排名,未達門檻的作品會被排除並個別列出,需要補齊評審評分後重新計算。評審若在分數鎖定後才被登記利益衝突,計算時一律追溯排除該筆分數,不論鎖定與登記衝突的先後順序。此結果紀錄卡片刻意不含所使用的評分規準版本欄位,屬已知 SPEC-GAP。

權限

4.20. 成員與角色

角色僅適用於此競賽,同一帳號在不同競賽可有不同角色。以電子郵件授予角色(該帳號須至少登入過一次),可選角色為 competition_admin、staff、student、teacher、judge、observer。可撤銷既有角色。若該競賽已啟用「學生資格驗證政策」(見 4.2),此頁會多一個「資格驗證」分頁,可依狀態/隊伍/姓名/Email/學校篩選成員,並在審核 Drawer 安全預覽在學證明、通過或未通過(未通過須填理由);僅具 eligibility.review 權限者(預設僅 competition_admin,不含 staff)可見與操作,與營運分組的「資格驗證審核」(4.8)是同一份工作台。

注意

評審角色的邀請與帳號建立不要從這裡進行,請改用「評審邀請」(4.15),那裡具備臨時密碼安全流程;本頁的「授予角色」假設帳號已存在。

治理

4.21. 競賽稽核紀錄

此競賽範圍內的稽核紀錄,僅供新增,無法在此或任何其他地方編輯或刪除。每筆紀錄的主要文字以人類可讀的句子呈現操作內容(例如「某某人通過了資格驗證」「某某人提交了評分」),可依動作類型、時間區間篩選並可自由文字搜尋。原始事件代碼與被操作對象(entityType/entityId)等技術性細節不在主要/次要列常駐顯示,收在每筆紀錄的「檢視變更內容」漸進式揭露區塊內,點開才會看到。 寄信相關的動作也會列入,例如「以 Email 寄送了公告」「傳送了報名資料補填提醒」,以及「系統寄出了通知信」(記錄晉級、作品退回、資格驗證未通過與評審邀請的寄送成功與失敗數,不含 Email 位址)。

5. 評審邀請與臨時密碼安全規範

「預設密碼」在 NAPAICP 中被明確定義為每次邀請唯一、隨機、短效、不可回查的臨時初始密碼,不是固定或共用密碼。管理員在此流程中的角色與限制:

情境系統行為
受邀 Email 已有帳號不建立第二帳號、不重設既有密碼、不寄送臨時密碼;只寄送競賽評審邀請通知,該使用者以既有帳號登入並接受該競賽的評審角色。
受邀 Email 尚無帳號系統產生密碼學安全隨機的臨時初始密碼,資料庫只保存雜湊值;Email 一次性寄送登入信箱、臨時密碼與到期時間。首次登入後進入強制改密碼流程,改密碼完成前無法存取任何 Judge/Competition 保護資料,且所有相關 API(不只前端畫面)都會拒絕。
  • 管理員無法自行指定或查看臨時密碼或永久密碼,不論在建立、重新發送或任何管理畫面。
  • 重新發送邀請會立即讓舊的臨時密碼失效,並產生新的密碼與到期時間。
  • 臨時密碼不會出現在 log、audit、analytics 或任何可回查紀錄;建議有效期限 24–72 小時。
  • 臨時密碼登入與一般登入同樣受防列舉、rate limit 與鎖定保護;完成強制改密後會 rotate session,降低 session fixation 風險。

6. 帳號自助服務邊界

每個使用者(含管理員自己的帳號)都能透過右上角帳號選單自行管理個人資料,管理員應了解其能力邊界,因為它同時也是自助服務不能做到什麼的參考:

  • 我的資料:可修改顯示名稱、單位/組織(僅為自陳,不代表已驗證身分)、語言、時區。
  • 帳號與安全:修改密碼(需驗證目前密碼;OIDC 帳號無本地密碼可改,畫面會明確說明由哪個 Identity Provider 管理)、查看已登入裝置並可個別登出或一鍵「登出其他裝置」。密碼變更後其他裝置需重新登入。同一頁還有變更 Email 流程(本地帳號需驗證目前密碼;OIDC 帳號僅需目前的登入 session 即可),系統會寄送驗證連結到新地址,須完成點擊後變更才會生效;以及「資料匯出與帳號刪除」區塊:匯出可下載一份平台持有該帳號所有資料的 JSON 檔,申請刪除帳號(需驗證目前密碼,原因選填)則會送入平台管理員審核佇列(§3.9),不會立即執行。
  • 角色與權限:純唯讀,顯示平台角色與各競賽角色,沒有任何編輯功能;角色有誤請聯絡該競賽管理員或平台管理員。

自助服務永遠不能做的事

Self-Service Profile 不得修改 super_admin、Competition Role、帳號狀態、Judge Assignment、Competition Membership Governance 或任何其他授權狀態;敏感操作(改密碼、改 Email、撤銷其他 session、申請刪除帳號)一律需要重新驗證,不因長效 session 就放行。自助刪除帳號的申請永遠不會自動執行:必須由平台管理員審核並核准(§3.9)才會進行匿名化與刪除。

7. 治理與安全鐵律

以下規則沒有例外,管理員操作若與其衝突,一律以規則為準:

主題規則
租戶隔離A 競賽的資料不得被 B 競賽的一般使用者讀寫或推論;平台管理跨競賽查詢須具明確權限並使用最小必要欄位。
伺服器端授權UI 角色檢查僅供體驗使用,每個受保護 API 都獨立重新驗證身分、權限、租戶、擁有關係與最新狀態。
歷史不可變投稿與已鎖定分數歷史不可變:不得原地修改,修正只能建立新版本/附理由重新開放。
匿名評審與私有檔案匿名評審 DTO 不得洩漏可識別欄位;作品檔案永遠 private,僅能短效簽章存取。
可稽核性敏感管理操作必須產生一般使用者不可刪除的稽核紀錄,且需含操作者、動作、競賽(如適用)、對象、原因與時間戳;目前紀錄不含變更前後內容差異或追蹤代碼欄位。
平台與競賽管理分離平台管理與競賽管理明確分離;super_admin 不因全域角色繞過歷史不可變、可稽核性等規則。
最後管理員保護任何會使啟用中 super_admin 數量降為零的操作都會被伺服器拒絕。
首位管理員 Bootstrap首位管理員只能透過受保護的一次性 Bootstrap 流程產生;已有管理員後所有 Bootstrap 請求一律失敗。
評審憑證自主權評審憑證由使用者自己建立/控制,管理員不得建立或查看永久密碼;臨時密碼一次性、不可回查。
自助服務邊界自助服務不得修改授權狀態;敏感帳號變更需重新驗證;自陳單位資訊不等於已驗證身分;由外部身分提供者管理的欄位不得本地重複修改。
個資最小化平台列表僅回傳治理必要的個資;停權不等於個資刪除;正式個資刪除需依核准政策區分刪除/匿名化/法定保留;不提供未經核准的全平台個資批次匯出。

8. 常見問題與疑難排解

我是新部署的第一個使用者,登入後看不到平台管理選單?
這是預期行為。註冊與登入本身不會授予任何平台權限。請依 2.2 節走 Bootstrap 流程,並事先跟部署負責人取得 Bootstrap Credential。
可以把某個管理員的權限撤銷,讓平台完全沒有管理員嗎?
不行。伺服器會拒絕會讓啟用中 super_admin 數量降為零的操作。若真的需要交接,請先授予新管理員,再撤銷舊帳號。
評審登入時輸入的臨時密碼在哪裡可以查到?
查不到。臨時密碼只在產生後的單次通知信中出現,資料庫只存雜湊值,管理後台不提供查看功能。若評審沒收到信或密碼已過期,請在「評審邀請」(4.9)按「重新發送」,會產生新密碼並讓舊密碼立即失效。
發布後的表單能不能直接修改欄位?
可以編輯,但發布後編輯永遠是「複製出新草稿版本」,不會覆蓋目前上線內容;已綁定舊版本的既有繳交資料仍依原 schema 顯示。改完記得再次「發布」新版本才會對使用者生效。
已鎖定的分數評錯了怎麼辦?
不能直接改。管理員需在對應介面重新開放並填寫理由,系統會建立 revision history,原始分數紀錄仍保留可追溯。
我以 competition_admin 身分能不能看到別場競賽的資料?
不能。租戶隔離由伺服器端獨立驗證,即使猜到 URL 或 ID 也無法存取。
計算結果後有些作品沒有出現在排名裡?
這是固定平台政策,不是錯誤:單一作品須至少有 2 位評審的有效鎖定分數才會被計入該次結果,只有 1 位(或 0 位)完成,或原本 2 位評審中有一位因利益衝突被排除,就不會出現在排名裡。確認該作品的評審指派與完成進度、補齊分數後重新計算即可;此門檻套用於整個平台,目前不提供逐競賽調整。

9. 名詞對照表

中文English說明
平台管理員 / 超級管理員Super Admin全域治理角色,跨所有競賽。
競賽管理員Competition Admin單一競賽的主辦管理員。
租戶隔離Tenant isolation競賽之間資料互不可見、互不可推論。
稽核紀錄Audit log僅供新增、不可編輯或刪除的操作歷史。
臨時初始密碼Temporary Initial Password每次評審邀請唯一產生、單次使用、不可回查的密碼。
最後管理員保護Last-admin protection禁止讓啟用中管理員數量降為零的規則。
BootstrapBootstrap全新部署時建立第一位平台管理員的一次性流程。
晉級Advancement初賽入選進入決賽的隊伍名單,由人員決定。

本手冊依目前系統實際畫面與操作行為撰寫,如與實際畫面不符,請回報差異以便更新。

還有其他問題?

回到快速開始

其他角色操作手冊