架構手冊 · 全員版 · 2026-08-31

這個產品是怎麼組起來的

這頁給所有人看——工程、PM、業務都適用。一張總圖講清楚:系統由哪幾層組成、每層負責什麼、「產品本體」最後剩下什麼。看完這頁,就能理解「為什麼我們把功能一支支拆成套件」以及「拆完之後的世界長什麼樣」。

全員版 隨第四階段更新
§1

30 秒版

  1. 這個系統正在從「一大塊」變成「積木」:以前所有功能長在同一包程式裡;現在一支支拆成可獨立安裝的模組(套件),裝上就有功能、拔掉就消失。
  2. 五層結構:最底下是技術地基,往上是任務平台(骨架)、流程引擎、一排功能積木,最上面是產品本體。
  3. 產品本體最後剩三樣東西:跨模組的報表櫃檯、把積木接起來的接線盤、這個產品獨有的組裝設定。
  4. 好處:新產品不用重寫(裝積木就好)、客戶可以選配(買什麼裝什麼)、客製變設定(例如問卷要不要審核是開關,不是開發案)。
§2

總圖

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E2F0F1','primaryTextColor':'#14201F','primaryBorderColor':'#0E7C86','secondaryColor':'#EEF2F3','secondaryTextColor':'#14201F','tertiaryColor':'#FBFCFC','tertiaryTextColor':'#14201F','lineColor':'#4A5A5C','textColor':'#14201F','mainBkg':'#E2F0F1','nodeBorder':'#0E7C86','nodeTextColor':'#14201F','edgeLabelBackground':'#FBFCFC','titleColor':'#14201F','clusterBkg':'#FBFCFC','clusterBorder':'#E4EAEB'}}}%%
flowchart TB
    subgraph HOST["🏠 產品本體(Guidant AI)——不打包,這個產品獨有"]
        direction LR
        RM["報表櫃檯<br/>跨模組的彙整畫面:<br/>我的任務、SSP 控制項總覽、<br/>稽核 Dashboard"]
        WIRE["接線盤<br/>把各積木接起來:<br/>誰是使用者、怎麼寄信、<br/>檔案存哪"]
        CONF["組裝設定<br/>這個產品裝了哪些積木、<br/>每個租戶開哪些功能"]
    end

    subgraph PLUGINS["🧩 功能積木(可選配,裝上就有 API、拔掉就消失)"]
        direction LR
        subgraph BIZ["業務功能"]
            AUDIT["稽核<br/>(規劃中:<br/>從 flow_control 分家)"]
            SURVEY["問卷"]
            DETECT["檢測"]
            AICLS["AI 佐證分類"]
            PART["人員指派 ✅"]
        end
        subgraph PLAT["平台服務"]
            IAM["身分與權限<br/>jedi-iam ✅"]
            SVCS["通知/檔案/選單/<br/>設定/公告/日誌…<br/>(11 支,已就位)✅"]
        end
        subgraph OPS["落地營運(客戶機房需要的)"]
            OPS3["授權驗證/防竄改/<br/>log 轉發 ✅"]
        end
    end

    subgraph CORE["⚙️ 任務平台(規劃中)+流程引擎"]
        TASK["task 平台<br/>任務骨架+狀態機+指派<br/>(從 flow_control 蒸餾,吸收 jedi-project)"]
        ENGINE["流程引擎 jedi-flow-engine<br/>(BPMN,剛清完 4,351 行死碼)✅"]
    end

    subgraph BASE["🧱 技術地基"]
        COMMON["jedi-common ✅<br/>資料庫連線/查詢底座/例外處理"]
    end

    HOST --> PLUGINS
    PLUGINS --> CORE
    CORE --> BASE
    PLUGINS --> BASE
圖 1 — 五層總圖:上面的依賴下面的,功能積木彼此互不相依

看圖的三個要點

  • 箭頭只往下:上層依賴下層,下層永遠不認識上層。任務平台不知道「稽核」是什麼——是稽核積木裝上來時自己申報「我提供稽核型任務」。所以新增功能,平台一行都不用改。
  • 積木彼此不直接相連:問卷積木要寄信,不是直接呼叫通知積木——它跟接線盤說「我要寄信」,接線盤把通知積木接給它。所以拔掉任何一塊積木,其他積木照常運作。
  • ✅ 是已完成:身分(jedi-iam)、人員指派、11 支平台服務、落地營運三件套、地基都已就位;「稽核分家」與「任務平台」是第四階段正在做的。
§3

產品本體最後剩什麼

這是最常被問的問題:「功能都拆出去了,那我們的產品剩什麼?」答案是四類,而且每一類都只有這個產品有。 下表是白話版;逐類配實例路徑的完整版模組化路線圖 §產品本體最後剩什麼

剩下的東西 白話說明 為什麼不拆
報表櫃檯(readmodel) 「我的任務」這種畫面,要同時顯示任務+專案名+控制項+稽核輪狀態——橫跨五六個模組的彙整 「要並排顯示什麼」是這個產品的設計決定。換個產品,欄位就換一套。各模組的資料各模組自己出(檔口賣自己的菜),跨模組的套餐由櫃檯出
接線盤 積木上的插頭(我要知道誰是使用者/我要寄信)由接線盤接上實際的服務 接什麼、怎麼接,是每個產品自己的組裝
組裝設定 這個產品裝哪些積木、哪個租戶開哪些模組、各設定的實際值 積木申報「我有哪些設定」(規格書),值存在產品這邊
業務加工 真正只有 Guidant AI 有的業務邏輯與編排(SSP 匯入匯出、合規資源庫、Drive 同步、摘要報告) 換個產品這段根本不存在——這才是產品的本業

一句話:積木是通用的,怎麼組出「Guidant AI 這個產品」是本體的事。 第二個產品=同一批積木+自己的櫃檯+自己的接線+自己的組裝。

§4

商務上的意義

情境 以前 之後
客戶只要部分功能 全裝,用不到的也在 選配安裝,買什麼裝什麼
客戶流程不同(如問卷要審核) 客製開發案 設定開關(積木申報的設定)
要做第二個產品 從頭寫或整包複製 裝同一批積木,寫自己的櫃檯
雲端版 vs 落地版 同一包硬拆 落地營運三件套(授權/防竄改/log 轉發)落地才裝——授權驗證雲端也裝
§5

想深入的下一步