FR-080 · 需求索引 · 本頁由 build 掃資料夾生成

FR-080 jedi-* 套件整併與服務化路線

✅ 已收口(2026-09-12)。八棒+六張插隊卡+arc review 衍生九張修正卡(CM-1664~1668、1679~1681、1685)全 Done、首腦親驗;2026-09-11 併入 feature/FR-075(BE 28cf59fd)。發版/pin 還原/SPEC/release note 歸 FR-089,租戶隔離修正歸 FR-075(FR-087 已盤完)。🔴 切子租戶功能暫不對外

狀態:✅ 已完成 文件 11 份 handoff 7 份

FR-080 一頁看完

§1

🔴 先看哪一份

你想知道 看這份 這份的性質
最後出貨長什麼樣——21 支套件、五層、誰依賴誰、新產品裝哪五支 定版交付 FINAL-SPEC.md 定版參考,只寫現況,不記沿革
為什麼這樣決定、討論中被推翻過什麼 設計 design.md 設計決策,寫完凍結
哪一棒做了什麼、驗收怎麼過的 交接日誌 handoff/fr080-LOG.md 歷史紀錄,append-only
原始盤點證據(25 支逐支、宿主接線、空殼細查) inventory/ 一次性證據,不再更新
決策者親手驗收的步驟 handoff/fr080-ACCEPTANCE.md 操作手冊

一支套件內部長什麼樣(plugin/ 五檔、guards.py、request 旅程)不在本站——那是 FR-089 插件解剖(工程師版)與 給 PM 的說明(不需技術背景)。長期分層判準在 架構手冊 · 套件分層。

§2

結論

  1. 25 支收成 21 支,四組合併:資產(device+information-system)、任務平台(task-platform 吞 participant)、系統核心(system-config+system-menu)、日誌(jedi-log 吞 log-forwarding)。flow-engine 不併(決策者拍板)。其餘 17 支不動。三組看起來像但不併:oscal-v2 與 compliance-audit、integrity 與 license-runtime、detection 與 remote-agent。
  2. 套件分五層,依賴只准往下:基座(jedi-common)→ 橫切(登入、存取紀錄、防篡改、授權)→ 平台服務(通知、檔案、設定、資產…)→ 平台骨架(任務平台、流程引擎)→ 業務(稽核、問卷、檢測…)。新產品的起手式是前兩層加通知、設定五支。
  3. 五支「有殼沒肉」的套件已補實四支:bulletin、device、information-system、system-config 的功能已從主專案搬進套件。flow-engine 沒做——套件內 549 行死程式與主專案複製出去的 1,559 行執行服務都還在,等 CM-1478 流程疆界設計。
  4. 套件之間直接抓對方程式的線要改成走接口,換到別的系統才不會斷。四個可量的數字當驗收:跨套件直接 import、沒人用的接口、主專案接線行數、能直接裝的套件數。
  5. 對 PM 的三個詞:FR-069 做到「有邊界」(高內聚低耦合抽象化約六/五/四成),FR-080 做完到「邊界畫對、依賴走門、對外只露介面」(約九/八/七成)。抽象化的最後一段要靠第二個真實產品驗證,不是這次能補的。

正式設計:design.md。證據:inventory/ 七份原始盤點。第 1 棒的舊分析已刪除(決策者 2026-09-10 裁,留著會誤導;要查看 git 歷史 c2bf55d6 之前的 design.md)。

§3

📊 總進度(每驗收一棒更新;2026-09-10 八棒全部 Done,進收口)

棒 Notion 卡 做什麼 狀態 runner 時間
0 CM-1620 分層規範入手冊、指標工具 ✅ Done 35 分
1 CM-1621 設備+資訊系統 → jedi-asset ✅ Done 54 分
— CM-1635 文件白話化(插隊) ✅ Done 1 小時 10 分
2 CM-1622 設定+選單 → jedi-system-core ✅ Done 3 小時 35 分
3 CM-1623 log 吞 log-forwarding ✅ Done 40 分
4 CM-1624 任務平台吞人員指派 ✅ Done 約 1 小時
5 CM-1625 公告補實 ✅ Done 2 小時 25 分
— CM-1642 前四棒獨立 review(插隊) ✅ Done 約 1 小時
— CM-1643 修正卡:review 兩條 Critical+bulletin 同型+守衛缺口+harness+三支目錄重排 ✅ Done 約 3 小時
6 CM-1626 改接口 ✅ Done 約 2 小時
7 CM-1627 拔寫死的產品知識 ✅ Done 約 2 小時
8 CM-1628 小型修錯與清理+殼搬 archive+review 留的 I1/I2/M1~M4 ✅ Done 約 3 小時

