---
title: Guidant AI 大架構圖 — 一頁看懂整個系統
brand: Guidant AI · **架構手冊**
eyebrow: 架構手冊 · 全員版 · 2026-08-31
h1: 這個產品是怎麼組起來的
lede: 這頁給**所有人**看——工程、PM、業務都適用。一張總圖講清楚：系統由哪幾層組成、每層負責什麼、「產品本體」最後剩下什麼。看完這頁，就能理解「為什麼我們把功能一支支拆成套件」以及「拆完之後的世界長什麼樣」。
chips: [{text: 全員版, kind: ok}, {text: 隨第四階段更新, kind: plain}]
---

## 30 秒版 {#tldr nav="30 秒版"}

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

## 總圖 {#map nav="總圖"}

```{.mermaid cap="圖 1 — 五層總圖：上面的依賴下面的，功能積木彼此互不相依"}
%%{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
```

**看圖的三個要點**：

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

## 產品本體最後剩什麼 {#host nav="產品本體"}

這是最常被問的問題：「功能都拆出去了，那我們的產品剩什麼？」答案是**四類**，而且每一類都**只有這個產品有**。
下表是白話版；**逐類配實例路徑的完整版**在[模組化路線圖 §產品本體最後剩什麼](modularization-roadmap.md#host-four)。

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

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

## 商務上的意義 {#biz nav="商務意義"}

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

## 想深入的下一步 {#next nav="深入閱讀"}

- 為什麼「任務平台是插座不是插頭」→ [專案平台化決策](project-platform-decision.md)
- 24 支套件怎麼分類 → [套件分類地圖](package-taxonomy.md)
- 套件之間誰依賴誰（工程版）→ [相依關係圖](dependency-map.md)
- 進度到哪了 → [模組化路線圖](modularization-roadmap.md)
- 插件怎麼運作（工程版）→ [插件架構指南](plugin-architecture-guide.md)
