本卡屬 FR-164(母卡見「母卡」欄),批 2,等 FR-164.1 與 .2 都合入。把兩張前棒做好的東西接上專案總覽頁、刪掉舊的右側面板,然後對著舊版逐條驗「原有功能一個不少」。
前兩棒做好了左樹模式與右側兩塊,但都還沒掛到頁面上。這棒:① 做一個容器 RoundControlView.vue(左右 Splitter,右邊再上下 Splitter);② 總覽頁把資料與函式 provide 下去、v-if="viewMode==='control'" 掛容器;③ 把總覽頁舊的控制項視圖右側面板整段刪掉(兩千行的檔會少六百行);④ 補 i18n;⑤ 開 DEV 實機,拿 design.md 的「保留功能對照表」一條條對。
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/components/grc/control-view/RoundControlView.vue 新增:容器
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/project/ProjectAuditorOverview.vue:1400-1404 證據視圖掛載點(照這個加控制項視圖)
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/project/ProjectAuditorOverview.vue:1406-2025 舊右側面板+舊左樹——整段刪
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/project/ProjectAuditorOverview.vue:1023-1037 頁面最外層 `.p-5` 與 loading/not found(不動)
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/project/ProjectAuditorOverview.vue:2028-2056 任務抽屜 Sidebar(不動,仍由總覽頁持有)
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/views/project/ProjectAuditorOverview.vue:2060-2121 `<style scoped>`:`.ao-sub-section*`/`.nav-bar`/`.nav-ctrl-list`/`.executable-dot` 只有舊面板在用,一起刪
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/components/grc/evidence-view/RoundEvidenceView.vue:97-116 Splitter 用法樣板
~/Projects/Billows/Audit-Manager/compliance-manager-fe/src/config/locales/i18n/{zh-tw,en}/auditor-overview.json i18n
RoundControlView.vue:props 照 RoundEvidenceView.vue(groups/controlsMap/loading/viewMode/projectUid)+ emit update:viewMode。外層 Splitter state-key="auditor-overview-control-splitter" state-storage="local" :gutter-size="6",左 SplitterPanel :size="27" :min-size="20" 放 EvidenceNavTree mode="control"(傳 .1 新增的 prop,值由本容器用 inject 到的函式算:groupProgress/ctrlProgress/*HasExecutableJob/controlReviewMap/aoReviewMap/ctrlHasSspDesc),右 SplitterPanel :size="73" 內再一個 Splitter layout="vertical" state-key="auditor-overview-control-vsplitter",上 ControlReferencePane、下 ControlTaskTable。參考資料收起時上面板縮到標題列高度(min-size 設小、收起時改 size)。EvidenceNavTree 的 select 事件接法照 RoundEvidenceView.vue:30-44(樹重載退回第一個群組;選到就展開)。選群組時呼叫 fetchControls(groupId)、選控制項/評估目標時 fetchControlDetail(controlId, groupId)+fetchSspDetail(controlId)(既有函式,都有快取)。provide(CONTROL_VIEW_KEY, {...}) 把 useControlView.js 註解列的全部 state 與函式給下去(名字一個都不改);:1400 旁加 <RoundControlView v-else ...> 取代整個 :1406-2025 的 <div v-else class="flex gap-4 align-items-start">。刪舊段後 grep 總覽頁 <script>:expandedGroupIds/expandedControlIds/expandedAoIds/sspSectionOpen/searchQuery/showMyTasksOnly/selection/toggleGroupExpand/toggleControlExpand/toggleAoExpand/expandAll*/collapseAll*/visibleControlsForGroup/visibleAosForCtrl/visibleJobsForAo/filteredGroups/totalControlsInFilteredTree/aoStatusRgb 等只給舊面板用的全部刪;ctrlStatusFromAos/aoStatusFromAo/aoTaskCount 改 import 自 useControlTaskRows.js(.2 已搬)。AoJobSection import 若沒人用了一起拿掉(元件檔本身留著,規劃頁可能還用——先 grep)。nav_legend_*、ref_pane_title(參考資料)、ref_pane_sub(只讀・條文與現況)、ref_collapse/ref_expand、ref_control_text(控制項要求)、ref_group_desc(群組說明)、ref_ao_text(評估目標)、task_pane_title(任務)、task_sum({done} / {total} 已完成)、task_exec_n({n} 待我執行)、task_filter_all/task_filter_exec/task_filter_open/task_filter_done、task_group_label(分群)、task_group_none/task_group_control/task_group_ao、task_col_task/task_col_location/task_col_assignee/task_col_evidence/task_col_status、task_btn_execute(執行)、task_btn_open(開啟)、task_seg_empty(尚無任務)、task_filter_empty(沒有符合篩選的任務)、task_empty(這個範圍還沒有任務)。docs/features/FR-164-control-view-redesign/screenshots/,回寫時列「功能|截圖檔名|結果」。refresh 回來表格更新;⑧ 標記已審閱→左樹 ✓ 出現、取消只有本人能按;⑨ 規劃期專案左樹 ✎ 與右上「k/n 現況已填」;⑩ 結案輪次:執行鈕不出現、審閱鈕反灰;⑪ 拖左右、上下分隔線後重整還在;⑫ 參考資料收起再重整仍收起;⑬ 切到證據視圖再切回,兩邊狀態互不干擾;⑭ 瀏覽器寬 1280 不出橫向捲軸。npx vitest run src/components/grc src/views 全綠;npm run build 不紅。wc -l 回寫前後行數。ProjectAuditorOverview.vue(2,121 行)——只准刪與接線,新增邏輯一律在 control-view/ 下;回寫時報 wc -l 前後。git stash 不要用(會把別人未提交的改動一起收);直接改、看 diff、commit。dark-card、字級一律全站基準(正文 1rem、表格 0.875rem、標籤 0.75rem)、顏色一律 design token(var(--text-secondary)/var(--accent)…),不 inline 色碼、不自訂 font-size。commit 前 grep -n "font-size\|font-family\|max-width" <本卡改的檔> 頁面級 <style> 不該出現整組字級定義。