DOMAIN-DRIVEN DESIGN · CONTEXT MAP · 領域全景

🗺️ TFF AI 系統 — 領域全景圖

把 9 份需求單拆出的 35 條流程,往上抽象成 TFF 建系統時真正要關心的領域模型: 前中後台各自的 Bounded Context、每個脈絡的 Aggregate Root 與其 Aggregate/Value Object/Domain Event,以及脈絡之間的關係(上下游、防腐層 ACL、共享核心 SK)。

本圖的真正價值在最後一段「尚未找出的概念」——用 DDD 的蒸餾(distillation)反推:現有 9 條 workflow 只覆蓋了學員「說得出口」的痛,還有一整排領域概念沒被任何人提出,卻是系統跑得起來的前提。

⚠ 這是待驗證的策略草模(strawman),不是定案。DDD 第一原則:模型必須由領域專家點頭。每張卡片、每個缺口都是下一輪訪談的題目。

01

圖例 · DDD 記號

核心領域 Core差異化所在,投入最深的模型與最強的人。此處=課程知識庫。
支援領域 Supporting業務必要但不差異化,做但不過度工程。
通用領域 Generic通勤品(通知、身分、發票)——買或用現成,薄薄接上。
尚未找出 Gap領域隱含但沒有任一 workflow 認領的概念——本次蒸餾重點。
◆ Aggregate Root一致性邊界的根,對外唯一入口;跨根用 ID 參照、事件溝通。
Value Object由屬性定義、不可變(金額、地址、時數)。
Domain Event過去式事實(OrderPlaced);跨脈絡靠它解耦。
⚖ Invariant聚合內必須恆真的業務規則(不變式)。
02

領域地圖 · 前中後台 × Bounded Context

