# UI/UX 디자인 인사이트 연구 메뉴 기획서

> **작성일**: 2026-03-08
> **상태**: 기획 중
> **라우트**: `/rd/design-insight`
> **모티브**: 기획디자인 스토리보드 에디터 (`/rd/planning-design`)

---

## 1. 개요

### 1.1 배경

기획디자인 메뉴는 ERP 화면을 **설계(Output)**하는 도구다.
그런데 좋은 설계를 하려면 **연구(Input)**가 먼저 필요하다.

```
연구 (이 메뉴)              설계 (기획디자인)
┌─────────────────┐        ┌─────────────────┐
│ 레퍼런스 수집    │        │ 스토리보드 작성   │
│ 패턴 분석       │ ──→    │ 와이어프레임 설계  │
│ 인사이트 정리    │        │ HTML 내보내기     │
│ 디자인 원칙 학습  │        │ 인쇄             │
└─────────────────┘        └─────────────────┘
```

현재 SAM ERP 화면을 만들 때 참고할 디자인 패턴이나 인사이트를 체계적으로 관리하는 도구가 없다. 외부 서비스(Dribbble, Mobbin 등)를 참고하지만 **우리 ERP에 맞는 패턴**을 축적하는 곳이 없다.

### 1.2 목적

SAM ERP 화면 개발에 필요한 **UI/UX 디자인 인사이트를 수집·분석·축적**하는 연구 도구

### 1.3 핵심 가치

| 가치 | 설명 |
|------|------|
| **패턴 축적** | "이 화면은 왜 좋은가?" — 반복 사용할 패턴을 라이브러리화 |
| **Before/After** | 개선 전후를 비교하여 디자인 결정의 근거를 기록 |
| **팀 학습** | 디자인 인사이트를 팀원과 공유, 일관된 UI 품질 유지 |
| **빠른 참조** | 새 화면 설계 시 기존 패턴을 즉시 찾아 재사용 |

---

## 2. 기술 아키텍처

### 2.1 기획디자인과 동일한 패턴

기획디자인 메뉴의 성공 패턴을 그대로 적용한다.

| 항목 | 선택 | 이유 |
|------|------|------|
| 프레임워크 | Alpine.js 단일 파일 SPA | 서버 API 없이 즉시 사용, MNG 기존 스택 |
| 저장 | localStorage | 서버 의존성 제거, 즉시 사용 가능 |
| 뷰 파일 | `resources/views/rd/design-insight/index.blade.php` | 단일 파일 구조 |
| 컨트롤러 | `RdController@designInsight()` | 기존 R&D 컨트롤러 확장 |
| 이미지 | Base64 Data URL (localStorage) | 서버 업로드 불필요 |

### 2.2 라우트

```php
// routes/web.php — R&D 그룹 내 추가
Route::get('/rd/design-insight', [RdController::class, 'designInsight'])
    ->name('rd.design-insight');
```

### 2.3 localStorage 키

| 키 | 용도 |
|----|------|
| `di_projects` | 연구 프로젝트 목록 (메인 저장소) |
| `di_current` | 현재 프로젝트 ID |
| `di_patterns` | 디자인 패턴 라이브러리 (프로젝트 간 공유) |

---

## 3. 화면 구조

### 3.1 전체 레이아웃

```
┌──────────────────────────────────────────────────────────────┐
│  툴바: [프로젝트명] [저장] [내보내기]     [뷰: 보드│리스트│갤러리] │
├──────────────────────────────────────────────────────────────┤
│  카테고리 탭: 전체 │ 레퍼런스 │ 분석 │ 패턴 │ Before/After      │
├────────┬─────────────────────────────────────────────────────┤
│        │                                                     │
│ 사이드  │  메인 콘텐츠 영역                                    │
│ 바     │                                                     │
│        │  ┌─────────┐ ┌─────────┐ ┌─────────┐              │
│ ◆ 프로  │  │ 인사이트  │ │ 인사이트  │ │ 인사이트  │              │
│   젝트  │  │ 카드 1   │ │ 카드 2   │ │ 카드 3   │              │
│   목록  │  │         │ │         │ │         │              │
│        │  │ 🏷️태그   │ │ 🏷️태그   │ │ 🏷️태그   │              │
│ ◆ 태그  │  └─────────┘ └─────────┘ └─────────┘              │
│   필터  │                                                     │
│        │  ┌─────────┐ ┌─────────┐                           │
│ ◆ 검색  │  │ 인사이트  │ │ + 새 카드 │                           │
│        │  │ 카드 4   │ │ 추가     │                           │
│        │  └─────────┘ └─────────┘                           │
│        │                                                     │
├────────┴─────────────────────────────────────────────────────┤
│  상태바: 카드 12개 │ 패턴 5개 │ 태그 8개                        │
└──────────────────────────────────────────────────────────────┘
```

