---
code: "SCH-16"
id: "c-sch-tows"
tab: "schemas"
kind: "schema"
title: "TOWS · 액션 매트릭스"
library: "SVG"
deps: ["svg"]
load: "low"
pasteKind: "schema-svg"
family: "matrix"
dataShape: "4-cell diagram with 외부×내부 액션 axis"
tasks: ["structure ideas", "explain process", "choose communication frame"]
tags: ["matrix", "외부×내부 액션", "4cells", "TOWS", "SO/ST/WO/WT", "전략 액션"]
gallery: "https://graph.heal7.com/#SCH-16"
js: "/sku/SCH-16.js"
---

# [SCH-16] TOWS · 액션 매트릭스

> AI 붙여넣기 카드. 갤러리 런타임(`main.js`)이 아니라 이 파일을 가져와라.

## 언제 가져가나
SWOT 진화형 — 내부×외부 교차로 "그래서 무엇을 할 것인가" 4가지 액션을 도출.

**응용** SO(공세)·ST(차별화)·WO(보완)·WT(회피) 전략, SWOT 분석 후속 액션 플랜.

## 데이터 모양
- family: `matrix`
- dataShape: 4-cell diagram with 외부×내부 액션 axis
- tasks: structure ideas, explain process, choose communication frame
- tags: matrix, 외부×내부 액션, 4cells, TOWS, SO/ST/WO/WT, 전략 액션

- schema.type: `matrix`
- schema.cells: `4`
- schema.axis: `외부×내부 액션`


## 의존
svg · load `low` · library `SVG`

## 붙여넣는 법
1. 라이브러리 없음. svg viewBox 0 0 400 240
2. 아래 body 를 svg 안에 넣는다
3. 색 변수(`${gold}` 등)는 T 토큰으로 치환한다

```js
const T = {
  "bg": "transparent",
  "fg": "#ece8f5",
  "sub": "#a59bbd",
  "grid": "rgba(255,255,255,.08)",
  "gold": "#e8c069",
  "royal": "#6b8cff",
  "rose": "#e07a9f",
  "teal": "#6dd2c4",
  "plum": "#b487e8"
};
const gold = T.gold, royal = T.royal, rose = T.rose, teal = T.teal, plum = T.plum, fg = T.fg, sub = T.sub;
const stroke = 'rgba(255,255,255,.18)';
const fill1 = 'rgba(232,192,105,.10)';
const fill2 = 'rgba(107,140,255,.10)';
const host = document.querySelector('#chart');
const body = `
    <text x="14"  y="40" fill="${sub}" font-size="10">외부 ↓ / 내부 →</text>
    <text x="135" y="40" text-anchor="middle" fill="${gold}" font-size="11" font-weight="700">강점 (S)</text>
    <text x="290" y="40" text-anchor="middle" fill="${royal}" font-size="11" font-weight="700">약점 (W)</text>
    <text x="14"  y="100" fill="${teal}"  font-size="11" font-weight="700">기회</text>
    <text x="14"  y="113" fill="${teal}"  font-size="10">(O)</text>
    <text x="14"  y="180" fill="${rose}"  font-size="11" font-weight="700">위협</text>
    <text x="14"  y="193" fill="${rose}"  font-size="10">(T)</text>
    ${[
      [60, 50,'SO','공세 전략','강점으로 기회 극대화', gold],
      [215,50,'WO','보완 전략','약점 보완하며 기회 활용', plum],
      [60,135,'ST','차별화','강점으로 위협 회피',     royal],
      [215,135,'WT','회피·축소','약점 + 위협 최소화',  rose]
    ].map(([x,y,k,lab,desc,c])=>`
      <rect x="${x}" y="${y}" width="155" height="80" rx="8" fill="${fill1}" stroke="${c}" stroke-width="1.5"/>
      <text x="${x+12}" y="${y+24}" fill="${c}" font-size="16" font-weight="700">${k}</text>
      <text x="${x+45}" y="${y+24}" fill="${fg}" font-size="12" font-weight="600">${lab}</text>
      <text x="${x+12}" y="${y+50}" fill="${sub}" font-size="10">${desc}</text>
    `).join('')}
    <text x="200" y="225" text-anchor="middle" fill="${sub}" font-size="11">SWOT → TOWS · 분석에서 액션으로</text>
  `;
host.innerHTML = '<svg viewBox="0 0 400 240" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" style="overflow:visible">' + (typeof body === 'string' ? body : '') + '</svg>';
```

## 원본 factory (갤러리 정본 발췌)
- file: `frontend/js/graph-gallery/main.js`
- lines: 3911-4470
- gallery: https://graph.heal7.com/#SCH-16
- raw js: https://graph.heal7.com/sku/SCH-16.js

```js
`
    <text x="14"  y="40" fill="${sub}" font-size="10">외부 ↓ / 내부 →</text>
    <text x="135" y="40" text-anchor="middle" fill="${gold}" font-size="11" font-weight="700">강점 (S)</text>
    <text x="290" y="40" text-anchor="middle" fill="${royal}" font-size="11" font-weight="700">약점 (W)</text>
    <text x="14"  y="100" fill="${teal}"  font-size="11" font-weight="700">기회</text>
    <text x="14"  y="113" fill="${teal}"  font-size="10">(O)</text>
    <text x="14"  y="180" fill="${rose}"  font-size="11" font-weight="700">위협</text>
    <text x="14"  y="193" fill="${rose}"  font-size="10">(T)</text>
    ${[
      [60, 50,'SO','공세 전략','강점으로 기회 극대화', gold],
      [215,50,'WO','보완 전략','약점 보완하며 기회 활용', plum],
      [60,135,'ST','차별화','강점으로 위협 회피',     royal],
      [215,135,'WT','회피·축소','약점 + 위협 최소화',  rose]
    ].map(([x,y,k,lab,desc,c])=>`
      <rect x="${x}" y="${y}" width="155" height="80" rx="8" fill="${fill1}" stroke="${c}" stroke-width="1.5"/>
      <text x="${x+12}" y="${y+24}" fill="${c}" font-size="16" font-weight="700">${k}</text>
      <text x="${x+45}" y="${y+24}" fill="${fg}" font-size="12" font-weight="600">${lab}</text>
      <text x="${x+12}" y="${y+50}" fill="${sub}" font-size="10">${desc}</text>
    `).join('')}
    <text x="200" y="225" text-anchor="middle" fill="${sub}" font-size="11">SWOT → TOWS · 분석에서 액션으로</text>
  `
```

## 시나리오
- SO 공세 — 강점으로 기회 극대화
- ST 차별화 — 강점으로 위협 회피
- WO 보완 — 기회 활용 위해 약점 보완
- WT 회피 — 약점+위협 영역 축소·철수

## 관련 SKU
`c-sch-swot`, `c-sch-quad`