9 已覆蓋 · 4 跨切 · 6 缺口
前台業務・行銷推廣
客戶關係 CRM支援SA-01
AR機構客戶 Institution
統編產業別窗口 Contact[]
一個窗口只隸屬一個機構
AR商機 Opportunity
預估金額課程偏好狀態 潛在→報價→成交/流失
商機成交拜訪完成
CRM(通用數碼) · 合作紀錄 Sheet
→ 成交觸發「教育訓練專案」建立(Customer/Supplier)
教育訓練專案 Training Project支援SA-03
AR專案 TrainingProject
里程碑 Milestone[]Checklist狀態機 報價→簽約→招生→開課→收款→結案
未簽約不得進招生;未收款不得結案
專案建立里程碑逾期專案結案
CRM · 專班表/應收款/課程異動 Sheet
流程編排者:串起 CRM→金流→開課營運→出席結案(Process orchestrator)
行銷推廣 Marketing支援SA-02
AR行銷活動 Campaign
檔期通路
AR文案素材 ContentPiece
EDM/官網/LINE/社群SEO 關鍵字
文案一律人審後發布(品牌+法遵)
文案發布招生成效回收
官網 · Google Trends · 公開來源
↓ 下游:消費「課程知識庫」的議題(OHS/Published Language)|⇄ 市場情報 SK
中台企劃・知識工廠
課程知識庫 Knowledge Graph核心 ★SA-04
AR知識卡 KnowledgeCard
來源 Source來源權威 A/B/CpiiFlag審核狀態EVIDENCES 溯源
未核可卡不可被問答引用(D2 核可閘)
AR議題建議 TopicRecommendation
命名建議市場依據相近歷史成效
AR風格側寫 StyleProfile
命名風格術語表
卡片核可知識抽取完成議題產出
J槽歷年課程 · 公開來源 · 市場情報庫
↑ 上游供給議題給 行銷/專案(Open Host Service)|⇄ 解析(Docling) 與 教材 共享核心 SK
教材製作 Courseware支援SA-05
AR講義 Courseware
版面結構品牌合規狀態
不動講師內容,只動版面
AR品牌模板 BrandTemplate
版型/字體/色彩重點框
講義標準化完成品質異常標記
K槽 · 講師 PPT/PDF
⇄ 與 KB 共享「解析」SK|⇄ 需 ACL 對接「講師」(缺口 G1)
後台行政・零容錯
報名與異動 Enrollment支援SA-07
AR報名 Enrollment
學員快照狀態 報名→異動→取消
AR異動申請 ChangeRequest
異動類型附件(退費同意書)
退費類異動需同意書齊全才可執行
異動申請異動完成
異動表單 Sheet · 官網 · CRM
⇄ ACL 寫回 官網+CRM(防外部 schema 滲入)
開課營運 Course Ops支援SA-06
AR開課場次 CourseOffering
上課方式會議連結助教
AR課前巡檢 PrepChecklist
檢核項[]紅黃綠T-7/T-3/T-1
必要項全綠才判定 ready
巡檢異常開課就緒
CRM · Checklist Sheet · Calendar/Webex/Teams
⇄ ACL 對接 會議(Webex/Teams)|使用 通知引擎
出席與結案 Attendance支援SA-09
AR出席紀錄 AttendanceRecord
簽到退上線時長
出席時數達標才可發證
AR結業證書 Certificate
證號學分/時數
AR課程結案 CourseClosure
簽到表/證書/問卷/送審
出席確認證書核發課程結案
Webex/Teams · LINE點名 · SurveyCake · CRM
→ 時數應流向「證照學分」(缺口 G3)|→ 問卷應流向「學習成效」(缺口 G6)
金流與財務 Order & Finance支援SA-08
AR訂單 Order
課程金額方案
訂單金額須與課程價目一致
AR合約 Contract
合約編號用印附件
AR應收款/發票 Receivable
付款狀態匯款日
訂單成立合約簽回收款完成
官網訂單 · CRM合約 · 應收款 Sheet
↑ 定價規則應來自「定價」(缺口 G4)|↑ 退費規則來自「退費政策」(缺口 G5)
跨切基礎/通用
通知引擎 Notification通用
LINE/Email/簡訊(三竹)。被 專案·巡檢·異動·結案 共用。
Open Host Service:發送契約統一,各脈絡訂閱
資料治理與個資 Data Governance / PII支援
AR個資標記 PIIScan
piiFlag遮罩/hash來源分級
受監管租戶:未過 PII 掃描不得簽約/入庫
橫切幾乎所有脈絡(學員個資高風險);金融客戶簽約門檻
身分與權限 Identity & Access通用
角色分級授權(業務見自己客戶、主管見全部)。查詢/存取留痕。
文件槽 Document Store通用
J槽(課程) · K槽(講義) · 掃描歸檔。版本與存取控管。
缺口尚未找出
會員與續約 Membership核心?GAP G2
AR會員 Member · 聯誼會 FellowshipMeeting
續約 Renewal會員影片 觀看參與度
續約是全案反覆提到的價值驅動,卻無 workflow 認領會員生命週期
講師管理 Instructor支援GAP G1
AR講師 Instructor · 講師合作 Engagement
鐘點費檔期評鑑助教 TA
講師散見於 課程/教材/巡檢/結案,卻無脈絡擁有它(含 G8 助教)
證照與學分 CE Credits核心?GAP G3
AR學分認證 CreditAccreditation · 時數申報 HoursFiling
換證時數主管機關送審證照別
金融從業「在職訓練換證時數」是金融研訓的招牌,卻只在結案露一角
定價 Pricing支援GAP G4
AR價目 PriceBook
公開班/專班會員價團報折扣RefundPolicySpec
報價「試算」有,但定價與退費「規則」沒被模型化(含 G5 退費)
學習成效 Learning Effectiveness支援GAP G6
AR成效評估 Effectiveness
滿意度學習成果課後追蹤
問卷資料有,但「課程好不好→要不要續約」的評估閉環沒人建
營運分析 Analytics支援GAP G7
RM讀模型 Read Model
週報Dashboard開班率/營收
週報/Dashboard 散在 PM+CS,無統一讀模型;含 G9 資源排程
03

脈絡關係圖 · Context Map