### 3.2 뷰 모드 (3종)

| 뷰 | 설명 | 용도 |
|----|------|------|
| **보드 (Board)** | 칸반 스타일 카드 격자 배열 | 전체 현황 파악, 기본 뷰 |
| **리스트 (List)** | 테이블형 목록 (정렬/필터) | 대량 데이터 관리, 검색 |
| **갤러리 (Gallery)** | 이미지 중심 큰 썸네일 격자 | 시각적 비교, 레퍼런스 브라우징 |

---

## 4. 인사이트 카드 (핵심 데이터 단위)

### 4.1 카드 유형 (4종)

#### A. 레퍼런스 카드 (Reference)

외부/내부 화면 스크린샷을 수집하고 메모를 남긴다.

```
┌──────────────────────────────┐
│ 📷 [스크린샷 이미지]          │
│                              │
├──────────────────────────────┤
│ 📌 Notion 대시보드           │
│ "카드형 레이아웃이 정보 밀도를  │
│  유지하면서도 시각적으로 깔끔"  │
├──────────────────────────────┤
│ 출처: notion.so              │
│ 🏷️ 대시보드  카드  레이아웃    │
│ ⭐⭐⭐⭐☆                     │
└──────────────────────────────┘
```

| 필드 | 타입 | 설명 |
|------|------|------|
| `image` | string (Base64) | 스크린샷 이미지 |
| `title` | string | 제목 |
| `memo` | string | 인사이트 메모 (왜 좋은가/나쁜가) |
| `source` | string | 출처 (URL, 앱 이름 등) |
| `tags` | string[] | 태그 배열 |
| `rating` | number (1-5) | 평점 |
| `category` | string | 화면 카테고리 |

#### B. 분석 카드 (Analysis)

화면을 분석하고 디자인 원칙을 체크한다.

```
┌──────────────────────────────┐
│ 🔍 SAM 수주 목록 화면 분석    │
├──────────────────────────────┤
│ [스크린샷 + 어노테이션 오버레이]│
│   ①→ 검색 영역 너무 넓음      │
│   ②→ 버튼 정렬 불일치        │
│   ③→ 여백 불균형             │
├──────────────────────────────┤
│ ✅ 정렬 (Alignment)          │
│ ❌ 대비 (Contrast)           │
│ ✅ 반복 (Repetition)         │
│ ⚠️ 근접성 (Proximity)        │
├──────────────────────────────┤
│ 개선 제안:                    │
│ "검색 영역을 접을 수 있게 하고  │
│  버튼 그룹을 우측 정렬"        │
│ 🏷️ 목록화면  개선필요         │
└──────────────────────────────┘
```

| 필드 | 타입 | 설명 |
|------|------|------|
| `image` | string (Base64) | 분석 대상 스크린샷 |
| `annotations` | Annotation[] | 어노테이션 배열 (마커 번호, 좌표, 텍스트) |
| `principles` | object | CRAP 원칙 체크 (contrast, repetition, alignment, proximity) |
| `suggestion` | string | 개선 제안 |
| `severity` | string | 심각도 (info, warning, critical) |

#### C. 패턴 카드 (Pattern)

반복 사용할 UI 패턴을 템플릿으로 등록한다.

