---
code: "SCH-19"
id: "c-sch-porter5"
tab: "schemas"
kind: "schema"
title: "Porter 5 Forces · 산업 구조 분석"
library: "SVG"
deps: ["svg"]
load: "low"
pasteKind: "schema-svg"
family: "forces"
dataShape: "5-cell diagram with 중심+5압력 axis"
tasks: ["structure ideas", "explain process", "choose communication frame"]
tags: ["forces", "중심+5압력", "5cells", "Porter", "5 Forces", "산업분석", "경쟁"]
gallery: "https://graph.heal7.com/#SCH-19"
js: "/sku/SCH-19.js"
---

# [SCH-19] Porter 5 Forces · 산업 구조 분석

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

## 언제 가져가나
중앙 산업 경쟁 + 4방향 외부 압력 — 산업 매력도와 진입/투자 의사결정.

**응용** 신규 시장 진입 평가, M&A 산업 분석, 사업계획서 외부 환경 분석.

## 데이터 모양
- family: `forces`
- dataShape: 5-cell diagram with 중심+5압력 axis
- tasks: structure ideas, explain process, choose communication frame
- tags: forces, 중심+5압력, 5cells, Porter, 5 Forces, 산업분석, 경쟁

- schema.type: `forces`
- schema.cells: `5`
- schema.axis: `중심+5압력`


## 의존
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 = `
    <circle cx="200" cy="115" r="42" fill="rgba(232,192,105,.22)" stroke="${gold}" stroke-width="2"/>
    <text x="200" y="113" text-anchor="middle" fill="${gold}" font-size="11" font-weight="700">산업 내</text>
    <text x="200" y="127" text-anchor="middle" fill="${gold}" font-size="11" font-weight="700">경쟁 강도</text>
    ${[
      [200, 30,'신규 진입자',royal,'위협'],
      [60, 115,'공급자',plum,'교섭력'],
      [340,115,'구매자',rose,'교섭력'],
      [200,200,'대체재',teal,'위협']
    ].map(([cx,cy,lab,c,sub2])=>`
      <rect x="${cx-58}" y="${cy-18}" width="116" height="36" rx="8" fill="${fill1}" stroke="${c}" stroke-width="1.5"/>
      <text x="${cx}" y="${cy-2}" text-anchor="middle" fill="${fg}" font-size="11" font-weight="600">${lab}</text>
      <text x="${cx}" y="${cy+12}" text-anchor="middle" fill="${sub}" font-size="10">${sub2}</text>
    `).join('')}
    ${[[200,73,200,48],[105,115,142,115],[295,115,258,115],[200,157,200,182]].map(([x1,y1,x2,y2])=>`<path d="M ${x1} ${y1} L ${x2} ${y2}" stroke="${gold}" stroke-width="1.5" opacity=".55" marker-end="url(#sch-arr)"/>`).join('')}
  `;
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-19
- raw js: https://graph.heal7.com/sku/SCH-19.js

```js
`
    <circle cx="200" cy="115" r="42" fill="rgba(232,192,105,.22)" stroke="${gold}" stroke-width="2"/>
    <text x="200" y="113" text-anchor="middle" fill="${gold}" font-size="11" font-weight="700">산업 내</text>
    <text x="200" y="127" text-anchor="middle" fill="${gold}" font-size="11" font-weight="700">경쟁 강도</text>
    ${[
      [200, 30,'신규 진입자',royal,'위협'],
      [60, 115,'공급자',plum,'교섭력'],
      [340,115,'구매자',rose,'교섭력'],
      [200,200,'대체재',teal,'위협']
    ].map(([cx,cy,lab,c,sub2])=>`
      <rect x="${cx-58}" y="${cy-18}" width="116" height="36" rx="8" fill="${fill1}" stroke="${c}" stroke-width="1.5"/>
      <text x="${cx}" y="${cy-2}" text-anchor="middle" fill="${fg}" font-size="11" font-weight="600">${lab}</text>
      <text x="${cx}" y="${cy+12}" text-anchor="middle" fill="${sub}" font-size="10">${sub2}</text>
    `).join('')}
    ${[[200,73,200,48],[105,115,142,115],[295,115,258,115],[200,157,200,182]].map(([x1,y1,x2,y2])=>`<path d="M ${x1} ${y1} L ${x2} ${y2}" stroke="${gold}" stroke-width="1.5" opacity=".55" marker-end="url(#sch-arr)"/>`).join('')}
  `
```

## 시나리오
- 신규 시장 진입 평가 — 5 압력의 강도
- M&A 산업 분석 — 타겟 산업의 구조
- 사업계획서 외부환경 분석
- 경쟁사 차별화 전략 도출 시 외부 진단

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

