本卡屬 FR-162(母卡見「母卡」欄),批 4,等 3a,與 2b/3c 平行(不同檔)。決策者最在意的畫面:不要一筆一筆勾。只改 FE repo。
新專案建好進規劃頁,如果同公司有其他框架的專案且對照對得上,頂部出一條橫幅:「偵測到 CMMC L2 專案『鼎盛精密』有 87 個評估目標的證據可帶入」。點「查看並帶入」開對話框三步:①選來源專案(卡片列框架、可帶入評估目標數,可多選);②預覽表:一列一個本專案評估目標,顯示對到來源哪條、關係、信心、來源(官方/顧問/AI)、證據數,等價且信心高的預設打勾,可展開看檔名、可全選全不選、可依關係篩選;③按「帶入所選」後摘要:「帶入 142 份證據到 87 個評估目標,31 個評估目標無對應(可下載清單)」。之後來源專案補了新證據,橫幅再亮「有 5 份新證據可帶入」。
~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-162-2610-cross-framework-control-mapping/design.md(決策表 D1~D11、詳細設計含 DDL、拆分表);盤點與官方資料分析:~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/analysis/2026-10-24-cross-framework-control-mapping.md。本卡已帶足開工所需細節,不必先讀完。GET /projects/:uid/mapped-evidence/sources -> [{project_uid, name, framework_name, mappable_ao_count, evidence_count}]
POST /projects/:uid/mapped-evidence/preview body {source_project_uids:[...]}
-> {rows:[{ao:{control_id, ao_part_id, title, job_execution_uid}, source_project:{uid,name,framework_name},
source_ao:{control_id, ao_part_id, title}, relationship, confidence, origin, hops,
evidences:[{uid, file_uid, file_name, description, created_at, source_state}], default_checked}],
unmapped_ao:[{control_id, ao_part_id, title}]}
POST /projects/:uid/mapped-evidence/adopt body [{job_execution_uid, evidence_uid, mapping_entry_id}]
-> {adopted, skipped, ao_count, unmapped_ao:[...]}
GET /projects/:uid/mapped-evidence/new-since-last-import -> {count, by_source:[{project_uid, name, count}]}
ProjectPlanningView.vue 3,540 行已超標:只加一行掛載 <MappedEvidenceBanner :project-uid=... /> 在頁首既有提示區;其餘全部新檔 src/views/project/planning/MappedEvidenceBanner.vue、MappedEvidenceImportDialog.vue、MappedEvidencePreviewTable.vue、useMappedEvidence.js(composable 收 API 呼叫與勾選狀態)。sources;有結果且使用者沒關過(localStorage 記 mapped-evidence-banner-dismissed:<project_uid>,try/catch)→ 顯示;另打 new-since-last-import,count>0 時文案改「有 N 份新證據可帶入」。橫幅用 PrimeVue Message 或 dark-card 一行+兩顆按鈕(查看並帶入/關閉),不要左側粗邊框。default_checked;關係/來源 Tag 色照 2b 同一套(抽 src/utils/mappingTags.js 共用,2b 若已建就引用);展開列出證據檔名與來源判定;頂部篩選關係/來源、全選/全不選、搜尋。api.js、service/MappedEvidenceService.js、i18n lang.mapped_evidence.* 中英、error-code.json 兩碼。source='MAPPED' 筆數一致;關閉再進頁橫幅不出;清 localStorage 再進頁橫幅回來。grep -rn "border-left" src/views/project/planning 空。src/config/api/api.js,service 繼承 src/service/BaseService.js;能力點常數加 src/config/capabilities.js;i18n 在 src/config/locales/(zh_Hant_TW 與 en 都補);error code 對照 error-code.json 中英同步。