# FR-143 交接紀錄（LOG，append-only）

> 每棒收工追加一個 block，既有 block 不改；更正寫在新 block 的「推翻了什麼」。現況看 `FR-143-STATE.md`。

## 第一棒 — 2026-10-16 深夜～10-17 15:40 — 首腦（討論稿、雛形、設計、開卡、七棒派工與復核）

> 本 block 由第二棒事後從 git log、README 討論紀錄、母卡回寫還原——第一棒 session 在開第 8 棒卡前 crash，沒留交接。

**commits**（BE `feature/FR-139`，未 push）: `66faca3fd` 討論稿＋雛形 v1 → 10-17 上午 15 筆 docs commit 逐輪改雛形（側邊入口、改對原任務排計畫、里程碑＝任務到期日、入口叫「改善計畫」、正式用語、執行人員多人、Excel 一列一任務合併儲存格、D10 退第一站）→ `a9af74904` D1～D12 定案 → `8ee6cb4df` design.md＋開卡 → 實作：`341d45ee9`（棒 1 BE 側）、`32906a899`（棒 4）、`63abd2dfe`（棒 5）、`bfec5fbb4`（棒 2）、`2522dd602`／`78949762a`（棒 3 BE）、`8b0f015eb`／`0ed65b396`（棒 6）→ 文件：`3cf471ccc`、`9253fc3cd`、`95c21bbab`（v1.1）、`0abf16e9b`、`a8597cd53`、`35f260807`（分組雛形）、`bbacfa1a5`（v1.2）、`899ca80fa`（到期日→改善期限）。套件 `76d6b243`（棒 1）。FE `94bc5597`、`b452b7b3`、`49adb748`、`c7593673`、`140f58d5`、`0f0ce577`。
**Notion**: CM-2840 母卡；CM-2841～2846 一次建完；CM-2851 後加。七張全部 Done（首腦逐張復核）。
**做了什麼**: 探脈（舊 POA&M 頁三層巢狀、`not_met_job_redo_service` 只重開最新站、jedi-oscal-v2 匯出四處不合規）→ 討論稿＋雛形三畫面十幾輪 → D1～D12 定案 → design.md → 六張卡 → 棒 1 先跑，2／4／5 平行，3／6 接著，棒 7 後加 → 逐張復核（開檔、查 DEV、瀏覽器實走）。
**決策**:
- 決定對原任務設執行人員／改善期限／改善措施、不新增任務（D3）。理由：里程碑就是原任務到期時間，另開任務退回去的人不知道真實期限；被排除：沿用 milestone 另開任務卡（原設計，使用者看不懂）。
- 決定送出即推進、不追蹤完成。理由：決策者「只需要提供計畫就好，不需要等他改完」；改好沒有由下一次稽核判定。
- 決定退卡每個任務退回第一站整條重跑、期限寫進每一站 `due_at` 不加欄（D10／D12）。被排除：只重開最新站（現行，多站退錯人）、加 POA&M 期限欄（與站層期限漂移）。
- v1.1 決定退卡只換第一站指派人、後續檢核站不換（棒 5 runner 提出，DEV 實查各站各有其人，全換等於自己檢核自己；決策者裁 A）。被排除：全站換成執行人員。
- 決定匯出只有 Excel 與 OSCAL JSON、不做 Word／PDF（D7）。理由：POA&M 標準沒有正文欄位，交付物就是 Excel。
- v1.2 決定清單依專案分組展開、小字「共 N 份改善計畫」（A 案）。被排除：平列一稽核次一列（第一版）、小字「共 N 次稽核」（B，子列只列有改善計畫的那幾次，數字對不上）、卡片式、進度條。
- 決定 OSCAL 四處修正一起做（期限與負責人匯出、related-findings 剝 `finding-id`、內嵌被引用的 finding／risk／observation、task 自創 status 不匯出）。
**教訓**:
- 雛形假資料把三站畫成三塊，規格跟著寫錯（「任務」與「站」混用）——design.md 坑 12 固定：「任務」一律指流程，站只唯讀顯示。
- 清單「待規劃」只看 POA&M 未送出不夠，要同時看輪次仍在 remediation，否則舊結案稽核次會被列成待規劃但頁面唯讀（棒 6 退回一條）。
- 棒 3 併入棒 4 的 route／DI 與 `assignee_user_uids` 鍵名對齊，三棒平行時 job_uid 約定要先寫進卡。
**推翻了什麼**: design.md v1 的「一站一塊」（v1.1 改一條流程一塊）；v1 清單平列（v1.2 改分組）。
**留給下一棒**: 開第 8 棒（FR-144 首腦轉達每頁筆數下拉）——session 在這一步 crash。