四個指標(基線 → 現在,2026-09-14 實跑 plugin_metrics.py):跨套件直接 import 120 → 93(剩下 68 處是 compliance-audit → oscal-v2,刻意保留)|沒人用的接口 16 → 4|主專案接線行數 7,457 → 9,762(接口的另一半落主專案,預期內;DI 瘦身後會降)|能直接裝的套件 17 → 17(套件 25 → 21,六支殼在 archive/)。完整表見 FINAL-SPEC

每棒的驗收細節在 交接日誌 LOG 與 Notion 母卡 CM-1619。決策者驗收清單:fr080-ACCEPTANCE.md。

§4

需求討論紀錄

  • 2026-09-09 決策者:asset(設備+資訊系統)要合併,「幾乎是相同性質」;flow-engine 不併任務平台,「分開是對的」;notification 獨立因為會持續擴充;system-infra 的本意是「系統開起來一定要有的基本功能」。
  • 2026-09-09 決策者:第 1 棒的分析「反反覆覆、沒有認真思考」,結論不採用,重新分析。
  • 2026-09-09 決策者:log 與 log-forwarding 合併(第 2 棒原判不併,被問「為什麼堅持分開」後撤回:那是部署理由不是合併理由)。
  • 2026-09-09 決策者:出發點是「一堆 API 模塊,新產品拿來就能復用」,這是插件不是微服務;短期只做插件,由插件組成不同微服務是以後的事。
  • 2026-09-09 PM:「目前分法可以先這樣」;compliance-audit 掃資安時會跨太多套件;remote-agent 與 detection 之後再調整。
  • 2026-09-09 決策者:照八棒開卡、一次派一棒(另一首腦在同機器跑資安掃描)、用 git worktree 隔離。
  • 2026-09-10 決策者:所有回報一律白話文,工程師與 PM 要看得懂。
  • 2026-09-10 決策者:第 1 棒舊 design 刪除,留著會誤導;FR-080 文件與進度只在 worktree 做,做完整個 arc 再合回。
  • 2026-09-10 決策者:每個 FR 站首頁固定三段:結論、總進度、需求討論紀錄。
  • 2026-09-10 決策者:合併不是搬進子目錄,system-core 要按層壓成一層;log 與 task-platform 改成子功能平行、頂層不放任一子功能的分層。review 抓到的 Critical 等第 5 棒回來一起開修正卡。
  • 2026-09-10 決策者:被合併的六支舊套件先 archive(搬 archive/ 目錄、不刪不發版),過陣子再處理退役。等第 6 棒改完 import 才動。
  • 2026-09-10 決策者(第 6 棒停點):授權套件的子租戶額度守門,接口未注入時讀取回 0 不擋、寫入擋下。理由:安靜失效等於授權可繞過。
  • 2026-09-10 決策者:FE 錯誤碼 patch 等 arc 收口再套;六支轉發殼併第 8 棒搬 archive(participant 那支先改 survey/compliance-audit 的 import 名)。
  • 待決:②層叫「橫切」還是「中介層」(先放著);compliance-audit 收回主專案還是留套件償債(決策者傾向「核心不需要拆」);integrity 是否併 license-runtime。
§5

背景

這是 FR-069 的續作。 FR-069 把主專案 40 個模組抽成 25 支 jedi-* 套件後,於 2026-09-01 收官;決策者接著提出三個要求:朝微服務模式走、套件要能在其他專案裝上就用、現在切得太細。本 FR 回答「要合成幾支、今天離『裝上就能用』還有多遠、要補什麼」。

兩個詞先講清楚:插件是把功能包成一個個可裝可拆的零件,裝上一支、註冊一行、API 就長出來;微服務是把這些零件分散到不同機器上各自跑。這一輪只做插件,微服務是以後的路線圖。