```
┌──────────────────────────────┐
│ 📐 검색 + 필터 + 목록 패턴    │
├──────────────────────────────┤
│ [패턴 와이어프레임 이미지]      │
├──────────────────────────────┤
│ 사용처:                       │
│  • 수주 목록                  │
│  • 거래처 목록                 │
│  • 품목 목록                  │
├──────────────────────────────┤
│ 구성 요소:                    │
│  ☑ 검색바 (상단 고정)         │
│  ☑ 필터 칩 (접기/펼치기)      │
│  ☑ 테이블 (정렬 가능)         │
│  ☑ 페이지네이션 (하단)        │
│  ☑ 액션 버튼 (우상단)         │
├──────────────────────────────┤
│ 🏷️ 목록  CRUD  테이블        │
│ 📊 사용빈도: ★★★★★ (12회)    │
└──────────────────────────────┘
```

| 필드 | 타입 | 설명 |
|------|------|------|
| `image` | string (Base64) | 패턴 와이어프레임 |
| `usedIn` | string[] | 사용처 목록 |
| `components` | Component[] | 구성 요소 체크리스트 |
| `guidelines` | string | 사용 가이드라인 |
| `frequency` | number | 사용 빈도 |

#### D. Before/After 카드 (Comparison)

디자인 개선 전후를 비교한다.

```
┌──────────────────────────────────────────┐
│ 🔄 거래처 상세 화면 리뉴얼               │
├───────────────────┬──────────────────────┤
│ ❌ Before         │ ✅ After             │
│ [이전 스크린샷]    │ [개선 스크린샷]       │
│                   │                      │
├───────────────────┴──────────────────────┤
│ 변경 포인트:                              │
│  1. 탭 구조 → 섹션 접기/펼치기 변경        │
│  2. 좌우 2컬럼 → 단일 컬럼 (모바일 대응)   │
│  3. 저장 버튼 하단 고정 → 상단 sticky      │
├──────────────────────────────────────────┤
│ 효과: 스크롤 40% 감소, 작업 완료 시간 단축  │
│ 🏷️ 상세화면  폼  리뉴얼                   │
└──────────────────────────────────────────┘
```

| 필드 | 타입 | 설명 |
|------|------|------|
| `beforeImage` | string (Base64) | 개선 전 스크린샷 |
| `afterImage` | string (Base64) | 개선 후 스크린샷 |
| `changes` | string[] | 변경 포인트 목록 |
| `effect` | string | 개선 효과 |

### 4.2 공통 필드

모든 카드 유형이 공유하는 기본 필드:

```json
{
  "id": "di_1709856000000_abc",
  "type": "reference",
  "title": "카드 제목",
  "createdAt": "2026-03-08T10:00:00",
  "updatedAt": "2026-03-08T15:30:00",
  "tags": ["대시보드", "카드", "레이아웃"],
  "category": "dashboard",
  "pinned": false,
  "archived": false
}
```

### 4.3 카테고리 (화면 유형별)

| 카테고리 | 코드 | 설명 |
|---------|------|------|
| 대시보드 | `dashboard` | 통계, KPI, 차트 화면 |
| 목록 | `list` | 테이블, 검색, 필터 화면 |
| 상세/폼 | `form` | 입력, 편집, 상세 보기 |
| 모달/팝업 | `modal` | 모달 다이얼로그, 확인창 |
| 네비게이션 | `navigation` | 사이드바, 탭, 메뉴 |
| 로그인/온보딩 | `auth` | 인증, 초기 설정 |
| 보고서/인쇄 | `report` | 인쇄용, PDF 출력 화면 |
| 기타 | `etc` | 분류 불가 |

---

## 5. 기능 상세

### 5.1 이미지 수집

| 기능 | 설명 |
|------|------|
| 파일 업로드 | 이미지 파일 선택 (PNG, JPG, GIF) |
| 클립보드 붙여넣기 | `Ctrl+V`로 스크린샷 즉시 붙여넣기 |
| 드래그 앤 드롭 | 이미지 파일을 카드 영역에 드롭 |

> **Ctrl+V 붙여넣기가 핵심** — 스크린샷 캡처 후 즉시 카드 생성이 워크플로우의 핵심

### 5.2 어노테이션 (분석 카드)

분석 카드에서 이미지 위에 마커를 추가하여 문제점이나 인사이트를 표시한다.

| 어노테이션 유형 | 설명 |
|---------------|------|
| 번호 마커 (①②③) | 이미지 위 클릭 → 번호 자동 증가, 하단 설명과 연동 |
| 영역 하이라이트 | 드래그로 사각형 영역 표시 (반투명 컬러 오버레이) |
| 텍스트 메모 | 이미지 위 임의 위치에 짧은 메모 |