---

## 第二棒 — 2026-10-17 15:45～傍晚 — 首腦（接手 crash、開棒 8、三次追加、復核、交接）

**commits**（BE `feature/FR-139`，未 push）: `602051ed7` 開 CM-2862 → `182bf6868` 追加一（拿掉全部展開鈕、風格對齊六處）→ `ec01ecca0` 追加二（分頁改內建）→ `010d47d02` 棒 8 復核通過 → `5d7a2b190` 追加三（拿掉兩個下拉）→ 本交接 commit（STATE／LOG 新建）。runner 側：BE `b9f2391d6`、FE `dfa8a3ba`／`5bf2c238`。
**Notion**: CM-2862 新開（修正待驗證，追加一、二首腦復核通過，追加三 runner 進行中）；母卡 CM-2840 append 第 8 棒登記與追加；CM-2861（FR-144.5）與 FR-145 母卡 CM-2854 各留一行「分頁改內建」。
**做了什麼**: 接手盤點（README／母卡／七子卡／三 repo git）→ 決策者看清單截圖說分段分類怪 → 建議與 FR-144.5 同套、開 CM-2862 → 決策者看畫面三次追加（拿掉全部展開鈕＋風格對齊稽核作業頁、分頁改待辦任務頁的內建模式、拿掉兩個篩選下拉）→ 復核：端點實打四種狀態值、headless 截三頁與三分段。
**決策**:
- 決定分段叫「待處理／已完成／全部」、狀態欄叫「待規劃／已完成」。理由：分段是「我要做什麼」三頁共用詞；狀態欄是「這筆怎麼了」用頁內既有詞，進頁後前後一致。被排除：狀態欄也叫「待處理」（進頁變「待規劃」多一個詞對照）、保留已送出／覆核中／已結束（輪次層的事，PM 管不到）。
- 決定改善計畫頁沒有「未指派」狀態（排計畫的就是 PM 本人），比稽核計畫頁少一種。
- 決定分頁改 DataTable 內建（與待辦任務頁同）——決策者裁，四頁（稽核計畫／稽核作業／改善計畫／結案報告）都登記。
- 決定拿掉稽核性質與標準兩個下拉，只動 FE；BE 端點 `audit_nature`／`standard` 參數與 `meta.standards` 屬 API 契約不動。
**教訓**:
- 清單端點 request 分頁要包在 `pager`，裸放 `page`／`page_size` 回 400「Unknown field」；登入 body 是 `username`／`password`／`provider:'password'`，回 `data.access_token`，之後請求要帶 `X-TENANT-ID`／`X-ORG-UNIT-ID`。
- vite dev 頁 Playwright `networkidle` 等不到（HMR 長連線），用 `domcontentloaded`＋`waitForSelector`。
- 同一時間有 FR-142.9／144.5／145 三個 runner 在同一 FE 工作樹，開卡要寫「只 add 自己的檔」；別人剛 commit 的分頁寫法可直接對照。
- 決策者多次點名畫面驗證不要開視窗，卡上紀律段固定寫 headless。
**推翻了什麼**: 追加一寫「無可展開時藏全部展開鈕」被追加一自己的「整顆拿掉」取代；追加一寫「分頁器照 AuditPlanListView 的外掛 Paginator」被追加二「改內建」取代。
**留給下一棒**: 復核追加三；之後決策者全流程測試，首腦接測試迴圈（STATE §3）。

---