現況(2026-09-10):PM 已同意分法,決策者裁照八棒開卡、一次派一棒執行。進度看 交接現況 STATE 與 Notion 母卡 CM-1619 末段的逐棒驗收。執行在獨立工作目錄 compliance-manager-be-fr080(branch feature/FR-080),這個站要看 worktree 那份才是最新。

§6

文件

  • design.md — 正式設計(第 2 棒):五層分類、判準、25→21 逐支結論、五支有殼沒肉的補實順序、要改成接口的線、起手式、微服務路線圖、PM 三詞對照與四個指標
  • inventory/ — 七份原始盤點證據(25 支逐支、主專案接線與部署、五支空殼細查、判準檔)
  • handoff/fr080-STATE.md — 交接現況(每棒驗收後更新);handoff/fr080-LOG.md — 逐棒紀錄
§7

與 FR-069 的關係

不掛成 FR-069.N:FR-069 已經正式收官(交接檔標記五個階段全數收完),再往下掛會讓收官紀錄失真。本 FR 承接它的終局形狀(25 支套件、五層分類、插座模型,以及三條通則:套件對基礎能力的依賴一律走接口、資料關聯三律、設定申報制),並修正三處沒兌現的:獨立測試環境進 CI 這件事沒做到、「套件只准依賴 jedi-common」這條在第四階段之後已經不成立、資料庫腳本隨套件出貨只有 7 支真的做了。

§8

文件

以下全部由 build 掃資料夾產生,新增檔案重 build 即自動出現。標題連結指向渲染後的 HTML,md 連向源檔。

定版交付

文件 類型 標題 最後更新
FINAL-SPEC / md 定版交付 整併後的最終長相:21 支套件、五層、誰依賴誰 2026-09-16

設計

文件 類型 標題 最後更新
design / md 設計 jedi-* 套件怎麼分層、怎麼併、怎麼走向插件與微服務 2026-09-14

inventory/(7 份)

證據與盤點

文件 類型 標題 最後更新
batch-A / md 文件 FR-080 批次 A 盤點:system-infra 候選七支 2026-09-09
batch-B / md 文件 FR-080 批次 B 套件盤點(8 支) 2026-09-09
batch-C / md 文件 FR-080 批次 C 盤點回報(task-platform / participant / flow-engine / survey / compliance-audit) 2026-09-09
batch-D / md 文件 FR-080 批次 D 套件內容盤點(唯讀) 2026-09-09
criteria / md 文件 FR-080 判準(開工前寫定,全程只用這一組) 2026-09-09
hollow-plugins / md 文件 FR-080 唯讀盤點:六支「有殼無肉」jedi 插件 2026-09-09
host / md 文件 FR-080 宿主側盤點:今天這個系統實際是怎麼組裝/部署/跑的 2026-09-09

review/(2 份)

證據與盤點

文件 類型 標題 最後更新
2026-09-10-four-merges-review / md 盤點證據 四組套件合併做得對不對——三個面向、八個 commit、兩個 repo 2026-09-10
2026-09-11-enrichment-coverage-audit / md 盤點證據 拔掉自動關聯後的補值缺口——八處拔關聯、九種缺口、零條正在讓畫面空白 2026-09-11

交接與收口時間軸(handoff/,7 份)

由新到舊。每份是某一棒次交接當下的完整現況快照,看某個時間點「當時知道什麼」請從這裡進。

日期 文件 標題
2026-09-12 fr080-to-fr075-HANDOFF / md FR-080 → FR-075 交接(2026-09-11,FR-080 併入 FR-075 當日)
2026-09-12 fr080-STATE / md FR-080 交接現況(STATE)
2026-09-12 fr080-LOG / md FR-080 交接日誌(LOG,append-only)
2026-09-12 fr080-ACCEPTANCE / md FR-080 決策者驗收清單(八棒做完,2026-09-10)
2026-09-11 CM-1660-survey-fill-context-README / md CM-1660:問卷填答頁補「這份問卷屬於誰」資訊區
2026-09-11 CM-1660-HANDOFF / md CM-1660 交接(2026-09-11)
2026-09-10 CM-1626-fe-error-code-README / md CM-1626:FE error code 待補(兩碼)
§9

關聯

相關需求: