# FR-147 資源庫任務說明 — LOG（append-only）

## 2026-10-17 首腦第 1 棒：需求→探脈→雛形→定案→開卡

- 決策者需求：顧問在資源庫替任務寫名稱／描述／指南；PM 啟動後改流程一 AO 多任務；Excel 一 AO 多列合併儲存格、照當下現況。首腦探脈（prep_job_generation_service、workflow_xml_sync、reverify_inheritance、job_import_service、poam_workbook_export、resource_library_app_service、DEV 資料）後白話複述，決策者點頭三點：啟動後看專案現況、流程歸 PM、Excel 兩邊共用。
- 討論稿＋雛形兩頁＋範例 Excel（`d8e7019c5`）。首腦自驗雛形時**違規用 Playwright MCP 開視窗**（當日第三次），決策者糾正；後決策者釐清邊界：自己驗證用 headless、叫開就開（memory 已改 `0731d3b88`）。
- 決策者審雛形後問「資源庫建立時就建任務？」「配流程圖是顧問能改流程？」→ 裁「不想讓顧問有這麼大權限」→ 新增 **D6 收掉資源庫頁流程編輯器鈕**；D5 經決策者點出「那是 PM 在專案改的、本來就有」撤銷。D1～D4、D6 全照建議（`f614dcb74`）。
- **推翻了什麼**：首腦第一版棒 2「啟動改成整張圖每個方塊都長任務」——D6 後資源庫永遠一方塊，不必改多節點，棒 2 縮為「帶三欄＋覆核輪抄三欄」，核心風險降一半。
- 開卡 CM-2864 母＋CM-2865～2871 七子（連號），母子互連已回填。
- 教訓：① 決策者問「是不是 X」時先答是非與差異，不要急著改設計——這次兩個問題各釐清一次才抓到 D6；② 首腦列待裁項前先問「這件事本案有沒有碰到」，D5 根本是現況、不該上桌。

## 2026-10-17 首腦第 1 棒續：越步開卡、雛形重畫成現行頁底圖

- 決策者兩次糾正：① 「雛形剛剛還沒確定你怎麼就開卡了」——「OK」只對 D1～D4／D6 點頭，改過的雛形沒審就落 design.md 與開七張卡，違反「雛形審過才落地」。卡維持不動，等審完雛形再決定改卡或暫緩。② 「雛形怎麼跟現有 SSP 不一樣、會長在哪、不要多開功能」——v1／v2 雛形用一行灰字代替既有欄位，看起來像新頁。重畫：底圖改抄 FR-139 `control-edit.html`（＝現行資源庫編輯頁），只在 AO 卡片展開面板最底下接「任務說明」一段、頁首加兩顆鈕、拿掉 AO 標題列流程編輯器鈕，三處標「本案」。
- 決策者要求「map」＝本波全部卡的表（狀態、下一波可派哪些），之後每次回覆固定附。
- 教訓：① 「OK」的範圍＝當下問的那一題，下一步要落地前再確認一次；② 雛形改既有頁時底圖必須是那頁本身，不能用占位文字代替既有欄位，否則決策者看不出落點。

## 2026-10-17 雛形 v3 壞掉修復；決策者裁 D7 版型；雛形 v4；追加 3c

- 決策者開 v3 回「雛形壞掉了」：我上一輪重注入時把整份文件接到自己後面（兩個 head、六張 AO 卡），HTTP 下瀏覽器容錯沒報錯、headless 檢查也只看元素數沒看結構，`file://` 直開才壞。重建成單次確定性產生並驗 head/body 各一（`93259ecfe`）。教訓：**驗雛形要驗結構（head/body/卡片數）不只驗元素存在**。
- 決策者問「SSP 導航是不是沒到 AO 層、趁這次分開、控制項留控制項的」「比照稽核計畫、稽核作業那樣」→ D7：左樹到 AO、右欄一次一條（實查現行頁左樹只到控制項、AO 直向堆，DEV 一控制項最多 15 條 AO）。兩個匯入預覽是表格不受影響；專案規劃頁另案。
- 雛形 v4 照 FR-141 `ApObjectiveTree`＋`ApObjectiveAoForm` 版型重畫；開 **CM-2872 3c** 版型卡；3b 改依賴 3a＋3c、流程編輯器鈕改由 3c 拿。design.md v2 加 D7。
- 決策者糾正工作說明變英文——回覆一律中文。