> 기획디자인의 번호 마커(marker 블록) + Description 패널 패턴을 재활용

### 5.3 태그 시스템

| 기능 | 설명 |
|------|------|
| 자유 태그 | 카드에 자유 태그 추가 (콤마 구분 입력) |
| 태그 자동 완성 | 기존 태그 목록에서 자동 완성 |
| 태그 필터 | 사이드바에서 태그 클릭 → 해당 태그 카드만 표시 |
| 태그 색상 | 카테고리별 자동 색상 배정 |

### 5.4 CRAP 디자인 원칙 체크리스트

분석 카드에서 사용하는 디자인 원칙 평가:

| 원칙 | 체크 항목 |
|------|----------|
| **C**ontrast (대비) | 중요 요소가 시각적으로 구분되는가? |
| **R**epetition (반복) | 일관된 스타일이 반복 적용되는가? |
| **A**lignment (정렬) | 요소들이 논리적으로 정렬되어 있는가? |
| **P**roximity (근접성) | 관련 요소가 가까이 그룹핑되어 있는가? |

추가 체크:

| 원칙 | 체크 항목 |
|------|----------|
| 여백 (Whitespace) | 적절한 여백이 확보되어 있는가? |
| 계층 (Hierarchy) | 정보의 우선순위가 시각적으로 드러나는가? |
| 일관성 (Consistency) | 다른 화면과 일관된 패턴을 따르는가? |
| 접근성 (Accessibility) | 색상 대비, 폰트 크기가 충분한가? |

### 5.5 검색 & 필터

| 기능 | 설명 |
|------|------|
| 텍스트 검색 | 제목, 메모, 태그에서 전문 검색 |
| 카테고리 필터 | 화면 유형별 필터 (탭) |
| 카드 유형 필터 | 레퍼런스 / 분석 / 패턴 / Before/After |
| 평점 필터 | ⭐ 3점 이상만 표시 등 |
| 정렬 | 최신순, 평점순, 이름순 |

### 5.6 내보내기

| 형식 | 설명 |
|------|------|
| JSON | 전체 프로젝트 데이터 백업/복원 |
| HTML | 인사이트 카드를 HTML 보고서로 출력 (인쇄 가능) |
| 패턴 → 기획디자인 | 패턴 카드의 와이어프레임을 기획디자인 템플릿으로 전송 |

### 5.7 키보드 단축키

| 단축키 | 기능 |
|--------|------|
| `Ctrl+V` | 클립보드 이미지로 새 카드 생성 |
| `Ctrl+S` | 프로젝트 저장 |
| `Ctrl+F` | 검색 포커스 |
| `Ctrl+N` | 새 카드 추가 |
| `Delete` | 선택 카드 삭제 |
| `Ctrl+Z` | 실행 취소 |
| `Ctrl+Y` | 다시 실행 |

---

## 6. 데이터 구조

### 6.1 프로젝트 (localStorage: `di_projects`)

```json
[
  {
    "id": "diproj_1709856000000",
    "title": "SAM ERP v2 디자인 연구",
    "description": "SAM ERP 화면 개선을 위한 UI/UX 인사이트 수집",
    "cards": [],
    "createdAt": "2026-03-08T10:00:00",
    "updatedAt": "2026-03-08T15:30:00"
  }
]
```

### 6.2 인사이트 카드 (cards 배열 내)

```json
{
  "id": "di_1709856000000_abc",
  "type": "reference",
  "title": "Notion 대시보드 카드 레이아웃",
  "image": "data:image/png;base64,...",
  "memo": "카드형 레이아웃이 정보 밀도를 유지하면서도 시각적으로 깔끔",
  "source": "notion.so",
  "tags": ["대시보드", "카드", "레이아웃"],
  "category": "dashboard",
  "rating": 4,
  "pinned": false,
  "archived": false,
  "createdAt": "2026-03-08T10:00:00",
  "updatedAt": "2026-03-08T15:30:00"
}
```

### 6.3 분석 어노테이션

