FR-147 資源庫任務說明 — LOG(append-only)

§1

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 根本是現況、不該上桌。
§2

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

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

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。
  • 決策者糾正工作說明變英文——回覆一律中文。
§4

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 一來一回。
§5

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。
§6

2026-10-17 2b Done

  • 39fa55821 12 行,runner 選單一 UPDATE…FROM 而非首腦建議的 mixin(更合適,一句完成);在 SAVEPOINT 內;50+118 綠。覆核輪端到端手測延到 3a/3b 驗收用同筆資料一起做。
§7

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。
§8

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 對話框),兩張同派。
§9

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 還原)。
§10

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」每次回覆固定附。
§11

2026-10-17 分工更正

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