# Flower UI Sweep

> Sweeps a shared Flower UI (e.g. targeting) across all screens that embed it with the same smoke scenario. Use when the user says 다화면 스윕, 공통 컴포넌트 회귀, UX 작업 소요 전 화면, targeting 전수, or a common component changed.

- Skill: `yol-mu/flower-ui-sweep` (Agent Skill)
- Install (CLI): `npx skillmds@latest add yol-mu/flower-ui-sweep`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yol-mu/flower-ui-sweep/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: yol-mu (https://skillmd.com/u/yol-mu)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/yol-mu/flower-ui-sweep

---


# Flower Common UI Sweep

공통 컴포넌트(타겟팅 설정/조회, 필터 셸 등)가 **여러 Edit/View에 붙을 때**
대표 1화면 smoke로 끝내지 않고, 적용 화면 목록을 순회한다.

관련: [breakdown-test](../breakdown-test/SKILL.md) Section 5 · Device 타겟팅 test-plan P0

## 입력 패턴

```
다화면 스윕 / 공통 컴포넌트 회귀
대상: Device 타겟팅 | 타겟팅 설정/조회 | …
시나리오: (짧게 — 예: 섹션 표시 → Edit 모달 오픈 → 취소)
화면 목록: test-plan 또는 아래 기본 목록
```

## 기본 화면 목록 (타겟팅 — **전체 메뉴 크롤에서 Targeting 힌트 난 화면**)

설계에 목록이 있으면 **설계가 우선**. 전체 사이드바: [menu-map.md](../flower-menu-smoke/references/menu-map.md)

### 목록/진입 (크롤 확인)
| # | Section | 화면 | Path | 비고 |
|---|---------|------|------|------|
| 1 | Direct IO | Campaigns | `/campaigns` → `/campaigns/view/{id}` | View Targeting 블록 |
| 2 | Direct IO | Products | `/products` | 목록에 device 문자열·Edit Targeting |
| 3 | Direct IO | Quote | `/quote` | 페이지에 **Targeting** 헤딩 |
| 4 | Direct IO | Campaign reviews | `/review/campaigns` | 상세 타겟팅 조회 |
| 5 | Programmatic | Private deals | `/programmatic/private-deals` | Ad units + Targeting |
| 6 | Programmatic | Open Marketplace | `/programmatic/open-marketplace` | Targeting |
| 7 | Programmatic | Targeting Presets | `/programmatic/presets` | Time/Geography/Audience 배지 |
| 8 | Settings | VOD Ad Policy | `/platform/vod` | **Targeting Rules** |
| 9 | Settings | Custom targeting | `/platform/category` | 구조(카테고리) — 차원 정의 |
| 10 | (설계 시) | 고급 검색 | Campaigns / Private deals | Device 필터 등 |

### 혼동 금지
| 메뉴 | Path | 스윕 대상? |
|------|------|------------|
| Resources → **Devices** | `/platform/stb` | ❌ STB 인코딩 프로필 (Device **타겟팅** 아님) |

## Workflow

1. **적용 화면 목록 확정** (test-plan “UX 작업 소요 전 화면”)  
   - Out of scope는 명시적으로 제외  
   - 플랫폼 제공 여부(Device 등)가 있는 화면은 [flower-authz-matrix](../flower-authz-matrix/SKILL.md)와 겹치면 가드만 스윕에 포함

2. **동일 시나리오 한 줄 정의** (화면마다 동일)  
   예:  
   1) 진입  
   2) Targeting(또는 Device) 섹션 확인  
   3) Edit/모달 오픈  
   4) 핵심 컨트롤 1개 확인  
   5) 취소/닫기  
   - 저장·삭제 등 데이터 변경은 사용자가 원할 때만

3. **플랫폼·시드 고정**  
   - Device/Ad requests 연동 검증이면 **1QA_Platform** 등 데이터가 있는 플랫폼  
   - 목록에 행이 없으면 해당 화면 **Blocked(시드 없음)** — Fail로 몰지 않음

4. **순회 실행**  
   - 화면마다: 결과(Pass/Fail/Blocked) + 스크린샷 + 특이 UI(배지, Lock, 접기, 카운트)  
   - 한 화면 Fail여도 목록 끝까지 돌린 뒤 요약 (조기 중단은 사용자 지시 시)

5. **회귀 이웃** (선택, 변경 범위와 관련 있을 때만)  
   - 기존 Geography/Time/Audience 타겟팅이 깨지지 않았는지 같은 화면에서 한 줄 확인  
   - Targeting presets 목록 배지에 새 차원이 설계대로만 보이는지

6. 요약 표 + Fail만 bug-report

## 스윕 결과 템플릿

```markdown
| # | 화면 | URL/경로 | 결과 | 메모 |
|---|------|----------|------|------|
| 1 | Campaigns View | /campaigns/view/… | | |
| 2 | Products Edit | | | |
```

## 탐색에서 본 함정

- Campaigns 테이블 행에 `<a>`가 없을 수 있음 → ID로 `/campaigns/view/{id}` 직접 진입  
- View의 Targeting이 **접힌 채** Ad placement / Time slots만 보일 수 있음 → 펼침/스크롤 후 Device 유무 판단  
- Presets 목록 Targeting 컬럼은 배지 요약(Time, Geography, Audience…) — Edit 들어가기 전 스모크와 구분  
- 상품명에 “device”가 있어도 UI Device 섹션과 동일하지 않음

## 하지 말 것

- 대표 1화면 Pass로 “공통 컴포넌트 전체 Pass”  
- 시드 없는 화면을 Fail  
- 스윕 중 불필요한 저장으로 QA 데이터 오염 (요청 없으면 읽기·모달 취소만)