## 2026-10-17 2a 驗收：主體通過、guide 缺口裁「主專案 repo 補寫、不動套件」

- runner `82c8f1336`：helper＋啟動帶名稱／描述；自己抓到兩件卡上沒寫的——①出廠方塊名稱（Evidence upload 等三個，DEV 1,969 份）要視同沒填，否則既有資源庫啟動全改名；②套件 `JobExecutionEntity` 沒 `guide`，照卡上規矩停下回報、沒繞過。兩件都對。
- 首腦實核：diff、128 綠、套件 entity 確認無 guide。runner 建議開套件卡；首腦查到 generate 已注入主專案 `flow_control_job_repo`，那支本來就寫 guide（L221／316／527）→ **裁不動套件**，主專案 repo 加 `set_task_text_fields` 一刀補，2b 共用。退回本卡補。
- 推翻了什麼：runner 的「開套件卡改 entity＋發版」建議——多一次發版換一個主專案本來就有的能力。
- 教訓：卡上寫「entity 沒欄位就回報」是對的，但首腦開卡時該先查「主專案自己的 repo 有沒有這條路」，可省 runner 一來一回。

## 2026-10-17 2a 補刀 Done、3c Done

- 2a `6efda2c76`：runner 把 `set_task_text_fields` 放新 mixin（repo 1,204 行超標，正確）、generate 有指南才呼叫、加測試；129 綠。收 Done。
- 3c `3ddc5fa4`：原檔淨減 571、三支元件、AO 清單＋`after` slot、流程編輯器鈕拔掉。首腦用 test repo Playwright headless 登 DEV 實看版型（左樹五條 AO、右欄單一 AO、2/5 導覽）。收 Done。
- 坑：PrimeVue TabView 的頁籤與 `.mf-tn-ctrl` 樹節點，Playwright 一般 click 會卡在「等 stable」（hover 過渡），頁籤要 `click({force:true})`、樹節點改 DOM `evaluate(...click())`；`getByText` 會命中隱藏的重複文字。全頁截圖側欄會疊上來是固定定位，非版型問題。
- 下一波：2b＋3a。

## 2026-10-17 2b Done

- `39fa55821` 12 行，runner 選單一 UPDATE…FROM 而非首腦建議的 mixin（更合適，一句完成）；在 SAVEPOINT 內；50＋118 綠。覆核輪端到端手測延到 3a／3b 驗收用同筆資料一起做。

## 2026-10-17 3a Done（首腦 curl 實打）

- `4cf997791` 435 行：service／readmodel／route／serializer／DI／error code MODULE_FRAME_404008（FE i18n `ce2b9b7e`）。runner 自己用 437／471／blspan 打過全套；首腦重打一輪全對，含主表 XML 寫入與還原。
- 裁三件 runner 留意：同圖共用多 AO 不做提示（舊資料形狀）；覆核輪部分 AO 回空正確；空字串／NULL 不處理。
- 坑：PUT body 是 `{"items":[...]}`，首腦第一輪打裸陣列拿 400 誤以為守門壞；查 wf uid 的 JOIN 要走 mf→ssp→profile_imports→catalog_controls→parts，直接 JOIN ssp 會抓到別本的圖。
- 下一波：3b＋4a。

## 2026-10-17 3b、4a Done