```json
{
  "annotations": [
    {
      "id": "ann_001",
      "type": "marker",
      "num": 1,
      "x": 150,
      "y": 80,
      "text": "검색 영역 너무 넓음 — 접기 기능 필요"
    },
    {
      "id": "ann_002",
      "type": "highlight",
      "x": 200,
      "y": 300,
      "w": 150,
      "h": 40,
      "color": "rgba(239,68,68,0.3)",
      "text": "버튼 정렬 불일치"
    }
  ]
}
```

### 6.4 디자인 패턴 라이브러리 (localStorage: `di_patterns`)

프로젝트 간 공유되는 패턴 라이브러리:

```json
[
  {
    "id": "pat_001",
    "name": "검색 + 필터 + 목록",
    "image": "data:image/png;base64,...",
    "components": [
      { "name": "검색바", "required": true },
      { "name": "필터 칩", "required": false },
      { "name": "데이터 테이블", "required": true },
      { "name": "페이지네이션", "required": true },
      { "name": "액션 버튼", "required": true }
    ],
    "guidelines": "검색바는 상단 고정, 필터는 접기/펼치기 지원",
    "usedIn": ["수주 목록", "거래처 목록", "품목 목록"],
    "tags": ["목록", "CRUD", "테이블"],
    "frequency": 12,
    "createdAt": "2026-03-08T10:00:00"
  }
]
```

---

## 7. 프리셋 데이터

### 7.1 기본 카테고리 (하드코딩)

```javascript
categories: [
  { code: 'dashboard', label: '대시보드', icon: '📊', color: '#6366f1' },
  { code: 'list',      label: '목록',     icon: '📋', color: '#3b82f6' },
  { code: 'form',      label: '상세/폼',  icon: '📝', color: '#10b981' },
  { code: 'modal',     label: '모달/팝업', icon: '💬', color: '#f59e0b' },
  { code: 'navigation',label: '네비게이션',icon: '🧭', color: '#8b5cf6' },
  { code: 'auth',      label: '로그인',   icon: '🔐', color: '#ec4899' },
  { code: 'report',    label: '보고서',   icon: '📄', color: '#0ea5e9' },
  { code: 'etc',       label: '기타',     icon: '📎', color: '#64748b' },
]
```

### 7.2 CRAP 원칙 체크리스트 (하드코딩)

```javascript
designPrinciples: [
  { key: 'contrast',    label: '대비 (Contrast)',    icon: '🔲', desc: '중요 요소가 시각적으로 구분' },
  { key: 'repetition',  label: '반복 (Repetition)',  icon: '🔁', desc: '일관된 스타일 반복 적용' },
  { key: 'alignment',   label: '정렬 (Alignment)',   icon: '📏', desc: '논리적 정렬' },
  { key: 'proximity',   label: '근접성 (Proximity)', icon: '🧲', desc: '관련 요소 그룹핑' },
  { key: 'whitespace',  label: '여백 (Whitespace)',  icon: '⬜', desc: '적절한 여백 확보' },
  { key: 'hierarchy',   label: '계층 (Hierarchy)',   icon: '🔺', desc: '정보 우선순위 시각화' },
  { key: 'consistency', label: '일관성 (Consistency)',icon: '🔗', desc: '다른 화면과의 일관성' },
  { key: 'a11y',        label: '접근성 (A11y)',      icon: '♿', desc: '색상 대비, 폰트 크기' },
]
```

### 7.3 샘플 패턴 템플릿 (프리셋)

| 패턴명 | 구성 요소 | SAM 내 사용처 |
|--------|----------|--------------|
| 검색 + 목록 | 검색바, 필터, 테이블, 페이지네이션, 액션버튼 | 수주/거래처/품목 목록 |
| 상세 폼 | 섹션 헤더, 라벨+입력, 저장/취소 버튼 | 수주 상세, 거래처 상세 |
| 대시보드 | 통계 카드 4개, 차트 2개, 요약 테이블 | 메인 대시보드 |
| 탭 레이아웃 | 탭 메뉴, 탭 콘텐츠, 액션 버튼 | 설정, 품목기준관리 |
| 트리 + 상세 | 좌측 트리, 우측 상세 패널 | 메뉴 관리, 조직도 |
| 모달 폼 | 모달 헤더, 입력 필드, 확인/취소 | 등록/수정 팝업 |
| 칸반 보드 | 컬럼 헤더, 드래그 카드, 필터 | 업무 관리 |
| 캘린더 | 월/주/일 뷰, 이벤트 카드, 필터 | 일정 관리, 근태 |

