Launch Atlas logoLaunch.Atlas
#27Design系統分析系統設計架構師

Sequence Diagram · 時序圖

把跨服務互動的順序、失敗、回滾畫清楚

Sequence Diagram · 時序圖 · 卡片插圖
CHOOSE YOUR MODE

先決定你現在是要學,還是要在專案裡做

網站負責解釋與分發工作包;真正的 Repository 掃描、缺口判斷與文件產出交給 Coding Agent。

SDLC 實作課 · 交付物練習

先理解這份文件替你消除什麼不確定

把跨服務互動的順序、失敗、回滾畫清楚

跨服務 flow 用文字描述「A 呼叫 B 然後 B 呼叫 C」很容易遺漏 timeout、retry、失敗回滾的細節。

Sequence Diagram 強迫把時間順序、訊息類型、失敗路徑、補償交易畫出來,是發現 race condition 與 idempotency 漏洞的最便宜工具。

不畫,整合測試才發現第三方失敗時 order 變孤兒、付款重複扣款。

OWNER & HANDOFF

誰負責、交給誰

主責: SA / Architect

協作: BE(驗證實作可行)、SRE(補 failure mode)、QA(設計整合測試)

下游收件: BE 實作、QA 寫 integration test、SRE 設計 alert

WHEN TO USE

何時值得做

REQUIRED

必要時機: 跨 ≥ 3 服務、有異步事件、有交易補償、外部 API 整合

SKIP

不需要時: 單服務內部呼叫、純 CRUD

CAUTION

常見誤用: 只畫 happy path,沒畫 timeout / retry / rollback;業界實踐強調重試不是免費的,必須畫 backoff + jitter + idempotency

看懂5 段骨架知道每段要留下哪一種判斷
看會雙版本範本先用輕量版練習,再讀完整版
做出自己的草稿手動貼到 Claude Code、Codex 或其他 Agent
  1. 01讀大綱
  2. 02比範本
  3. 03填素材
  4. 04貼提示詞
  5. 05對照驗收

Anatomy · 文件解剖

輕量版先回答 5 個核心章節

章節名稱可以因團隊調整,但每一段要求的判斷不能被省略。先讀問題,再看格式。

  1. 01

    Executive Summary

    範本必要章節

    3-5 行說明本流程涵蓋的 use case、跨幾個服務、主要 failure 點

  2. 02

    Happy Path

    範本必要章節

    把已確認的內容、判斷依據與仍待補充的資訊清楚分開。

  3. 03

    Failure Path(至少 1 條)

    範本必要章節

    把已確認的內容、判斷依據與仍待補充的資訊清楚分開。

  4. 06

    Idempotency & Timeout(核心)

    範本必要章節

    把已確認的內容、判斷依據與仍待補充的資訊清楚分開。

  5. 12

    Confidence & Sources & TODO

    範本必要章節

    把已確認的內容、判斷依據與仍待補充的資訊清楚分開。

Study · 對照學習

同一份交付物,先練核心,再看完整深度

輕量範本適合第一次練習與 MVP;完整範本保留跨職能交棒需要的細節。兩者都要求未知事項保持可見。

SmartTrip 實例待補

這張卡目前提供已審定的輕量與完整範本;不以 AI 臨時生成的內容冒充實際案例。

LIGHT TEMPLATE

30 分鐘內先完成核心章節。

---
doc_type: "sequence-diagram"
variant: "light"
status: "draft"
owner: "<your-name>"
last_updated: "YYYY-MM-DD"
upstream:
  required: ["use-case", "api-spec"]
  optional: ["adr"]
---

# Sequence: <use-case-name>

**Status:** Draft · **Owner:** <SA/Architect> · **Last updated:** YYYY-MM-DD

> [!IMPORTANT]
> **AI 填寫規則:** 本範本 5 段(編號 1, 2, 3, 6, 12),全部必填——刻意沿用完整版的章節編號讓兩版可對照。每條 message 行內加 `(依據:api-spec §endpoint)`;每欄位帶 `[H]/[M]/[L]` confidence badge;缺資料寫 `_TODO: 需要 XXX_` 不編造服務;**至少畫 1 條 failure path**(純 happy path 不接受);每條 retry 必含 backoff + max attempts + idempotency 標記。

---

## 1. Executive Summary

<!-- ai-fill: 3-5 行說明本流程涵蓋的 use case、跨幾個服務、主要 failure 點 -->

<3-5 行說明>