- 3b：元件 121 行掛進 `MfAoForm` after slot、左樹圓點接 summary；首腦 headless 實看 471 的 AO 表單，任務說明區塊在程序書後、帶狀態與指派人。
- 4a：共用 workbook 222 行、三支端點、五條測試；首腦 curl 來回（export→改兩格→parse→confirm→GET→原檔還原→parse 0 變更）。runner 兩個坑記卡上：confirm schema 要 unknown=EXCLUDE；Excel `=` 開頭當公式。
- 剩 4b（專案端對齊）＋4c（FE 對話框），兩張同派。

## 2026-10-17 4b、4c Done；八張實作卡全收

- 4b 停在「匯入 schema 在套件」是對的；決策者裁動套件 → jedi-task-platform `040d5d32`（三欄選填）、BE `62d845e1a`（檔 546→492）、FE `a424b9c1`。首腦 curl 專案 1548 第 2 輪全套來回（匯出 13 欄兩頁→改三欄→validate 0 錯→confirm→DB 一致→原檔還原名稱）。
- 坑：**PyCharm 起的 BE 進程名是 `.../Python.app/.../Python main.py`，`pkill -f "python main.py"` 殺不到**，首腦第一輪驗到舊格式差點誤判 runner。判準：`lsof -tiTCP:8000 -sTCP:LISTEN` 拿 pid，比它的啟動時間與 commit 時間。
- 語意差異記錄不改：4a 資源庫匯入「空格＝清空」、4b 專案匯入「空格＝不動」（runner 刻意，防半張表洗掉既有文字）。後果：專案端無法用 Excel 清掉描述／指南。收口 spec 要寫明，要不要對齊等決策者。
- 4c FE `497211fa`：兩顆鈕＋匯入對話框 headless 實看；上傳→預覽→確認留決策者手測。
- 下一步：等令收口（spec、arc review、手冊、jedi-task-platform 發版＋pin 還原）。

## 2026-10-17 首腦第 1 棒收工、交棒總驗收首腦

- **本棒做了什麼**：需求→探脈→白話複述→討論稿＋雛形四輪→design.md v2→開九張卡（母＋八子）→派四波（2a＋3c／2b＋3a／3b＋4a／4b＋4c）→逐張實核收 Done。一天內從需求到八張實作卡全收。
- **交接時狀態**：實作全完、收口零做。STATE 已重寫成給總驗收首腦看的版本：驗什麼（八條，標出首腦沒親走的三處：Excel 上傳→預覽→確認、從建專案 UI 啟動、實啟覆核輪）、發版前七件事（套件發版只有 task-platform 一支、四支 path dependency 是 FR-139～143 累積的要統一還原）、兩件待裁。
- **本棒最值得留的五條教訓**：① 「OK」只對當下那題成立，落地前再確認（越步開卡被退）；② 雛形改既有頁底圖要是那頁本身（v1～v2 被問「怎麼跟現有的不一樣」）；③ 自驗用 headless、決策者叫開就開（當日第三次違規後決策者釐清邊界）；④ 開卡前先查「主專案自己的 repo 有沒有這條路」（2a guide 缺口 runner 建議開套件卡，其實主專案 repo 本來就寫 guide）；⑤ `pkill -f "python main.py"` 殺不到 PyCharm 起的 BE，驗到舊程式差點誤判 runner。
- **推翻了什麼**：首腦第一版棒 2「啟動吃整張圖多節點」（D6 後不需要）；首腦列的 D5（根本是現況）；runner 2a「開套件卡加 guide」（主專案 repo 補一刀即可）；首腦 2b 建議用 mixin（runner 單句 UPDATE 更合適）。
- **決策者這一天裁了**：三點方向、D1～D4、D6（顧問不改流程）、D7（版型比照稽核計畫頁）、4b 動套件、「map」每次回覆固定附。

## 2026-10-17 分工更正

- 決策者更正：FR-147 首腦**留任**，不是交棒。上層新增總驗收首腦做 FR-139～147 總測試與統一收尾；總測試抓到的 FR-147 問題派回本首腦分析開修正卡。STATE 檔頭已改。