---

## 8. 워크플로우

### 8.1 일반 사용 흐름

```
1. 새 연구 프로젝트 생성 ("SAM ERP v2 디자인 연구")
     ↓
2. 레퍼런스 수집
   • 외부 서비스 스크린샷 → Ctrl+V 붙여넣기
   • SAM 기존 화면 스크린샷 → 파일 업로드
   • 태그 + 카테고리 분류
     ↓
3. 화면 분석
   • 분석 카드 생성 → 어노테이션 추가
   • CRAP 원칙 체크
   • 개선 제안 작성
     ↓
4. 패턴 추출
   • 반복되는 좋은 패턴 → 패턴 카드로 등록
   • 구성 요소 정리, 사용 가이드라인 작성
     ↓
5. Before/After 기록
   • 개선 전후 비교 카드 생성
   • 변경 포인트 + 효과 기록
     ↓
6. 기획디자인 연계
   • 패턴 라이브러리에서 참고하며 스토리보드 작성
```

### 8.2 기획디자인 연계

```
디자인 인사이트           기획디자인
┌──────────────┐        ┌──────────────┐
│ 패턴 카드:    │        │ 스토리보드:    │
│ "검색+목록"   │──참조──→│ 새 페이지에   │
│ 구성요소 체크  │        │ 패턴 적용     │
│ 가이드라인    │        │              │
└──────────────┘        └──────────────┘
```

> 향후 패턴 카드의 구성 요소를 기획디자인 블록 템플릿으로 자동 변환하는 연계 기능을 검토한다.

---

## 9. 개발 로드맵

### Phase 1 — 기본 구조 (MVP)

| 항목 | 내용 |
|------|------|
| 라우트 + 컨트롤러 | `GET /rd/design-insight` → 뷰 반환 |
| 프로젝트 CRUD | 생성/저장/로드/삭제 (localStorage) |
| 레퍼런스 카드 | 이미지 업로드 + 메모 + 태그 + 카테고리 |
| 보드 뷰 | 카드 격자 배열 기본 화면 |
| 검색/필터 | 텍스트 검색, 카테고리 탭 필터 |
| Ctrl+V 붙여넣기 | 클립보드 이미지 → 새 카드 자동 생성 |

### Phase 2 — 분석 도구

| 항목 | 내용 |
|------|------|
| 분석 카드 | 어노테이션 시스템 (마커, 하이라이트) |
| CRAP 체크리스트 | 디자인 원칙 체크 UI |
| Before/After 카드 | 전후 비교 카드 유형 |
| 갤러리 뷰 | 이미지 중심 큰 썸네일 |
| 리스트 뷰 | 테이블형 정렬/필터 |

### Phase 3 — 패턴 라이브러리

| 항목 | 내용 |
|------|------|
| 패턴 카드 | 구성 요소 체크리스트, 가이드라인 |
| 패턴 프리셋 | SAM ERP 기본 패턴 8종 |
| 패턴 공유 | 프로젝트 간 패턴 공유 (di_patterns) |
| 내보내기 | JSON 백업, HTML 보고서 |

### Phase 4 — 연계 & 고도화

| 항목 | 내용 |
|------|------|
| 기획디자인 연계 | 패턴 → 블록 템플릿 변환 |
| DB 저장 전환 | localStorage → DB (협업 지원) |
| 팀 공유 | 다른 사용자와 인사이트 공유 |

---

## 10. 파일 구조 (예상)

```
mng/
├── app/Http/Controllers/
│   └── RdController.php                      ← designInsight() 메서드 추가
├── resources/views/rd/design-insight/
│   └── index.blade.php                       ← 전체 CSS + HTML + Alpine.js
└── routes/web.php                            ← Route 추가
```

---

## 11. 관련 문서

- [기획디자인 기술 스펙](../features/rd/planning-design.md) — 모티브가 된 스토리보드 에디터
- [기획디자인 프로젝트](../projects/planning-design/README.md) — 프로젝트 이력
- [R&D 메뉴 개요](../features/rd/README.md) — R&D 전체 메뉴 구조

---

**최종 업데이트**: 2026-03-08