上下游 · ACL 防腐層 · SK 共享核心
flowchart LR
  classDef core fill:#f6d0c4,stroke:#cf5f3a,stroke-width:3px,color:#172033,font-weight:bold;
  classDef sup fill:#d7e6f5,stroke:#3f6bad,stroke-width:2px,color:#172033;
  classDef gen fill:#e7e1d3,stroke:#8f846d,stroke-width:2px,color:#172033;
  classDef gap fill:#ffe6ac,stroke:#c58a1f,stroke-width:2px,stroke-dasharray:5 4,color:#172033,font-weight:bold;
  classDef ext fill:#eeeae0,stroke:#999,stroke-width:1px,color:#555;

  subgraph FRONT["🟩 前台 · 業務行銷"]
    direction TB
    CRM["客戶關係"]:::sup
    PM["教育訓練專案"]:::sup
    MKT["行銷推廣"]:::sup
  end
  subgraph MID["🟨 中台 · 企劃知識工廠"]
    direction TB
    KB["★ 課程知識庫"]:::core
    CW["教材製作"]:::sup
  end
  subgraph BACK["🟦 後台 · 行政"]
    direction TB
    ENR["報名與異動"]:::sup
    OPS["開課營運"]:::sup
    ATT["出席與結案"]:::sup
    FIN["金流財務"]:::sup
  end
  subgraph CROSS["⬜ 跨切 · 基礎通用"]
    direction TB
    NOTI["通知引擎"]:::gen
    PII["資料治理/個資"]:::sup
    IAM["身分與權限"]:::gen
    DOC["文件槽"]:::gen
  end
  subgraph GAPS["🟧 缺口 · 尚未找出"]
    direction TB
    MEM["會員與續約"]:::gap
    INS["講師管理"]:::gap
    CERT["證照學分"]:::gap
    PRICE["定價/退費"]:::gap
    EFF["學習成效"]:::gap
    ANA["營運分析"]:::gap
  end
  EXT["外部系統
官網·CRM·Webex/Teams·SurveyCake·LINE"]:::ext CRM -->|成交建案 C/S| PM MKT -->|招生| ENR KB ==>|議題 OHS/PL| MKT KB -.->|解析 SK| CW INS -.->|供給講義| CW INS -.->|供給師資| OPS MEM -.->|續約訊號| KB EFF -.->|課後成效| MEM PM --> FIN PM --> OPS OPS --> ATT OPS -.->|會議 ACL| EXT ATT -.->|時數| CERT ATT -.->|問卷| EFF PRICE -.->|定價/退費規則| FIN PRICE -.->|退費 gate| ENR NOTI -.->|通知| OPS PII -.->|掃描| KB ENR <-->|ACL 寫回| EXT FIN <-->|訂單/合約 ACL| EXT style FRONT fill:#e4f2d8,stroke:#5f9b75,stroke-width:3px style MID fill:#fdeec2,stroke:#c99a2a,stroke-width:3px style BACK fill:#dff0f5,stroke:#3f6bad,stroke-width:3px style CROSS fill:#ece4d6,stroke:#8f846d,stroke-width:3px style GAPS fill:#ffe9c9,stroke:#c58a1f,stroke-width:3px,stroke-dasharray:7 4
讀法 五個色塊=五層(🟩前台/🟨中台/🟦後台/⬜跨切/🟧缺口),每個色塊內是該層的 Bounded Context。實線=一般上下游;粗實線 ⇒=知識庫以 Open Host Service 對外發布議題;虛線 ⇢=需 ACL 防腐層 或 SK 共享核心。注意缺口 會員與續約 ⇄ 學習成效 ⇄ 知識庫 三者構成一條「續約飛輪」,卻整條都沒人做。
04

Bounded Context 展開 · 戰術模型

每個脈絡的聚合/實體/VO/不變式/指令/事件
◆=Aggregate Root(一致性邊界的根);⚖=不變式;⚡=Domain Event;Command=改狀態的業務方法
🟩 前台 · 業務・行銷推廣
客戶關係 CRM支援前台SA-01
語彙:機構客戶 Institution · 窗口 Contact · 商機 Opportunity · 拜訪 VisitLog · 合作紀錄
◆ 機構客戶 Institution
Entities窗口 Contact[]
Value Objects統編 TaxID · 產業別 · 規模
Invariant每個窗口只隸屬一個機構;機構識別 = 統編
CommandsregisterContact() merge()
EventsInstitutionMerged
RepositoryfindByTaxId() · search(產業/規模)
◆ 商機 Opportunity
Value Objects預估金額 Money · 課程偏好 · 階段 Stage(潛在→報價→成交/流失)
Invariant成交必連結一機構;一階段只能前進不可跳級
Commandsqualify() quote() win() lose()
EventsOpportunityIdentified · OpportunityWon
RepositoryfindOpenByOwner() · findDormant(days)
↑ 上游:OpportunityWon 觸發「教育訓練專案」建立(Customer/Supplier)|⇄ ACL 讀 CRM(通用數碼)
商機階段的定義?「久未合作」門檻幾個月?業務可見範圍(只見自己客戶)由誰授權?
教育訓練專案 Training Project支援前台SA-03
語彙:專案 TrainingProject · 里程碑 Milestone · 檢核 Checklist · 型態(公開班/專班)
◆ 教育訓練專案 TrainingProject
Entities里程碑 Milestone[]
Value Objects型態 · 狀態 State(報價→簽約→招生→開課→收款→結案) · 到期日
Invariant未簽約不得進招生;未收款不得結案(可設定)
Commandsquote() sign() openEnrollment() close()
EventsProjectCreated · MilestoneOverdue · ProjectClosed
RepositoryfindActiveByStage() · findOverdue()
流程編排者:訂閱 OpportunityWon,串 金流/開課營運/出席結案;發提醒走 通知引擎
里程碑模板依課型分幾套?結案的硬前提到底是「收款」還是「文件齊」?
行銷推廣 Marketing支援前台SA-02
語彙:行銷活動 Campaign · 文案素材 ContentPiece · 通路 Channel · 招生成效
◆ 文案素材 ContentPiece
Value Objects通路(EDM/官網/LINE/社群) · SEO 關鍵字 · 版本
Invariant一律經人審後才可發布(品牌 + 法遵)
Commandsgenerate(course,style) approve() publish()
EventsContentPublished · EnrollmentSignalCollected
RepositoryfindHighPerforming()
↓ 下游:消費 課程知識庫 的議題(OHS/Published Language)|⇄ 市場情報 Shared Kernel
品牌用語規範存哪?高成效文案範例怎麼標記?開信/點擊數據從哪匯出?
🟨 中台 · 企劃・知識工廠
課程知識庫 Knowledge Graph核心 ★中台SA-04
語彙:知識卡 KnowledgeCard · 來源權威 SourceAuthority(A/B/C) · 議題 Topic · 風格側寫 StyleProfile · 核可閘 D2 Gate · 溯源 Evidence
◆ 知識卡 KnowledgeCard
Entities三元組 Triple · 證據 Evidence[]
Value Objects來源 Source · 來源權威 A/B/C · piiFlag · 審核狀態
Invariant未核可卡不可被問答引用(D2 閘);未過驗證的髒三元組不進圖
Commandsgrade() approve() attachEvidence()
EventsKnowledgeExtracted · CardApproved
RepositoryfindApprovedByTopic() · findByAuthority(A/B/C)
◆ 議題建議 TopicRecommendation
Value Objects命名建議 · 市場依據 · 相近歷史成效
Invariant只從核可卡集生成;產出必附引用來源
Commandsrecommend(季度) · Hybrid RAG(BM25+向量+圖→rerank)
EventsTopicRecommended
◆ 風格側寫 StyleProfile
Value Objects命名風格 · 術語表(per-tenant few-shot 偏好集)
CommandslearnFromSamples() tune()
↑ OHS 對外發布議題給 行銷/專案|⇄ 解析(Docling) 與 教材 共享核心 SK|↑ 消費 個資 掃描
來源權威 A/B/C 判準?租戶自訂 or 通用?風格側寫要不要人工微調閘?成效回饋訊號源(續約/觀看)怎麼進來?
教材製作 Courseware支援中台SA-05
語彙:講義 Courseware · 品牌模板 BrandTemplate · 解析 Parse(Docling) · 品質檢核
◆ 講義 Courseware
Value Objects版面結構 · 品牌合規狀態
Invariant不動講師內容,只動版面;定稿前須過錯字+個資檢核
Commandsparse() applyTemplate() checkQuality() archive()
EventsCoursewareStandardized · QualityIssueFlagged
RepositoryfindByCourse()
◆ 品牌模板 BrandTemplate
Value Objects版型 · 字體 · 色彩 · 重點框
Invariant視覺規格須經高層核定(呼應董事長品牌訴求)
⇄ 解析 SK 與 知識庫|⇄ ACL 上游對接 講師(缺口 G1)|→ 發布通知(公開班後台/專班前台)
品牌規格誰核定?講師案例個資去識別化的責任歸屬?
🟦 後台 · 行政・零容錯
報名與異動 Enrollment支援後台SA-07
語彙:報名 Enrollment · 異動申請 ChangeRequest · 退費 Refund · 學員快照 StudentSnapshot
◆ 報名 Enrollment
Value Objects學員快照 · 狀態(報名→異動→取消)
Commandsregister() change() cancel()
EventsEnrolled · ChangeApplied
◆ 異動申請 ChangeRequest
Value Objects異動類型 · 附件(退費同意書)
Invariant退費類異動需同意書齊全才可執行(人工 gate)
Commandsvalidate() chase()(缺件追件) apply()
EventsChangeRequested · ChangeApplied
RepositoryfindPending()
⇄ ACL 寫回 官網 + CRM(防外部 schema 滲入)|← 退費 gate 依 定價/退費(缺口 G5)
異動類型全集?寫回官網/CRM 失敗如何補償?退費同意書的簽署流程?
開課營運 Course Ops支援後台SA-06
語彙:開課場次 CourseOffering · 課前巡檢 PrepChecklist · 會議 Meeting · SOP · 燈號
◆ 開課場次 CourseOffering
Value Objects上課方式 · 會議連結 · 助教
Commandsschedule() bindMeeting()
◆ 課前巡檢 PrepChecklist
Entities檢核項 CheckItem[]
Value Objects燈號 紅黃綠 · 時點 T-7/T-3/T-1
Invariant所有必要項全綠才判定 ready
Commandsinspect() remind() escalate()
EventsPrepItemMissing · OfferingReady
RepositoryfindByDate(未來7天)
⇄ ACL 會議(Webex/Teams/Calendar)|使用 通知引擎|← 師資/助教 來自 講師(G1)|← 資源排程(G9)
SOP 檢核項依課型分幾套?升級規則?教室/會議室/助教撞期誰擋?
出席與結案 Attendance & Closing支援後台SA-09
語彙:出席紀錄 AttendanceRecord · 結業證書 Certificate · 課程結案 CourseClosure · 問卷 Survey
◆ 出席紀錄 AttendanceRecord
Value Objects簽到退 · 上線時長
Invariant出席時數達標才可發證
Commandsreconcile()(Webex/Teams/LINE 三源合併)
EventsAttendanceConfirmed
◆ 結業證書 Certificate · 課程結案 CourseClosure
Value Objects證號 · 學分/時數|結案包(簽到表/證書/送審/問卷)
Invariant結案包檢核齊全才可送出;主管覆核為最後閘
Commandsissue() assemble() submit()
EventsCertificateIssued · CourseClosed
→ 時數應流向 證照學分(缺口 G3)|→ 問卷應流向 學習成效(缺口 G6)|← 名單/會議來源同 開課營運
時數認列規則?證號編碼規則?結案硬檢核清單有哪些?
金流與財務 Order & Finance支援後台SA-08
語彙:訂單 Order · 合約 Contract · 應收款 Receivable · 發票 Invoice
◆ 訂單 Order
Value Objects課程 · 金額 Money · 方案
Invariant訂單金額須與課程價目一致(不一致落人工)
Commandsplace() reconcile()
EventsOrderPlaced
◆ 合約 Contract · 應收款 Receivable
Value Objects合約編號 · 用印 · 附件|付款狀態 · 匯款日
Commandsdraft() assignNumber() fileSigned()(OCR) settle()
EventsContractSigned · PaymentReceived
RepositoryfindByNumber() · findOverdueReceivable()
← 定價規則 依 定價(缺口 G4)|→ 會計交接|⇄ ACL 官網/CRM
課程價目對照表在哪?合約編號規則?OCR 信心門檻多少落人工?
⬜ 跨切 · 基礎/通用
通知引擎 Notification通用跨切
◆ 通知 Notification
Value Objects收件人 · 通路(LINE/Email/簡訊) · 模板 · 狀態
Commandssend() retry()
EventsNotificationSent · NotificationFailed
Open Host Service:統一發送契約,被 專案/巡檢/異動/結案 訂閱
三竹簡訊 / LINE OA 帳號權限?失敗重送與退避策略?
資料治理與個資 Data Governance / PII支援跨切
◆ 個資掃描 PIIScan
Value ObjectspiiFlag · 位置 · 動作(遮罩/hash/加密) · 來源分級
Invariant受監管租戶:未過 PII 掃描不得入庫/簽約(合約門檻)
Commandsscan()(Presidio+NER) redact()
EventsPIIFlagged
橫切幾乎所有脈絡(學員個資高風險);金融客戶簽約門檻
分級加嚴規則?金融客戶合約要求的具體清單?
身分與權限 Identity & Access通用跨切
角色分級授權(業務見自己客戶、主管見全部);查詢/存取留痕 Audit。
角色矩陣?誰能看金額/個資?稽核保存期?
文件槽 Document Store通用跨切
J槽(課程) · K槽(講義) · 掃描歸檔;版本與存取控管。
存取如何做 API 化?掃描命名規則統一?
🟧 缺口 · 尚未找出(提案骨架,待專家驗證)
會員與續約 Membership核心?缺口 G2
提案語彙:會員 Member · 聯誼會 FellowshipMeeting · 續約 MembershipRenewal · 參與度 Engagement
◆ 會員 Member(提案)
Value Objects會籍狀態 · 續約日 · 參與度(出席/影片觀看)
Invariant續約決策應綁定 學習成效 + 參與度(與缺口 G6 連動)
EventsMembershipRenewed · MemberChurned
↔ 續約飛輪核心:學習成效(G6) → 續約 → 回饋 課程知識庫。全案價值驅動卻無人認領。
會員分級?續約決策看哪些訊號?誰負責會員經營?18 支影片 9 支零觀看要不要納入參與度?
講師管理 Instructor支援缺口 G1
提案語彙:講師 Instructor · 講師合作 Engagement · 助教 TA(G8) · 鐘點費 Fee
◆ 講師 Instructor(提案)
Value Objects專長 · 鐘點費 · 檔期 · 評鑑分
EventsInstructorEngaged · SessionRated
上游供給 教材製作 與 開課營運(含助教 G8);目前散見四處無擁有者
師資庫誰維護?鐘點費規則?講師評鑑怎麼做?助教誰管、如何排?
證照與學分 CE Credits核心?缺口 G3
提案語彙:學分認證 CreditAccreditation · 時數申報 HoursFiling · 證照別 License
◆ 學分認證 CreditAccreditation(提案)
Value Objects證照別 · 換證時數 · 主管機關(金研院/證基會/信託公會)
Invariant時數認列須對應核准課程;申報錯誤可追溯責任
EventsCreditAccredited · HoursFiled
← 接收 出席與結案 的時數;金融研訓的招牌價值,目前只在結案露「證號」一角
哪些課給時數?如何報主管機關?時數錯了誰扛?
定價與退費 Pricing / Refund支援缺口 G4/G5
提案語彙:價目 PriceBook · 定價規則 · 退費政策 RefundPolicy(Specification)
◆ 價目 PriceBook · Spec RefundPolicy(提案)
Value Objects公開班/專班價 · 會員價 · 團報折扣 · 退費級距(開課前天數)
Invariant訂單金額與退費比例皆須由規則導出,不靠人腦
→ 供給 金流財務 的定價;→ 供給 報名異動 的退費 gate。目前只有「試算」無「規則」。
定價權在誰?折扣權限級距?退費比例的天數級距表?
學習成效 Learning Effectiveness支援缺口 G6
提案語彙:成效評估 Effectiveness · 滿意度 · 學習成果 · 課後追蹤
◆ 成效評估 Effectiveness(提案)
Value Objects滿意度 · 學習成果 · 課後追蹤指標
EventsEffectivenessScored
← 接收 出席結案 的問卷;→ 餵 會員續約(G2) 與 課程知識庫 成效回饋。續約飛輪的中間環節。
怎麼定義「課成功」?滿意度以外還看什麼(續報率/推薦/成果測驗)?
營運分析與排程 Analytics / Scheduling支援缺口 G7/G9
提案語彙:讀模型 ReadModel(週報/Dashboard) · 資源排程 ResourceBooking(室/助教)
◆ 讀模型 ReadModel · 資源檔期 ResourceBooking(提案)
Value Objects週報 · 開班率 · 營收|資源 · 檔期 · 衝突
Invariant同一資源(室/助教)同時段不可重複預約
跨脈絡讀模型(訂閱各脈絡事件投影);資源排程供給 開課營運
誰要看什麼數字(口徑)?教室/助教如何避免撞期?
05

🔍 尚未找出的概念 · 蒸餾缺口

現有 workflow 沒認領,但領域需要
為什麼會漏 9 條 workflow 出自學員「自己每天在痛的事」=作業層的自動化。作業層看不見的,是橫跨部門的實體(講師、會員、學分)與規則型知識(定價、退費、成效判準)——沒有單一角色每天碰它們,就沒人把它們寫進需求單。DDD 的蒸餾正是用來逼出這些「沒人喊、但系統少不了」的概念。
缺口DDD 型別為什麼是缺口(線索)建議分類訪談要問
G2 會員與續約
Membership
Bounded Context「續約」在多份需求單被當成價值驅動,18 支會員影片 9 支零觀看也點名會員經營,但沒有任一 workflow 擁有會員生命週期。聯誼會、會員影片、續約全散落。核心會員分級?續約決策看什麼?誰負責會員經營?
G3 證照與學分
CE Credits
Bounded Context / Aggregate金融從業的在職訓練換證時數是金融研訓院的招牌價值,但只在「結案」以「證號」露一角,缺時數認列、主管機關(金研院/證基會/信託公會)送審。核心?哪些課給時數?如何報主管機關?時數錯了誰扛?
G1 講師管理
Instructor
Bounded Context講師散見 課程/教材/巡檢/結案,卻無脈絡擁有講師本身:師資庫、鐘點費、檔期、評鑑、助教(G8)。教材/開課都上游依賴它。支援講師怎麼找/評/排?鐘點費規則?助教誰管?
G4/G5 定價與退費
Pricing / Refund
Aggregate / SpecificationPM 有「報價試算」,但定價規則(公開班/專班/會員價/團報)與退費比例(開課前天數)是規則型知識,被藏在人腦與 Excel,沒被模型化。支援價目怎麼定?折扣誰能給?退費比例級距?
G6 學習成效
Effectiveness
Subdomain問卷資料在結案已收,但「課程好不好 → 要不要續約 / 改哪門課」的成效評估閉環沒人建。它正是 G2 續約 與 KB 成效回饋 的中間環節。支援怎麼定義「課成功」?滿意度以外還看什麼?
G7/G9 營運分析與排程
Analytics / Scheduling
Read Model / Subdomain週報/Dashboard/開班率散在 PM+CS,無統一讀模型;教室/會議室/助教資源排程與衝突偵測只在巡檢露臉,無擁有者。支援誰要看什麼數字?資源(室/助教)如何避免撞期?
最大單一洞見 三個缺口 會員續約(G2) → 學習成效(G6) → 課程知識庫回饋(核心) 串成一條「續約飛輪」:學得好→續約→回饋讓知識庫更準→課更好。這條飛輪是金融研訓院真正的核心領域,卻整條沒有任何 workflow 覆蓋——若只做學員提的 9 條,等於把引擎裝好卻沒接上傳動軸。建議董事長訪談以此為主軸。
06

模型健康度 · DDD 診斷

此為目標草模的自評
Ubiquitous Language 名稱皆用領域語(機構/議題/巡檢/結案),可讓 TFF 專家直接讀懂。
Bounded Contexts 明確 9 已覆蓋 + 4 跨切 + 6 缺口,邊界與台別對齊(Conway)。
小聚合 每根一致性邊界小,跨根以 ID/事件;未見巨型聚合。
行為型模型 已標不變式與方法,但多數細節待與專家補全(非貧血)。
Domain Events 跨聚合 成交→建案、結案→發證等以過去式事件解耦。
ACL 於外部整合 官網/CRM/Webex 皆標 ACL;防外部 schema 滲入核心。
核心領域已辨識 課程知識庫+續約飛輪=核心;通知/發票/身分歸通用。
缺口誠實揭露 未把缺口當已解;6 個缺口明列為訪談題。
自評 8.5 / 10 扣分在「行為型模型」仍偏骨架、且整體尚未經領域專家驗證(DDD 第一原則)。這是刻意的——本圖是訪談用的策略草模,把「該問而沒問」的概念逼到檯面上,讓董事長/單位主管訪談時逐張確認或推翻。