Files
awoooi/docs/adr/ADR-049-figma-code-connect-design-system.md
OG T c9c60c3a61
Some checks failed
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
Type Sync Check / check-type-sync (push) Failing after 22s
feat(mcp-integrations): Phase S 架構修復 + MCP 整合基礎建設
Phase S 技術債修復 (首席架構師審查 82→完整):
- S-01: generate_alert_fingerprint 移至 AlertAnalyzer.generate_fingerprint() staticmethod
- S-04: 移除 Pydantic v2 deprecated json_encoders (直接用原生 datetime 序列化)

Sentry MCP 整合 (Phase 23):
- ADR-048: Sentry→OpenClaw AI Triage 架構決策
- sentry_webhook_service.py: parse/analyze/create_incident/build_message Service 層
- config.py: SENTRY_WEBHOOK_SECRET (Fail-Closed HMAC-SHA256)

Playwright MCP 整合 (短期):
- smoke.spec.ts: 5 頁面 E2E smoke test (home/dashboard/incidents/approvals/terminal)
- cd.yaml: E2E Smoke Test 步驟 + Telegram 🎭 Smoke 狀態通知

長期規劃 ADR:
- ADR-049: Figma Code Connect 設計系統同步
- ADR-050: Telegram 互動式 Incident 2.0 (6鍵 Inline Keyboard)
- ADR-051: Context7 依賴升級顧問 (Next.js 14→15, FastAPI 0.115→0.128)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 16:20:57 +08:00

5.1 KiB
Raw Blame History

ADR-049: Figma Code Connect 設計系統同步

項目 內容
狀態 📋 已批准,待實作
日期 2026-04-01
決策者 首席架構師 + 統帥
觸發 MCP 整合長期計畫

背景

前端 UI 元件與 Figma 設計稿可能產生漂移drift設計師在 Figma 更新了元件樣式或佈局,但 apps/web/src/components/ 下的 React 元件未同步更新,導致 QA 發現視覺差異時已累積大量技術債。

目前缺乏任何機制能夠:

  1. 讓設計師在 Figma 中直接看到對應的程式碼元件
  2. 在 Code Review 時確認 UI 實作與設計稿的一致性
  3. 系統化追蹤哪些元件存在 design-code drift

問題

面向 現況 目標
設計-代碼映射 無正式對應關係 Figma 元件 ↔ React 元件 1:1 映射
漂移偵測 手動 QA 發現 每週自動掃描確認映射狀態
設計師工作流 不知道對應哪支 component Figma Dev Mode 直接顯示程式碼

決策

使用 Figma Code Connect 建立 .figma.js 映射文件,將每個 Figma 元件對應到 React 元件的 import 與 props 結構。

定期(每週)使用 Figma MCP 掃描設計稿,確認映射是否需要更新。

架構

文件結構

apps/web/src/components/
├── ui/
│   ├── button/
│   │   ├── Button.tsx
│   │   └── Button.figma.js          ← Code Connect 映射
│   ├── card/
│   │   ├── Card.tsx
│   │   └── Card.figma.js
│   └── badge/
│       ├── Badge.tsx
│       └── Badge.figma.js
├── incident/
│   ├── IncidentCard.tsx
│   └── IncidentCard.figma.js
└── approval/
    ├── ApprovalCard.tsx
    └── ApprovalCard.figma.js

Code Connect 映射格式

// Button.figma.js
import figma from '@figma/code-connect'
import { Button } from './Button'

figma.connect(Button, 'https://www.figma.com/design/FILEID?node-id=NODE_ID', {
  props: {
    variant: figma.enum('Variant', {
      primary: 'primary',
      secondary: 'secondary',
      destructive: 'destructive',
    }),
    size: figma.enum('Size', {
      sm: 'sm',
      md: 'md',
      lg: 'lg',
    }),
    label: figma.string('Label'),
    disabled: figma.boolean('Disabled'),
  },
  example: ({ variant, size, label, disabled }) => (
    <Button variant={variant} size={size} disabled={disabled}>
      {label}
    </Button>
  ),
})

每週掃描流程

Claude Code + Figma MCP
  → get_design_context (核心元件節點)
  → get_code_connect_suggestions
  → 比對現有 .figma.js 映射
  → 輸出「drift report」
  → 若有差異 → 建立 GitHub Issue

實作計畫

P1核心 UI 元件(第 1 週)

元件 Figma 節點 React 路徑
Button TBD components/ui/button/Button.tsx
Card TBD components/ui/card/Card.tsx
Badge TBD components/ui/badge/Badge.tsx
Input TBD components/ui/input/Input.tsx
Modal TBD components/ui/modal/Modal.tsx

前置條件: 確認 Figma 文件 URL 與節點 ID需統帥提供

P2業務元件第 2-3 週)

元件 Figma 節點 React 路徑
IncidentCard TBD components/incident/IncidentCard.tsx
ApprovalCard TBD components/approval/ApprovalCard.tsx
AlertBanner TBD components/alert/AlertBanner.tsx
StatusBadge TBD components/status/StatusBadge.tsx

P3Storybook 整合(第 4 週,視現況決定)

  • 確認是否已有 Storybook 設置
  • 若已有:在 Story 中引用 Code Connect 映射
  • 若未有:評估導入成本,記入 INSPIRATION_LAB.md 待批准

工具需求

// package.json (apps/web)
{
  "devDependencies": {
    "@figma/code-connect": "^1.x"
  }
}

發布指令(需 Figma Personal Access Token

npx figma connect publish --token $FIGMA_ACCESS_TOKEN

注意事項

  1. Figma URL 需要統帥提供:在執行 P1 前,需要確認 Figma 設計稿的文件 ID 和各核心元件的節點 ID
  2. Token 管理FIGMA_ACCESS_TOKEN 需存入 K8s Secrets不得 hardcode
  3. 每週掃描:由 Claude Code + Figma MCP 執行,不需要新增 CI 步驟
  4. .figma.js 檔案不影響 build:只在開發環境和 Code Connect 發布時使用

影響

面向 影響
設計師 Figma Dev Mode 可直接看到對應元件的 import 和 props
前端開發 PR 時有明確參考,減少「我以為設計是這樣」問題
QA 視覺差異有跡可查drift report 提前預警
Build 時間 無影響,.figma.js 不參與 webpack/next build

相關文件