> **TL;DR:** <一句話:A → B → C 跨服務鏈,主要 failure 點在 X>

---

## 2. Happy Path

```mermaid
sequenceDiagram
    actor User
    participant FE as Web FE
    participant API as Order API
    participant DB as Order DB
    User->>FE: submit order
    FE->>API: POST /v1/orders (Idempotency-Key)
    API->>DB: INSERT order
    DB-->>API: ok
    API-->>FE: 201 Created
    FE-->>User: 顯示成功
```

### Messages

| Seq | From | To | Name | Sync/Async | Idempotency | Confidence |
|---|---|---|---|---|---|---|
| 1 | User | FE | submit order | sync | n/a | **[H]** |
| 2 | FE | API | POST /v1/orders | sync | required (header) | **[H]** |
| 3 | API | DB | INSERT order | sync | n/a (FK + uniq) | **[H]** |

---

## 3. Failure Path(至少 1 條)

### Path: API timeout

```mermaid
sequenceDiagram
    actor User
    participant FE as Web FE
    participant API as Order API
    User->>FE: submit order
    FE->>API: POST /v1/orders (Idempotency-Key=K)
    Note over API: > 5s no response
    FE-->>User: 顯示「處理中,請稍後重試」
    User->>FE: retry submit
    FE->>API: POST /v1/orders (same Idempotency-Key=K)
    API-->>FE: 201 Created (回原 response)
```

- **Trigger:** API > 5s 未回
- **Compensation:** client retry with same idempotency key;server 回原 response 而非建第二筆
- **Consumer visible:** FE 顯示「處理中,請稍後重試」

---

## 6. Idempotency & Timeout(核心)

| Endpoint | Idempotency-Key | TTL | On duplicate | Client timeout |
|---|---|---|---|---|
| `POST /v1/orders` | required (UUID v4) | 24h | 回原 response | 5s |

---

## 12. Confidence & Sources & TODO

- **整份文件最低 confidence 欄位:** <列出所有 [L] 與 [M]>
- **Fabricated assumptions(推測但 input 未明說):**
  - <假設 1:例:假設 client 會帶 Idempotency-Key>
- **Highest-value next input:** <下一份最該補的:實測 timeout 分布 / SRE alert 策略>

### TODO(缺資料)

- _TODO: 需要 SRE 確認 5s timeout 是否與 SLO 一致_

---

> [!CAUTION]
> **輸出前 AI 自檢:**
> - [ ] 5 段 H2 章節齊全(編號 1, 2, 3, 6, 12,刻意不連號)
> - [ ] Happy Path 含 mermaid sequenceDiagram
> - [ ] Failure Path 至少 1 條(純 happy 不接受)
> - [ ] 每條 POST/PATCH message 標 Idempotency-Key
> - [ ] 每個 client 呼叫標 timeout
> - [ ] 無 YAML / JSON schema 輸出(用 mermaid + 表格表達)

Practice · 換你試做

先用自己的話交代素材,不需要先學會工程術語

確定的就寫,不確定的留白。下一步要做的是請 Agent 找缺口,不是讓它替你猜一套合理答案。

可以先留白;複製提示詞後再到 Coding Agent 裡補充。

AI Practice · 手動三步

先問、再寫、最後審,不把整條流程鎖死

每一步都是獨立工作包。你可以停下補資料、修改限制或重做某一步,不需要服從固定的 Agent 接力流程。

STEP 01

只找阻擋文件成立的未知

先補會改變範圍、判斷或驗收結果的資訊,不急著寫文件。

我要製作「Sequence Diagram · 時序圖」。先不要產出文件。

請根據我的素材,找出會影響這份文件正確性或可執行性的未知事項,一次最多問 5 題。

每題請包含:
1. 問題
2. 為什麼現在必須知道
3. 它會影響哪個章節或決定

已經回答的事不要重問;可以延後的事標成「待決策」;不要替我猜答案。

本文件的核心章節:Executive Summary、Happy Path、Failure Path(至少 1 條)、Idempotency & Timeout(核心)、Confidence & Sources & TODO

複製後,請在標示位置貼上自己的素材。

Review · 自己驗收

文件存在,不代表下一個角色真的能使用

逐條檢查 Agent 的輸出。人類負責需求、限制與驗收,也必須能說明重要結論從哪裡來。

CHECKED0 / 6
NEXT HANDOFF

帶著這份文件,繼續到「Tech Spike · 技術探索」

下一張卡會接住新的決策問題;不用一次把整條 SDLC 全做完。

前往下一張卡