목업과 개발이 함께 지키는 시각 기준

디자인 가이드

도예 공방의 작업 환경을 조사해 색상·글꼴·그리드·반응형·컴포넌트 원칙을 정한 독립 문서입니다.

15,025자 · 시스템이 만든 그대로입니다

사람이 손댄 곳 4군데
  • · ‘전체 개발 안내’ 문서의 제목 한 줄에 내부에서 쓰는 단계 이름이 섞여 나와 그 단어만 지웠습니다. 본문은 손대지 않았습니다.
  • · 화면 목록에서 같은 일을 하는 화면이 두 개 만들어져 하나로 합쳤습니다. 3단계의 ‘화면 목록 다듬기’에서 누구나 하는 일입니다.
  • · ‘추가 확인 사항’은 부록 서너 항목만 쓰라고 시켰는데 제품 정의서를 통째로 한 벌 더 썼습니다. 지시를 분명히 고친 뒤 그 문서 하나만 다시 만들었습니다. 사람이 문장을 쓴 것은 아닙니다.
  • · 만들어진 뒤에 두 가지를 더 고쳤습니다. 화면 상태를 확인하는 개발용 링크가 서비스 이름보다 위에 있어 맨 아래로 접어 내렸고, 디자인 계약이 정한 글꼴을 실제로 불러오지 않아 기기마다 글자가 달라 보이던 것을 바로잡았습니다. 둘 다 화면을 보고 눈에 띈 것을 말로 적어 보낸 것입니다.

DESIGN CONTRACT V1

도예공방 운영 관리 서비스 디자인 가이드

가정: 별도 브랜드 아이덴티티가 제공되지 않았으므로 흙과 유약에서 가져온 차분한 색을 사용하되, 공방 감성보다 현장 가독성과 빠른 처리를 우선한다. 작품 번호를 모든 운영 화면의 가장 강한 시각적 기준으로 삼고 사진, 현재 제작 단계, 선반 칸을 한 묶음으로 표시한다. 운영자 화면은 흙이 묻은 손으로도 누르기 쉬운 큰 조작 영역과 짧은 입력 흐름을 사용한다. 회원 화면은 내부 선반 정보와 작업 메모를 숨기고 사진, 쉬운 진행 설명, 예상 완성 시점을 중심으로 구성한다.

작품 번호 중심 · 현장 모바일 우선 · 사진 기반 식별 · 현재 제작 단계와 선반 칸 동시 확인 · 초벌 대기와 재벌 대기 분리 · 여러 작품 일괄 변경 · 부분 실패가 보이는 안전한 처리 · 차분한 흙과 유약 색상 · 회원용 쉬운 진행 안내 · 공방별 작업 기준 설정

레이아웃
Mobile first
기본 글꼴
Pretendard Variable
조사 출처
5곳

COLOR SYSTEM

컬러 시스템

각 토큰의 실제 색상과 사용 맥락의 본문 대비를 보여 줍니다. AA 기준은 4.5:1입니다.

#F7F4EE

Canvas

13.64:1 · AA

전체 화면 배경. 흙의 온기를 반영하되 사진과 흰색 카드가 구분되도록 사용한다.

#FFFFFF

Surface

14.98:1 · AA

카드, 표, 입력 영역, 대화상자 배경.

#1F2925

TextPrimary

13.64:1 · AA

작품 번호, 제목, 주요 데이터와 본문 기본 글자.

#59645F

TextSecondary

5.61:1 · AA

보조 설명, 변경 시각, 회원 식별 정보. 작은 글자에서도 Canvas 또는 Surface 위 명도 대비를 유지한다.

#D5DDD8

Border

10.81:1 · AA

카드와 표 구분선, 입력 테두리, 비활성 칸 경계.

#255F52

Primary

6.74:1 · AA

주요 버튼, 선택 상태, 완성 배지 텍스트, 운영자 핵심 링크.

#194B40

PrimaryHover

1.51:1 · 큰 글자용

주요 버튼의 hover와 pressed 상태.

#E2F0EB

PrimarySoft

12.76:1 · AA

선택된 탭·필터, 완성 상태 배경, 회원 화면의 진행 강조.

#854A0E

DryText

6.41:1 · AA

건조 배지의 텍스트와 아이콘.

#FEF0C7

DrySoft

13.20:1 · AA

건조 배지 배경.

#9C2A10

BisqueText

6.95:1 · AA

초벌 대기와 초벌 완료 배지의 텍스트와 아이콘. 두 단계는 문구와 아이콘 모양을 함께 달리한다.

#FEE4E2

BisqueSoft

12.42:1 · AA

초벌 대기와 초벌 완료 배지 배경.

#026AA2

GlazeText

5.33:1 · AA

시유 배지의 텍스트와 아이콘.

#E0F2FE

GlazeSoft

13.05:1 · AA

시유 배지 배경.

#6941C6

RefireText

6.03:1 · AA

재벌 대기 배지의 텍스트와 아이콘.

#F4EBFF

RefireSoft

12.96:1 · AA

재벌 대기 배지 배경.

#8A4B08

Warning

6.19:1 · AA

위치 미지정, 사진 미등록, 기간 만료, 설정 미완료 경고의 텍스트와 아이콘.

#FFF3D6

WarningSoft

13.58:1 · AA

주의 배너와 경고 배지 배경.

#B42318

Error

2.28:1 · 큰 글자용

중복 작품 번호, 저장 실패, 접근 거부, 일괄 변경 실패와 파괴적 작업.

#FEE4E2

ErrorSoft

12.42:1 · AA

오류 메시지와 실패 결과 행 배경.

#175CD3

Focus

2.50:1 · 큰 글자용

키보드 초점 링, 현재 입력 위치, 정보성 링크. 상태 구분 색상으로 단독 사용하지 않는다.

TYPOGRAPHY

한글 타이포그래피

제목 · -0.025em

흙에서 완성까지, 한눈에

본문 · -0.01em

작품의 현재 단계와 선반 위치를 기록하고, 다음 가마에 넣을 작품을 빠르게 확인합니다.

가마 02 · 1,250°C · 8–11시간

SPACING & RADIUS

간격과 형태

4px
8px
12px
16px
20px
24px
32px
40px
48px
64px
sm
8px
md
12px
lg
16px
full
9999px

RESPONSIVE LAYOUT

그리드와 화면 전략

SRS에서 공방 현장의 모바일 웹을 우선 사용 환경으로 지정했고, 작품 번호 검색·사진 촬영·단계 변경·선반 칸 선택을 현장에서 수행한다. 기본 화면은 한 손 조작이 가능한 단일 열 카드와 하단 고정 작업 영역으로 구성한다. md 이상에서는 필터와 상세 정보를 넓히고, lg 이상에서는 단계별 작품 목록을 12열 그리드 기반 표로 전환해 다중 선택과 비교 효율을 높인다. 데스크톱에서도 모바일과 같은 기능 및 용어를 유지하며 별도 제품으로 분리하지 않는다.

모바일 · 4

데스크톱 · 12

sm
480px
md
768px
lg
1024px
xl
1440px
최대 폭
1280px

COMPONENTS

컴포넌트와 상태

계약 토큰을 적용한 버튼·입력·카드 견본과 구현 규칙입니다.

버튼

입력 상태

물레컵 3점

초벌 대기

2번 선반 · 1칸
예상 완료 9월 18일

AppShell

operator · member · initialSetup · default · loading · accessDenied

모바일 운영자 화면은 상단 공방명과 검색 진입, 하단에 대시보드·작품·회원·더보기 내비게이션을 둔다. lg 이상에서는 왼쪽 내비게이션과 상단 검색으로 전환한다. 회원 화면은 내 작품 조회에 필요한 최소 내비게이션만 제공한다.

Button

primary · secondary · tertiary · destructive · fullWidth · default · hover · focusVisible · pressed · disabled · loading

최소 높이는 44px이며 모바일 주요 완료 버튼은 48px을 권장한다. 버튼 문구는 저장, 12점 변경, 작품 등록처럼 결과를 구체적으로 쓴다. 로딩 중 중복 제출을 막되 현재 작업 문구를 유지한다.

IconButton

default · outlined · destructive · default · hover · focusVisible · pressed · disabled

터치 영역은 최소 44×44px이다. 아이콘만 사용할 때 접근 가능한 이름을 제공하고, 삭제·닫기 외에는 가능하면 짧은 텍스트를 함께 표시한다.

WorkNumberSearch

dashboard · listHeader · detail · empty · typing · loading · matched · partialMatches · noResult · error

작품 번호 입력을 첫 초점 대상으로 제공한다. 숫자와 하이픈 입력을 지원하고, 하이픈 없이 입력해도 서버 검색 결과를 반환할 수 있게 한다. 검색 결과에는 작품 번호, 사진, 회원, 현재 제작 단계, 선반 칸을 같은 영역에 표시한다.

StageSummaryCard

건조 · 초벌 대기 · 초벌 완료 · 시유 · 재벌 대기 · 완성 · attention · default · hover · focusVisible · selected · loading

현재 제작 단계명과 작품 점수를 함께 표시하고 누르면 해당 필터가 적용된 단계별 작품 목록으로 이동한다. 초벌 대기와 재벌 대기는 인접 카드로 배치하되 서로 다른 색과 문구로 구분한다.

StageTabs

scrollable · segmented · kilnSeparated · default · selected · focusVisible · disabled

모바일에서는 가로 스크롤을 허용하되 선택 탭이 화면 안으로 자동 이동한다. 탭에는 단계명과 작품 수를 함께 표시한다. 다음 가마 후보 비교에서는 초벌 대기와 재벌 대기 두 탭만 제공한다.

FilterBar

mobileSheet · desktopInline · default · applied · loading · emptyResult

작품 번호, 회원, 현재 제작 단계, 선반, 선반 칸을 필터로 제공한다. 적용된 조건은 삭제 가능한 칩으로 남기며 목록과 상세를 오간 뒤에도 이전 필터를 복원한다.

WorkCollection

mobileCards · tabletRows · desktopTable · kilnComparison · loading · populated · empty · error · selectionMode

모바일 카드는 작품 번호, 정사각형 사진, 현재 제작 단계, 선반 칸, 회원 순서로 표시한다. lg 이상 표는 선택, 작품 번호, 사진, 현재 제작 단계, 선반 칸, 회원, 예상 완성 시점 순으로 고정한다. 표의 작품 번호와 선반 칸은 줄바꿈하지 않는다.

WorkCard

operator · member · compact · candidate · default · selected · focusVisible · missingPhoto · missingLocation · stale · disabled

운영자용은 작품 번호를 가장 크게 표시하고 회원, 현재 제작 단계, 선반 칸을 함께 보여준다. 회원용은 작품 사진, 쉬운 진행 문구, 예상 완성 시점과 완성 여부만 보여주며 선반 칸과 내부 메모를 숨긴다.

StatusBadge

건조 · 초벌 대기 · 초벌 완료 · 시유 · 재벌 대기 · 완성 · 위치 미지정 · 기간 만료 · 확인 필요 · default · compact

색상, 텍스트, 단계별 아이콘을 함께 사용한다. 초벌 대기와 초벌 완료처럼 색이 같은 배지는 문구와 아이콘으로 구분한다. 배지만으로 핵심 정보를 전달하지 않고 주변에 현재 제작 단계 레이블을 제공한다.

SelectionControl

checkbox · selectAllPage · selectAllFiltered · unchecked · checked · indeterminate · focusVisible · disabled

모바일에서 체크 영역 전체를 44px 이상으로 제공한다. 현재 화면 전체 선택과 검색 결과 전체 선택을 구분하고, 선택한 작품 수를 항상 함께 표시한다.

BulkActionBar

mobileBottom · desktopTop · review · hidden · active · submitting · partialSuccess · success · failure

하나 이상의 작품이 선택되면 고정 표시한다. 선택 작품 수, 단계 변경, 선반 칸 이동, 선택 해제를 제공한다. 모바일에서는 안전 영역을 반영하며 목록의 마지막 행을 가리지 않도록 하단 여백을 추가한다.

FormField

text · number · date · select · textarea · default · focus · filled · disabled · readOnly · error · success

레이블을 항상 표시하고 placeholder만으로 항목을 설명하지 않는다. 오류는 입력 바로 아래에 원인과 수정 방법을 표시한다. 숫자 입력은 모바일 숫자 키패드를 사용하되 단위와 허용 범위를 화면에 명시한다.

WorkNumberInput

new · correction · initialSetup · suggested · checking · available · duplicate · invalidFormat · conflict

2608-01 형식과 최대 일곱 자 조건을 입력 가까이에 표시한다. 자동 제안값은 운영자가 수정할 수 있어야 한다. 정정 화면은 이전 번호를 읽기 전용으로 보여주고 저장 전 새 번호와 변경 이력 생성을 확인한다. 월 99점 이후 규칙은 확인 필요로 처리한다.

MemberPicker

recentFirst · search · inlineCreate · empty · searching · results · selected · duplicateName · noResult · disabled

검색 결과에는 회원명과 마스킹된 식별 정보, 현재 보관 작품 수를 함께 표시한다. 동명이인은 이름만으로 선택할 수 없게 한다. 작품을 연속 등록할 때 선택 회원 유지 여부를 명확히 보여준다.

PhotoUploader

workPhoto · shelfPhoto · gallery · empty · capturing · uploading · uploaded · reordering · failed · permissionDenied

모바일에서 카메라 촬영과 앨범 선택을 모두 제공한다. 업로드 진행률, 재시도, 대표 사진을 표시한다. 사진 업로드 실패 시 입력한 나머지 정보를 잃지 않으며, 권한 확인을 거친 주소로만 이미지를 제공한다.

StageShelfPicker

stacked · bottomSheet · desktopPanel · empty · stageSelected · shelfSelected · cellSelected · unavailable · invalidCombination

현재 제작 단계 선택 후 해당 단계에 연결된 선반과 선반 칸만 보여준다. 선택 결과는 초벌 대기 2번 선반 1칸처럼 전체 경로로 확인시킨다. 사용할 수 없는 선반 칸은 숨기지 말고 비활성화 사유를 제공한다.

ShelfGrid

picker · settings · photoReference · empty · available · occupied · selected · disabled · deletionBlocked

선반 칸을 실제 배열에 가까운 격자로 보여주되 칸 번호를 항상 표시한다. 수용량은 기준이 제공된 경우에만 표시한다. 작품이 남은 선반 칸 삭제 시 이동이 필요하다는 안내와 연결 작품 목록을 제공한다.

EstimateDate

operator · member · completed · unknown · calculated · kilnDatePriority · recalculating · missingRule · completed

운영자에게는 날짜와 계산 기준을 함께 보여주고, 회원에게는 예상 완성 시점과 변경 가능성을 쉬운 문장으로 표시한다. 완성 작품은 날짜 대신 완성을 표시한다. 계산 기준이 없으면 임의 날짜를 만들지 않고 확인 필요를 표시한다.

MemberSummaryCard

list · detail · workContext · active · expired · inactive · loading · conflict

회원명, 회원권 종류, 잔여 횟수, 유효기간, 진행 중 작품 수를 표시한다. 잔여 횟수 변경은 변경 사유 입력과 전후 값 검토를 거치며 음수 저장을 막는다.

DetailHeader

work · member · settings · default · editing · staleData

작품 상세에서는 작품 번호, 현재 제작 단계, 회원명과 상태·선반 칸 변경 버튼을 첫 화면에 배치한다. 다른 사용자가 수정한 상태이면 저장을 덮어쓰지 말고 최신 내용 확인 버튼을 표시한다.

HistoryTimeline

stage · location · workNumber · membership · collapsed · expanded · loading · empty

변경 시각, 변경자, 이전 값, 새 값을 텍스트로 표시한다. 상태 색만으로 전후를 구분하지 않는다. 모바일 기본은 최근 이력 세 건이며 전체 보기를 제공한다.

ReviewDialog

bottomSheet · modal · destructive · open · submitting · success · partialSuccess · failure

일괄 변경 전 작품 수, 현재 제작 단계 분포, 새 단계, 새 선반 칸을 검토한다. 파괴적 작업은 대상 이름을 다시 표시한다. 닫은 뒤에는 호출한 요소로 키보드 초점을 되돌린다.

BulkResultSummary

success · partialSuccess · failure · collapsed · expanded

성공·실패 건수를 분리하고 실패 작품 번호와 이유를 행 단위로 제공한다. 실패가 있어도 성공 항목을 실패처럼 표시하지 않는다. 결과 목록을 닫기 전 다시 처리할 작품을 선택할 수 있게 한다.

WizardStepper

initialSetup · settings · notStarted · current · completed · incomplete · blocked

공방 작업 기준, 회원, 현재 작품, 등록 범위 확인 순서를 표시한다. 각 단계는 자동 저장하며 중단 후 이어서 진행할 수 있게 한다. 완료 표시는 필수 데이터 검사를 통과한 경우에만 적용한다.

FeedbackMessage

inline · banner · toast · info · success · warning · error

폼 오류는 inline, 화면 전체 상태는 banner, 방금 끝난 단순 작업은 toast를 사용한다. 저장 실패와 부분 실패는 자동으로 사라지는 toast만 사용하지 않는다. 보조 기술이 결과를 읽을 수 있도록 적절한 live region을 적용한다.

LoadingAndEmptyState

skeleton · empty · noSearchResult · accessDenied · networkError · visible · retrying

빈 목록과 검색 결과 없음은 구분한다. 검색 결과 없음에는 입력 번호를 유지하고 다시 검색 또는 작품 등록으로 이동하는 행동을 제공한다. 스켈레톤은 실제 카드와 표 구조를 따라 레이아웃 이동을 줄인다.

APPLICATION

업계 조사와 화면별 적용

· 제품 요구 기준으로 작품의 현재 제작 단계와 실제 선반 칸은 서로 다른 정보이며, 등록·이동·일괄 변경 화면에서 함께 확인하고 변경 이력을 각각 남겨야 한다.

· 작품 번호는 굽 바닥에 새긴 2608-01 형식을 기본으로 하며, 운영 화면의 검색 결과와 목록에서 회원명보다 먼저 보여야 한다.

· 운영자는 수업 직후 여러 작품을 등록하므로 최근 선택 회원 유지, 다음 작품 번호 제안, 모바일 사진 촬영, 저장하고 다음 등록 흐름이 필요하다.

· 월 50~150점 규모에서는 전체 통계보다 작품 번호 검색, 단계 탭, 선반 칸 필터, 체크박스 선택과 일괄 변경 진입이 먼저 보여야 한다.

· 초벌 대기와 재벌 대기는 소성 조건이 달라 같은 후보 목록에 섞지 않는다. 다음 가마 후보 비교 화면도 두 탭을 명확히 분리한다.

· 여러 작품 상태 한꺼번에 변경은 적용 전 대상 수와 변경 전후 값을 검토하고, 적용 후 성공·실패 작품 번호와 실패 이유를 나눠 보여줘야 한다.

· 대표 운영자와 보조 강사가 동시에 수정할 수 있으므로 저장 충돌은 일반 오류가 아니라 최신 내용을 비교하는 전용 상태로 표시해야 한다.

· 회원 전용 내 작품 조회는 운영자용 현재 제작 단계를 쉬운 문장으로 설명하고, 상세 선반 칸·다른 회원 작품·내부 메모는 노출하지 않는다.

· 예상 완성 시점은 운영자 화면과 회원 화면에서 같은 서버 계산 결과를 사용하고, 계산 기준이 없으면 임의 날짜 대신 확인 필요를 표시한다.

· 작품 사진과 선반 사진은 현장 모바일 웹에서 바로 촬영할 수 있어야 하며, 목록에서는 작은 미리보기를 사용하고 상세에서 원본 비율로 확대한다.

· 공정별 선반과 선반 칸은 자유 입력보다 설정된 선택값을 사용한다. 현재 제작 단계와 맞지 않는 선반 칸은 비활성화하고 이유를 표시한다.

· 확인 필요: 일곱 자 작품 번호와 월 작품 약 130점 조건은 숫자 순번 01~99만으로 동시에 충족할 수 없다. 99 이후 번호 규칙을 확정하기 전에는 UI가 임의의 영문 조합을 사실상 표준으로 강제하지 않는다.

· 확인 필요: 다음 가마 후보 비교에 크기와 높이의 수치 입력을 필수로 할지 확정되지 않았다. 첫 구현에서는 입력란과 미입력 표시를 제공하되 후보 선택을 막는 조건은 확정 후 적용한다.

login-access

대표 운영자·보조 강사 로그인과 회원 본인 확인을 같은 화면 안에서 명확한 탭으로 분리한다. 운영 계정은 로그인 정보, 회원은 공방이 전달한 초대 주소와 최초 접근 코드를 사용한다. 오류 시 어떤 정보가 틀렸는지 과도하게 노출하지 않으며, 성공하면 역할에 맞는 화면으로 즉시 이동한다.

operator-dashboard

첫 영역에 작품 번호 검색을 배치한다. 다음으로 건조·초벌 대기·초벌 완료·시유·재벌 대기·완성 수, 위치 미등록과 설정 미완료 항목을 보여준다. 다음 가마 후보는 초벌 대기와 재벌 대기를 분리해 진입시킨다. 회원 검색 결과에서 회원권 잔여 횟수를 바로 확인할 수 있는 축약 영역을 제공해 작품 진행 상태, 다음 가마 후보, 회원권 정보를 한 화면에서 시작할 수 있게 한다.

main

운영자 대시보드에서 진입하는 작품 운영 보드로 구성한다. 현재 제작 단계별 섹션에서 작품 번호, 사진, 회원, 선반 칸을 우선 표시한다. 모바일에서는 단계 탭과 카드 목록, lg 이상에서는 단계별 열 또는 표를 사용한다. 카드 선택 시 작품 상세로 이동하고 다중 선택 시 일괄 변경 작업 바를 연다.

stage-work-list

상단에 현재 제작 단계 탭과 작품 수, 작품 번호 검색, 선반·선반 칸·회원 필터를 둔다. 모바일 카드는 작품 번호와 선반 칸을 가장 크게 보여주고, lg 이상 표는 선택 체크박스와 작품 번호 열을 고정한다. 선택 항목과 필터는 작품 상세를 다녀와도 유지한다.

work-form

입력 순서는 회원, 작품 번호, 작품 사진, 현재 제작 단계, 선반과 선반 칸, 선택 항목인 크기·높이와 가마 예정일로 한다. 작품 번호는 다음 번호를 제안하되 굽 바닥의 실제 번호와 대조하게 하고 중복을 즉시 검사한다. 현재 제작 단계를 고르면 유효한 선반 칸만 표시한다. 신규 등록에는 저장하고 다음 작품 등록과 저장 후 상세 보기 버튼을 제공한다.

work-search-detail

상단 검색창 아래에 작품 번호, 사진, 회원, 현재 제작 단계, 선반 칸, 예상 완성 시점을 첫 화면에서 모두 확인하게 한다. 상태 변경과 선반 칸 이동을 주요 버튼으로 제공하고, 회원권 잔여 횟수는 운영자에게만 요약 표시한다. 아래에는 단계·위치·작품 번호 정정 이력을 시간순으로 제공한다.

bulk-status-change

선택 작품 수와 현재 제작 단계 분포를 상단에 고정한다. 새 현재 제작 단계를 선택하면 해당 단계의 선반과 선반 칸만 선택할 수 있게 한다. 저장 전 작품 번호, 현재 값, 변경 후 값을 검토하고, 저장 후 성공과 실패를 분리해 실패 작품 번호와 이유를 보여준다. 다른 사용자의 최신 수정과 충돌한 작품은 덮어쓰지 않는다.

member-list-detail

모바일은 회원 목록에서 상세로 이동하고, lg 이상은 목록과 상세를 두 패널로 배치한다. 회원 상세 상단에 회원권 종류, 잔여 횟수, 유효기간을 표시하고 바로 아래에 진행 중 작품을 사진과 현재 제작 단계로 보여준다. 잔여 횟수 변경에는 변경 사유와 전후 값 확인을 요구하며 자동 차감 기능은 제공하지 않는다.

my-works

진행 중 작품과 완성 작품을 구분한다. 작품 카드는 사진, 작품 번호, 회원용 진행 문구, 예상 완성 시점 또는 완성을 표시한다. 상세 선반 칸, 내부 작업 메모, 다른 회원의 작품과 회원권 정보는 노출하지 않는다. 예상 완성 시점이 계산되지 않으면 공방에서 확인 중이라고 표시한다.

next-kiln-candidates

초벌 대기와 재벌 대기를 첫 탭부터 분리하고 동시에 선택할 수 없게 한다. 작품 사진, 작품 번호, 선반 칸, 대기 기간, 크기와 높이 입력값, 관련 선반 사진을 비교한다. 크기·높이가 없으면 미입력 배지를 표시하되 후보 선택 차단 여부는 확인 필요로 둔다. 후보 선택 결과만 저장하며 가마 배치, 적재, 가마 회차와 소성 계획 화면은 만들지 않는다.

studio-workflow-settings

대표 운영자만 수정할 수 있게 하고 보조 강사에게는 필요 시 읽기 전용으로 표시한다. 건조·초벌 대기·초벌 완료·시유·재벌 대기·완성별로 선반, 선반 칸과 단계별 기본 소요 기간을 설정한다. 작품이 남은 선반이나 선반 칸 삭제는 막고 연결 작품과 이동 필요 내용을 보여준다. 저장 후 예상 완성 시점 재계산이 필요한 범위를 안내한다.

initial-setup

공방 작업 기준 설정, 회원 등록, 현재 보관 중인 작품 등록, 등록 범위 확인의 단계형 흐름을 사용한다. 각 단계는 자동 저장하고 중단 후 이어서 진행한다. 마지막 화면에서 단계별 작품 수, 선반 칸 미등록, 사진 미등록, 중복 작품 번호를 요약한다. 현재 보관 중인 작품 전체를 옮길지 여부는 확인 필요 항목으로 표시하고 대표 운영자가 등록 범위를 확인한 뒤 운영을 시작한다.

에셋 원칙
가정: 별도 로고가 제공되지 않았으므로 첫 버전 헤더는 생활도자 공방 이름을 텍스트 워드마크로 표시한다. · 24px 기준의 일관된 선형 SVG 아이콘 세트: 검색, 카메라, 사진, 작품, 회원, 선반, 건조, 초벌, 시유, 재벌, 완성, 달력, 이력, 경고, 설정. · 현재 제작 단계별 아이콘은 색상 없이도 구분되는 서로 다른 실루엣을 사용한다. · 작품 사진 미등록 placeholder는 실제 작품처럼 오인될 수 있는 예시 사진 대신 카메라 아이콘과 작품 사진 없음 문구를 사용한다. · 선반 사진 미등록 placeholder는 격자 형태의 선반 아이콘과 선반 사진 없음 문구를 사용한다. · 권장: 목록용 정사각형 미리보기와 상세용 원본 비율 이미지를 별도로 제공해 모바일 로딩을 줄인다. · 작품 사진과 선반 사진은 인증된 요청에만 제공되는 보호 자산으로 처리하고 공개 고정 주소를 화면에 노출하지 않는다. · 초기 설정과 빈 화면에는 장식용 스톡 사진보다 다음 행동을 설명하는 단순 SVG 안내 그림을 사용한다.

ACCESSIBILITY

접근성과 모션

  • · KWCAG 2.2와 WCAG 2.1 AA를 기준으로 텍스트와 배경의 명도 대비를 맞춘다. 일반 텍스트는 4.5:1 이상, 큰 텍스트와 핵심 그래픽은 3:1 이상을 목표로 한다.
  • · 모든 터치 대상은 최소 44×44px로 만들고, 인접한 체크박스와 아이콘 버튼 사이에 최소 8px 간격을 둔다.
  • · 현재 제작 단계, 경고, 성공·실패는 색상만으로 구분하지 않고 텍스트, 아이콘 또는 패턴을 함께 사용한다.
  • · 키보드 초점은 Focus 색상의 2px 이상 외곽선과 충분한 간격으로 표시하며, 모달과 하단 시트 내부에 초점을 가두고 닫은 뒤 호출 위치로 되돌린다.
  • · 입력 항목에는 화면에 보이는 레이블을 제공하고 필수 여부, 단위, 형식 오류와 수정 방법을 입력 가까이에 표시한다.
  • · 작품 사진의 대체 텍스트에는 작품 번호와 사진 순서를 포함한다. 장식용 이미지는 빈 대체 텍스트를 사용한다.
  • · 표의 헤더와 데이터 셀을 의미상 연결하고, 모바일 카드 전환 후에도 작품 번호·현재 제작 단계·선반 칸의 읽기 순서를 유지한다.
  • · 검색, 저장, 사진 업로드, 일괄 변경 결과는 보조 기술이 인식할 수 있는 상태 메시지로 알린다. 실패 메시지는 자동으로 사라지지 않는다.
  • · 가로 스크롤 탭과 표에는 키보드 및 스크린 리더로 접근 가능한 대체 이동 방법을 제공한다.
  • · 사진 촬영 권한이 거부되거나 카메라를 사용할 수 없는 경우 앨범 업로드와 재시도 방법을 제공한다.
  • · 회원 전용 내 작품 조회에서는 내부 선반 칸과 다른 회원의 정보를 시각적으로 숨기는 데 그치지 않고 서버 권한 검사 결과에 따라 렌더링한다.
  • · 날짜는 2026년 8월 25일처럼 읽기 쉬운 형식을 사용하고, 예상 완성 시점의 기준과 변경 가능성을 텍스트로 제공한다.
  • · prefers-reduced-motion 설정이 있으면 화면 전환과 목록 재배치 애니메이션을 제거하고 즉시 상태를 갱신한다.
  • · 모바일 확대를 막지 않으며 200% 확대와 좁은 화면에서도 작품 검색, 조회, 저장과 일괄 변경의 핵심 기능을 사용할 수 있게 한다.

기본 전환 180ms cubic-bezier(0.2, 0, 0, 1) · 모션 감소 설정 지원 · 다크모드 not_planned

EVIDENCE

조사 출처

  • Web Content Accessibility Guidelines (WCAG) 2.1

    명도 대비, 키보드 접근, 상태 전달, 오류 식별 등 WCAG 2.1 AA 접근성 기준에 사용했다.

  • Pretendard

    별도 글꼴 지시가 없을 때 적용하는 한글 기본 글꼴의 배포 및 사용 정보를 확인하는 기준이다.

  • 스마트스토어 고객센터

    제공된 UI/UX 조사에서 한국 운영 도구의 목록, 검색, 선택 후 일괄 처리 패턴을 검토하기 위한 참고 자료로 제시됐다. 생활도자 공방 고유 기능의 근거로 직접 전용하지 않았다.

  • Cafe24-마켓플러스

    제공된 UI/UX 조사에서 다수 항목을 관리하는 운영 화면의 필터와 일괄 작업 구조를 참고하는 자료로 사용했다.

  • 알림톡 - 카카오비즈니스

    카카오톡 완성 알림은 사업자 채널과 템플릿 승인 이후의 후속 범위임을 확인하는 참고 자료다. 첫 버전 UI에는 실제 발송 기능을 포함하지 않는다.

기계 판독 디자인 계약 보기
{
  "version": 1,
  "direction": "가정: 별도 브랜드 아이덴티티가 제공되지 않았으므로 흙과 유약에서 가져온 차분한 색을 사용하되, 공방 감성보다 현장 가독성과 빠른 처리를 우선한다. 작품 번호를 모든 운영 화면의 가장 강한 시각적 기준으로 삼고 사진, 현재 제작 단계, 선반 칸을 한 묶음으로 표시한다. 운영자 화면은 흙이 묻은 손으로도 누르기 쉬운 큰 조작 영역과 짧은 입력 흐름을 사용한다. 회원 화면은 내부 선반 정보와 작업 메모를 숨기고 사진, 쉬운 진행 설명, 예상 완성 시점을 중심으로 구성한다.",
  "keywords": [
    "작품 번호 중심",
    "현장 모바일 우선",
    "사진 기반 식별",
    "현재 제작 단계와 선반 칸 동시 확인",
    "초벌 대기와 재벌 대기 분리",
    "여러 작품 일괄 변경",
    "부분 실패가 보이는 안전한 처리",
    "차분한 흙과 유약 색상",
    "회원용 쉬운 진행 안내",
    "공방별 작업 기준 설정"
  ],
  "industryFindings": [
    "제품 요구 기준으로 작품의 현재 제작 단계와 실제 선반 칸은 서로 다른 정보이며, 등록·이동·일괄 변경 화면에서 함께 확인하고 변경 이력을 각각 남겨야 한다.",
    "작품 번호는 굽 바닥에 새긴 2608-01 형식을 기본으로 하며, 운영 화면의 검색 결과와 목록에서 회원명보다 먼저 보여야 한다.",
    "운영자는 수업 직후 여러 작품을 등록하므로 최근 선택 회원 유지, 다음 작품 번호 제안, 모바일 사진 촬영, 저장하고 다음 등록 흐름이 필요하다.",
    "월 50~150점 규모에서는 전체 통계보다 작품 번호 검색, 단계 탭, 선반 칸 필터, 체크박스 선택과 일괄 변경 진입이 먼저 보여야 한다.",
    "초벌 대기와 재벌 대기는 소성 조건이 달라 같은 후보 목록에 섞지 않는다. 다음 가마 후보 비교 화면도 두 탭을 명확히 분리한다.",
    "여러 작품 상태 한꺼번에 변경은 적용 전 대상 수와 변경 전후 값을 검토하고, 적용 후 성공·실패 작품 번호와 실패 이유를 나눠 보여줘야 한다.",
    "대표 운영자와 보조 강사가 동시에 수정할 수 있으므로 저장 충돌은 일반 오류가 아니라 최신 내용을 비교하는 전용 상태로 표시해야 한다.",
    "회원 전용 내 작품 조회는 운영자용 현재 제작 단계를 쉬운 문장으로 설명하고, 상세 선반 칸·다른 회원 작품·내부 메모는 노출하지 않는다.",
    "예상 완성 시점은 운영자 화면과 회원 화면에서 같은 서버 계산 결과를 사용하고, 계산 기준이 없으면 임의 날짜 대신 확인 필요를 표시한다.",
    "작품 사진과 선반 사진은 현장 모바일 웹에서 바로 촬영할 수 있어야 하며, 목록에서는 작은 미리보기를 사용하고 상세에서 원본 비율로 확대한다.",
    "공정별 선반과 선반 칸은 자유 입력보다 설정된 선택값을 사용한다. 현재 제작 단계와 맞지 않는 선반 칸은 비활성화하고 이유를 표시한다.",
    "확인 필요: 일곱 자 작품 번호와 월 작품 약 130점 조건은 숫자 순번 01~99만으로 동시에 충족할 수 없다. 99 이후 번호 규칙을 확정하기 전에는 UI가 임의의 영문 조합을 사실상 표준으로 강제하지 않는다.",
    "확인 필요: 다음 가마 후보 비교에 크기와 높이의 수치 입력을 필수로 할지 확정되지 않았다. 첫 구현에서는 입력란과 미입력 표시를 제공하되 후보 선택을 막는 조건은 확정 후 적용한다."
  ],
  "layoutMode": "mobile_first",
  "layoutRationale": "SRS에서 공방 현장의 모바일 웹을 우선 사용 환경으로 지정했고, 작품 번호 검색·사진 촬영·단계 변경·선반 칸 선택을 현장에서 수행한다. 기본 화면은 한 손 조작이 가능한 단일 열 카드와 하단 고정 작업 영역으로 구성한다. md 이상에서는 필터와 상세 정보를 넓히고, lg 이상에서는 단계별 작품 목록을 12열 그리드 기반 표로 전환해 다중 선택과 비교 효율을 높인다. 데스크톱에서도 모바일과 같은 기능 및 용어를 유지하며 별도 제품으로 분리하지 않는다.",
  "typography": {
    "koreanFont": "Pretendard Variable",
    "fallback": [
      "Pretendard",
      "Apple SD Gothic Neo",
      "Noto Sans KR",
      "Malgun Gothic",
      "sans-serif"
    ],
    "bodyLetterSpacing": "-0.01em",
    "headingLetterSpacing": "-0.025em",
    "bodyLineHeight": 1.6
  },
  "colors": [
    {
      "name": "Canvas",
      "value": "#F7F4EE",
      "usage": "전체 화면 배경. 흙의 온기를 반영하되 사진과 흰색 카드가 구분되도록 사용한다."
    },
    {
      "name": "Surface",
      "value": "#FFFFFF",
      "usage": "카드, 표, 입력 영역, 대화상자 배경."
    },
    {
      "name": "TextPrimary",
      "value": "#1F2925",
      "usage": "작품 번호, 제목, 주요 데이터와 본문 기본 글자."
    },
    {
      "name": "TextSecondary",
      "value": "#59645F",
      "usage": "보조 설명, 변경 시각, 회원 식별 정보. 작은 글자에서도 Canvas 또는 Surface 위 명도 대비를 유지한다."
    },
    {
      "name": "Border",
      "value": "#D5DDD8",
      "usage": "카드와 표 구분선, 입력 테두리, 비활성 칸 경계."
    },
    {
      "name": "Primary",
      "value": "#255F52",
      "usage": "주요 버튼, 선택 상태, 완성 배지 텍스트, 운영자 핵심 링크."
    },
    {
      "name": "PrimaryHover",
      "value": "#194B40",
      "usage": "주요 버튼의 hover와 pressed 상태."
    },
    {
      "name": "PrimarySoft",
      "value": "#E2F0EB",
      "usage": "선택된 탭·필터, 완성 상태 배경, 회원 화면의 진행 강조."
    },
    {
      "name": "DryText",
      "value": "#854A0E",
      "usage": "건조 배지의 텍스트와 아이콘."
    },
    {
      "name": "DrySoft",
      "value": "#FEF0C7",
      "usage": "건조 배지 배경."
    },
    {
      "name": "BisqueText",
      "value": "#9C2A10",
      "usage": "초벌 대기와 초벌 완료 배지의 텍스트와 아이콘. 두 단계는 문구와 아이콘 모양을 함께 달리한다."
    },
    {
      "name": "BisqueSoft",
      "value": "#FEE4E2",
      "usage": "초벌 대기와 초벌 완료 배지 배경."
    },
    {
      "name": "GlazeText",
      "value": "#026AA2",
      "usage": "시유 배지의 텍스트와 아이콘."
    },
    {
      "name": "GlazeSoft",
      "value": "#E0F2FE",
      "usage": "시유 배지 배경."
    },
    {
      "name": "RefireText",
      "value": "#6941C6",
      "usage": "재벌 대기 배지의 텍스트와 아이콘."
    },
    {
      "name": "RefireSoft",
      "value": "#F4EBFF",
      "usage": "재벌 대기 배지 배경."
    },
    {
      "name": "Warning",
      "value": "#8A4B08",
      "usage": "위치 미지정, 사진 미등록, 기간 만료, 설정 미완료 경고의 텍스트와 아이콘."
    },
    {
      "name": "WarningSoft",
      "value": "#FFF3D6",
      "usage": "주의 배너와 경고 배지 배경."
    },
    {
      "name": "Error",
      "value": "#B42318",
      "usage": "중복 작품 번호, 저장 실패, 접근 거부, 일괄 변경 실패와 파괴적 작업."
    },
    {
      "name": "ErrorSoft",
      "value": "#FEE4E2",
      "usage": "오류 메시지와 실패 결과 행 배경."
    },
    {
      "name": "Focus",
      "value": "#175CD3",
      "usage": "키보드 초점 링, 현재 입력 위치, 정보성 링크. 상태 구분 색상으로 단독 사용하지 않는다."
    }
  ],
  "breakpoints": {
    "sm": 480,
    "md": 768,
    "lg": 1024,
    "xl": 1440
  },
  "grid": {
    "baseUnit": 4,
    "mobileColumns": 4,
    "desktopColumns": 12,
    "maxContentWidth": 1280
  },
  "spacing": [
    4,
    8,
    12,
    16,
    20,
    24,
    32,
    40,
    48,
    64
  ],
  "radius": {
    "sm": 8,
    "md": 12,
    "lg": 16,
    "full": 9999
  },
  "components": [
    {
      "name": "AppShell",
      "variants": [
        "operator",
        "member",
        "initialSetup"
      ],
      "states": [
        "default",
        "loading",
        "accessDenied"
      ],
      "guidance": "모바일 운영자 화면은 상단 공방명과 검색 진입, 하단에 대시보드·작품·회원·더보기 내비게이션을 둔다. lg 이상에서는 왼쪽 내비게이션과 상단 검색으로 전환한다. 회원 화면은 내 작품 조회에 필요한 최소 내비게이션만 제공한다."
    },
    {
      "name": "Button",
      "variants": [
        "primary",
        "secondary",
        "tertiary",
        "destructive",
        "fullWidth"
      ],
      "states": [
        "default",
        "hover",
        "focusVisible",
        "pressed",
        "disabled",
        "loading"
      ],
      "guidance": "최소 높이는 44px이며 모바일 주요 완료 버튼은 48px을 권장한다. 버튼 문구는 저장, 12점 변경, 작품 등록처럼 결과를 구체적으로 쓴다. 로딩 중 중복 제출을 막되 현재 작업 문구를 유지한다."
    },
    {
      "name": "IconButton",
      "variants": [
        "default",
        "outlined",
        "destructive"
      ],
      "states": [
        "default",
        "hover",
        "focusVisible",
        "pressed",
        "disabled"
      ],
      "guidance": "터치 영역은 최소 44×44px이다. 아이콘만 사용할 때 접근 가능한 이름을 제공하고, 삭제·닫기 외에는 가능하면 짧은 텍스트를 함께 표시한다."
    },
    {
      "name": "WorkNumberSearch",
      "variants": [
        "dashboard",
        "listHeader",
        "detail"
      ],
      "states": [
        "empty",
        "typing",
        "loading",
        "matched",
        "partialMatches",
        "noResult",
        "error"
      ],
      "guidance": "작품 번호 입력을 첫 초점 대상으로 제공한다. 숫자와 하이픈 입력을 지원하고, 하이픈 없이 입력해도 서버 검색 결과를 반환할 수 있게 한다. 검색 결과에는 작품 번호, 사진, 회원, 현재 제작 단계, 선반 칸을 같은 영역에 표시한다."
    },
    {
      "name": "StageSummaryCard",
      "variants": [
        "건조",
        "초벌 대기",
        "초벌 완료",
        "시유",
        "재벌 대기",
        "완성",
        "attention"
      ],
      "states": [
        "default",
        "hover",
        "focusVisible",
        "selected",
        "loading"
      ],
      "guidance": "현재 제작 단계명과 작품 점수를 함께 표시하고 누르면 해당 필터가 적용된 단계별 작품 목록으로 이동한다. 초벌 대기와 재벌 대기는 인접 카드로 배치하되 서로 다른 색과 문구로 구분한다."
    },
    {
      "name": "StageTabs",
      "variants": [
        "scrollable",
        "segmented",
        "kilnSeparated"
      ],
      "states": [
        "default",
        "selected",
        "focusVisible",
        "disabled"
      ],
      "guidance": "모바일에서는 가로 스크롤을 허용하되 선택 탭이 화면 안으로 자동 이동한다. 탭에는 단계명과 작품 수를 함께 표시한다. 다음 가마 후보 비교에서는 초벌 대기와 재벌 대기 두 탭만 제공한다."
    },
    {
      "name": "FilterBar",
      "variants": [
        "mobileSheet",
        "desktopInline"
      ],
      "states": [
        "default",
        "applied",
        "loading",
        "emptyResult"
      ],
      "guidance": "작품 번호, 회원, 현재 제작 단계, 선반, 선반 칸을 필터로 제공한다. 적용된 조건은 삭제 가능한 칩으로 남기며 목록과 상세를 오간 뒤에도 이전 필터를 복원한다."
    },
    {
      "name": "WorkCollection",
      "variants": [
        "mobileCards",
        "tabletRows",
        "desktopTable",
        "kilnComparison"
      ],
      "states": [
        "loading",
        "populated",
        "empty",
        "error",
        "selectionMode"
      ],
      "guidance": "모바일 카드는 작품 번호, 정사각형 사진, 현재 제작 단계, 선반 칸, 회원 순서로 표시한다. lg 이상 표는 선택, 작품 번호, 사진, 현재 제작 단계, 선반 칸, 회원, 예상 완성 시점 순으로 고정한다. 표의 작품 번호와 선반 칸은 줄바꿈하지 않는다."
    },
    {
      "name": "WorkCard",
      "variants": [
        "operator",
        "member",
        "compact",
        "candidate"
      ],
      "states": [
        "default",
        "selected",
        "focusVisible",
        "missingPhoto",
        "missingLocation",
        "stale",
        "disabled"
      ],
      "guidance": "운영자용은 작품 번호를 가장 크게 표시하고 회원, 현재 제작 단계, 선반 칸을 함께 보여준다. 회원용은 작품 사진, 쉬운 진행 문구, 예상 완성 시점과 완성 여부만 보여주며 선반 칸과 내부 메모를 숨긴다."
    },
    {
      "name": "StatusBadge",
      "variants": [
        "건조",
        "초벌 대기",
        "초벌 완료",
        "시유",
        "재벌 대기",
        "완성",
        "위치 미지정",
        "기간 만료",
        "확인 필요"
      ],
      "states": [
        "default",
        "compact"
      ],
      "guidance": "색상, 텍스트, 단계별 아이콘을 함께 사용한다. 초벌 대기와 초벌 완료처럼 색이 같은 배지는 문구와 아이콘으로 구분한다. 배지만으로 핵심 정보를 전달하지 않고 주변에 현재 제작 단계 레이블을 제공한다."
    },
    {
      "name": "SelectionControl",
      "variants": [
        "checkbox",
        "selectAllPage",
        "selectAllFiltered"
      ],
      "states": [
        "unchecked",
        "checked",
        "indeterminate",
        "focusVisible",
        "disabled"
      ],
      "guidance": "모바일에서 체크 영역 전체를 44px 이상으로 제공한다. 현재 화면 전체 선택과 검색 결과 전체 선택을 구분하고, 선택한 작품 수를 항상 함께 표시한다."
    },
    {
      "name": "BulkActionBar",
      "variants": [
        "mobileBottom",
        "desktopTop",
        "review"
      ],
      "states": [
        "hidden",
        "active",
        "submitting",
        "partialSuccess",
        "success",
        "failure"
      ],
      "guidance": "하나 이상의 작품이 선택되면 고정 표시한다. 선택 작품 수, 단계 변경, 선반 칸 이동, 선택 해제를 제공한다. 모바일에서는 안전 영역을 반영하며 목록의 마지막 행을 가리지 않도록 하단 여백을 추가한다."
    },
    {
      "name": "FormField",
      "variants": [
        "text",
        "number",
        "date",
        "select",
        "textarea"
      ],
      "states": [
        "default",
        "focus",
        "filled",
        "disabled",
        "readOnly",
        "error",
        "success"
      ],
      "guidance": "레이블을 항상 표시하고 placeholder만으로 항목을 설명하지 않는다. 오류는 입력 바로 아래에 원인과 수정 방법을 표시한다. 숫자 입력은 모바일 숫자 키패드를 사용하되 단위와 허용 범위를 화면에 명시한다."
    },
    {
      "name": "WorkNumberInput",
      "variants": [
        "new",
        "correction",
        "initialSetup"
      ],
      "states": [
        "suggested",
        "checking",
        "available",
        "duplicate",
        "invalidFormat",
        "conflict"
      ],
      "guidance": "2608-01 형식과 최대 일곱 자 조건을 입력 가까이에 표시한다. 자동 제안값은 운영자가 수정할 수 있어야 한다. 정정 화면은 이전 번호를 읽기 전용으로 보여주고 저장 전 새 번호와 변경 이력 생성을 확인한다. 월 99점 이후 규칙은 확인 필요로 처리한다."
    },
    {
      "name": "MemberPicker",
      "variants": [
        "recentFirst",
        "search",
        "inlineCreate"
      ],
      "states": [
        "empty",
        "searching",
        "results",
        "selected",
        "duplicateName",
        "noResult",
        "disabled"
      ],
      "guidance": "검색 결과에는 회원명과 마스킹된 식별 정보, 현재 보관 작품 수를 함께 표시한다. 동명이인은 이름만으로 선택할 수 없게 한다. 작품을 연속 등록할 때 선택 회원 유지 여부를 명확히 보여준다."
    },
    {
      "name": "PhotoUploader",
      "variants": [
        "workPhoto",
        "shelfPhoto",
        "gallery"
      ],
      "states": [
        "empty",
        "capturing",
        "uploading",
        "uploaded",
        "reordering",
        "failed",
        "permissionDenied"
      ],
      "guidance": "모바일에서 카메라 촬영과 앨범 선택을 모두 제공한다. 업로드 진행률, 재시도, 대표 사진을 표시한다. 사진 업로드 실패 시 입력한 나머지 정보를 잃지 않으며, 권한 확인을 거친 주소로만 이미지를 제공한다."
    },
    {
      "name": "StageShelfPicker",
      "variants": [
        "stacked",
        "bottomSheet",
        "desktopPanel"
      ],
      "states": [
        "empty",
        "stageSelected",
        "shelfSelected",
        "cellSelected",
        "unavailable",
        "invalidCombination"
      ],
      "guidance": "현재 제작 단계 선택 후 해당 단계에 연결된 선반과 선반 칸만 보여준다. 선택 결과는 초벌 대기 2번 선반 1칸처럼 전체 경로로 확인시킨다. 사용할 수 없는 선반 칸은 숨기지 말고 비활성화 사유를 제공한다."
    },
    {
      "name": "ShelfGrid",
      "variants": [
        "picker",
        "settings",
        "photoReference"
      ],
      "states": [
        "empty",
        "available",
        "occupied",
        "selected",
        "disabled",
        "deletionBlocked"
      ],
      "guidance": "선반 칸을 실제 배열에 가까운 격자로 보여주되 칸 번호를 항상 표시한다. 수용량은 기준이 제공된 경우에만 표시한다. 작품이 남은 선반 칸 삭제 시 이동이 필요하다는 안내와 연결 작품 목록을 제공한다."
    },
    {
      "name": "EstimateDate",
      "variants": [
        "operator",
        "member",
        "completed",
        "unknown"
      ],
      "states": [
        "calculated",
        "kilnDatePriority",
        "recalculating",
        "missingRule",
        "completed"
      ],
      "guidance": "운영자에게는 날짜와 계산 기준을 함께 보여주고, 회원에게는 예상 완성 시점과 변경 가능성을 쉬운 문장으로 표시한다. 완성 작품은 날짜 대신 완성을 표시한다. 계산 기준이 없으면 임의 날짜를 만들지 않고 확인 필요를 표시한다."
    },
    {
      "name": "MemberSummaryCard",
      "variants": [
        "list",
        "detail",
        "workContext"
      ],
      "states": [
        "active",
        "expired",
        "inactive",
        "loading",
        "conflict"
      ],
      "guidance": "회원명, 회원권 종류, 잔여 횟수, 유효기간, 진행 중 작품 수를 표시한다. 잔여 횟수 변경은 변경 사유 입력과 전후 값 검토를 거치며 음수 저장을 막는다."
    },
    {
      "name": "DetailHeader",
      "variants": [
        "work",
        "member",
        "settings"
      ],
      "states": [
        "default",
        "editing",
        "staleData"
      ],
      "guidance": "작품 상세에서는 작품 번호, 현재 제작 단계, 회원명과 상태·선반 칸 변경 버튼을 첫 화면에 배치한다. 다른 사용자가 수정한 상태이면 저장을 덮어쓰지 말고 최신 내용 확인 버튼을 표시한다."
    },
    {
      "name": "HistoryTimeline",
      "variants": [
        "stage",
        "location",
        "workNumber",
        "membership"
      ],
      "states": [
        "collapsed",
        "expanded",
        "loading",
        "empty"
      ],
      "guidance": "변경 시각, 변경자, 이전 값, 새 값을 텍스트로 표시한다. 상태 색만으로 전후를 구분하지 않는다. 모바일 기본은 최근 이력 세 건이며 전체 보기를 제공한다."
    },
    {
      "name": "ReviewDialog",
      "variants": [
        "bottomSheet",
        "modal",
        "destructive"
      ],
      "states": [
        "open",
        "submitting",
        "success",
        "partialSuccess",
        "failure"
      ],
      "guidance": "일괄 변경 전 작품 수, 현재 제작 단계 분포, 새 단계, 새 선반 칸을 검토한다. 파괴적 작업은 대상 이름을 다시 표시한다. 닫은 뒤에는 호출한 요소로 키보드 초점을 되돌린다."
    },
    {
      "name": "BulkResultSummary",
      "variants": [
        "success",
        "partialSuccess",
        "failure"
      ],
      "states": [
        "collapsed",
        "expanded"
      ],
      "guidance": "성공·실패 건수를 분리하고 실패 작품 번호와 이유를 행 단위로 제공한다. 실패가 있어도 성공 항목을 실패처럼 표시하지 않는다. 결과 목록을 닫기 전 다시 처리할 작품을 선택할 수 있게 한다."
    },
    {
      "name": "WizardStepper",
      "variants": [
        "initialSetup",
        "settings"
      ],
      "states": [
        "notStarted",
        "current",
        "completed",
        "incomplete",
        "blocked"
      ],
      "guidance": "공방 작업 기준, 회원, 현재 작품, 등록 범위 확인 순서를 표시한다. 각 단계는 자동 저장하며 중단 후 이어서 진행할 수 있게 한다. 완료 표시는 필수 데이터 검사를 통과한 경우에만 적용한다."
    },
    {
      "name": "FeedbackMessage",
      "variants": [
        "inline",
        "banner",
        "toast"
      ],
      "states": [
        "info",
        "success",
        "warning",
        "error"
      ],
      "guidance": "폼 오류는 inline, 화면 전체 상태는 banner, 방금 끝난 단순 작업은 toast를 사용한다. 저장 실패와 부분 실패는 자동으로 사라지는 toast만 사용하지 않는다. 보조 기술이 결과를 읽을 수 있도록 적절한 live region을 적용한다."
    },
    {
      "name": "LoadingAndEmptyState",
      "variants": [
        "skeleton",
        "empty",
        "noSearchResult",
        "accessDenied",
        "networkError"
      ],
      "states": [
        "visible",
        "retrying"
      ],
      "guidance": "빈 목록과 검색 결과 없음은 구분한다. 검색 결과 없음에는 입력 번호를 유지하고 다시 검색 또는 작품 등록으로 이동하는 행동을 제공한다. 스켈레톤은 실제 카드와 표 구조를 따라 레이아웃 이동을 줄인다."
    }
  ],
  "accessibility": [
    "KWCAG 2.2와 WCAG 2.1 AA를 기준으로 텍스트와 배경의 명도 대비를 맞춘다. 일반 텍스트는 4.5:1 이상, 큰 텍스트와 핵심 그래픽은 3:1 이상을 목표로 한다.",
    "모든 터치 대상은 최소 44×44px로 만들고, 인접한 체크박스와 아이콘 버튼 사이에 최소 8px 간격을 둔다.",
    "현재 제작 단계, 경고, 성공·실패는 색상만으로 구분하지 않고 텍스트, 아이콘 또는 패턴을 함께 사용한다.",
    "키보드 초점은 Focus 색상의 2px 이상 외곽선과 충분한 간격으로 표시하며, 모달과 하단 시트 내부에 초점을 가두고 닫은 뒤 호출 위치로 되돌린다.",
    "입력 항목에는 화면에 보이는 레이블을 제공하고 필수 여부, 단위, 형식 오류와 수정 방법을 입력 가까이에 표시한다.",
    "작품 사진의 대체 텍스트에는 작품 번호와 사진 순서를 포함한다. 장식용 이미지는 빈 대체 텍스트를 사용한다.",
    "표의 헤더와 데이터 셀을 의미상 연결하고, 모바일 카드 전환 후에도 작품 번호·현재 제작 단계·선반 칸의 읽기 순서를 유지한다.",
    "검색, 저장, 사진 업로드, 일괄 변경 결과는 보조 기술이 인식할 수 있는 상태 메시지로 알린다. 실패 메시지는 자동으로 사라지지 않는다.",
    "가로 스크롤 탭과 표에는 키보드 및 스크린 리더로 접근 가능한 대체 이동 방법을 제공한다.",
    "사진 촬영 권한이 거부되거나 카메라를 사용할 수 없는 경우 앨범 업로드와 재시도 방법을 제공한다.",
    "회원 전용 내 작품 조회에서는 내부 선반 칸과 다른 회원의 정보를 시각적으로 숨기는 데 그치지 않고 서버 권한 검사 결과에 따라 렌더링한다.",
    "날짜는 2026년 8월 25일처럼 읽기 쉬운 형식을 사용하고, 예상 완성 시점의 기준과 변경 가능성을 텍스트로 제공한다.",
    "prefers-reduced-motion 설정이 있으면 화면 전환과 목록 재배치 애니메이션을 제거하고 즉시 상태를 갱신한다.",
    "모바일 확대를 막지 않으며 200% 확대와 좁은 화면에서도 작품 검색, 조회, 저장과 일괄 변경의 핵심 기능을 사용할 수 있게 한다."
  ],
  "motion": {
    "durationMs": 180,
    "easing": "cubic-bezier(0.2, 0, 0, 1)",
    "reducedMotion": true
  },
  "darkMode": "not_planned",
  "screenGuidance": [
    {
      "screenId": "login-access",
      "guidance": "대표 운영자·보조 강사 로그인과 회원 본인 확인을 같은 화면 안에서 명확한 탭으로 분리한다. 운영 계정은 로그인 정보, 회원은 공방이 전달한 초대 주소와 최초 접근 코드를 사용한다. 오류 시 어떤 정보가 틀렸는지 과도하게 노출하지 않으며, 성공하면 역할에 맞는 화면으로 즉시 이동한다."
    },
    {
      "screenId": "operator-dashboard",
      "guidance": "첫 영역에 작품 번호 검색을 배치한다. 다음으로 건조·초벌 대기·초벌 완료·시유·재벌 대기·완성 수, 위치 미등록과 설정 미완료 항목을 보여준다. 다음 가마 후보는 초벌 대기와 재벌 대기를 분리해 진입시킨다. 회원 검색 결과에서 회원권 잔여 횟수를 바로 확인할 수 있는 축약 영역을 제공해 작품 진행 상태, 다음 가마 후보, 회원권 정보를 한 화면에서 시작할 수 있게 한다."
    },
    {
      "screenId": "main",
      "guidance": "운영자 대시보드에서 진입하는 작품 운영 보드로 구성한다. 현재 제작 단계별 섹션에서 작품 번호, 사진, 회원, 선반 칸을 우선 표시한다. 모바일에서는 단계 탭과 카드 목록, lg 이상에서는 단계별 열 또는 표를 사용한다. 카드 선택 시 작품 상세로 이동하고 다중 선택 시 일괄 변경 작업 바를 연다."
    },
    {
      "screenId": "stage-work-list",
      "guidance": "상단에 현재 제작 단계 탭과 작품 수, 작품 번호 검색, 선반·선반 칸·회원 필터를 둔다. 모바일 카드는 작품 번호와 선반 칸을 가장 크게 보여주고, lg 이상 표는 선택 체크박스와 작품 번호 열을 고정한다. 선택 항목과 필터는 작품 상세를 다녀와도 유지한다."
    },
    {
      "screenId": "work-form",
      "guidance": "입력 순서는 회원, 작품 번호, 작품 사진, 현재 제작 단계, 선반과 선반 칸, 선택 항목인 크기·높이와 가마 예정일로 한다. 작품 번호는 다음 번호를 제안하되 굽 바닥의 실제 번호와 대조하게 하고 중복을 즉시 검사한다. 현재 제작 단계를 고르면 유효한 선반 칸만 표시한다. 신규 등록에는 저장하고 다음 작품 등록과 저장 후 상세 보기 버튼을 제공한다."
    },
    {
      "screenId": "work-search-detail",
      "guidance": "상단 검색창 아래에 작품 번호, 사진, 회원, 현재 제작 단계, 선반 칸, 예상 완성 시점을 첫 화면에서 모두 확인하게 한다. 상태 변경과 선반 칸 이동을 주요 버튼으로 제공하고, 회원권 잔여 횟수는 운영자에게만 요약 표시한다. 아래에는 단계·위치·작품 번호 정정 이력을 시간순으로 제공한다."
    },
    {
      "screenId": "bulk-status-change",
      "guidance": "선택 작품 수와 현재 제작 단계 분포를 상단에 고정한다. 새 현재 제작 단계를 선택하면 해당 단계의 선반과 선반 칸만 선택할 수 있게 한다. 저장 전 작품 번호, 현재 값, 변경 후 값을 검토하고, 저장 후 성공과 실패를 분리해 실패 작품 번호와 이유를 보여준다. 다른 사용자의 최신 수정과 충돌한 작품은 덮어쓰지 않는다."
    },
    {
      "screenId": "member-list-detail",
      "guidance": "모바일은 회원 목록에서 상세로 이동하고, lg 이상은 목록과 상세를 두 패널로 배치한다. 회원 상세 상단에 회원권 종류, 잔여 횟수, 유효기간을 표시하고 바로 아래에 진행 중 작품을 사진과 현재 제작 단계로 보여준다. 잔여 횟수 변경에는 변경 사유와 전후 값 확인을 요구하며 자동 차감 기능은 제공하지 않는다."
    },
    {
      "screenId": "my-works",
      "guidance": "진행 중 작품과 완성 작품을 구분한다. 작품 카드는 사진, 작품 번호, 회원용 진행 문구, 예상 완성 시점 또는 완성을 표시한다. 상세 선반 칸, 내부 작업 메모, 다른 회원의 작품과 회원권 정보는 노출하지 않는다. 예상 완성 시점이 계산되지 않으면 공방에서 확인 중이라고 표시한다."
    },
    {
      "screenId": "next-kiln-candidates",
      "guidance": "초벌 대기와 재벌 대기를 첫 탭부터 분리하고 동시에 선택할 수 없게 한다. 작품 사진, 작품 번호, 선반 칸, 대기 기간, 크기와 높이 입력값, 관련 선반 사진을 비교한다. 크기·높이가 없으면 미입력 배지를 표시하되 후보 선택 차단 여부는 확인 필요로 둔다. 후보 선택 결과만 저장하며 가마 배치, 적재, 가마 회차와 소성 계획 화면은 만들지 않는다."
    },
    {
      "screenId": "studio-workflow-settings",
      "guidance": "대표 운영자만 수정할 수 있게 하고 보조 강사에게는 필요 시 읽기 전용으로 표시한다. 건조·초벌 대기·초벌 완료·시유·재벌 대기·완성별로 선반, 선반 칸과 단계별 기본 소요 기간을 설정한다. 작품이 남은 선반이나 선반 칸 삭제는 막고 연결 작품과 이동 필요 내용을 보여준다. 저장 후 예상 완성 시점 재계산이 필요한 범위를 안내한다."
    },
    {
      "screenId": "initial-setup",
      "guidance": "공방 작업 기준 설정, 회원 등록, 현재 보관 중인 작품 등록, 등록 범위 확인의 단계형 흐름을 사용한다. 각 단계는 자동 저장하고 중단 후 이어서 진행한다. 마지막 화면에서 단계별 작품 수, 선반 칸 미등록, 사진 미등록, 중복 작품 번호를 요약한다. 현재 보관 중인 작품 전체를 옮길지 여부는 확인 필요 항목으로 표시하고 대표 운영자가 등록 범위를 확인한 뒤 운영을 시작한다."
    }
  ],
  "assets": [
    "가정: 별도 로고가 제공되지 않았으므로 첫 버전 헤더는 생활도자 공방 이름을 텍스트 워드마크로 표시한다.",
    "24px 기준의 일관된 선형 SVG 아이콘 세트: 검색, 카메라, 사진, 작품, 회원, 선반, 건조, 초벌, 시유, 재벌, 완성, 달력, 이력, 경고, 설정.",
    "현재 제작 단계별 아이콘은 색상 없이도 구분되는 서로 다른 실루엣을 사용한다.",
    "작품 사진 미등록 placeholder는 실제 작품처럼 오인될 수 있는 예시 사진 대신 카메라 아이콘과 작품 사진 없음 문구를 사용한다.",
    "선반 사진 미등록 placeholder는 격자 형태의 선반 아이콘과 선반 사진 없음 문구를 사용한다.",
    "권장: 목록용 정사각형 미리보기와 상세용 원본 비율 이미지를 별도로 제공해 모바일 로딩을 줄인다.",
    "작품 사진과 선반 사진은 인증된 요청에만 제공되는 보호 자산으로 처리하고 공개 고정 주소를 화면에 노출하지 않는다.",
    "초기 설정과 빈 화면에는 장식용 스톡 사진보다 다음 행동을 설명하는 단순 SVG 안내 그림을 사용한다."
  ],
  "sources": [
    {
      "title": "Web Content Accessibility Guidelines (WCAG) 2.1",
      "url": "https://www.w3.org/TR/WCAG21/",
      "note": "명도 대비, 키보드 접근, 상태 전달, 오류 식별 등 WCAG 2.1 AA 접근성 기준에 사용했다."
    },
    {
      "title": "Pretendard",
      "url": "https://github.com/orioncactus/pretendard",
      "note": "별도 글꼴 지시가 없을 때 적용하는 한글 기본 글꼴의 배포 및 사용 정보를 확인하는 기준이다."
    },
    {
      "title": "스마트스토어 고객센터",
      "url": "https://help.sell.smartstore.naver.com/faq/content.help?faqId=3389",
      "note": "제공된 UI/UX 조사에서 한국 운영 도구의 목록, 검색, 선택 후 일괄 처리 패턴을 검토하기 위한 참고 자료로 제시됐다. 생활도자 공방 고유 기능의 근거로 직접 전용하지 않았다."
    },
    {
      "title": "Cafe24-마켓플러스",
      "url": "https://shopcafe.cafe24.com/mp/guide/front/guide07",
      "note": "제공된 UI/UX 조사에서 다수 항목을 관리하는 운영 화면의 필터와 일괄 작업 구조를 참고하는 자료로 사용했다."
    },
    {
      "title": "알림톡 - 카카오비즈니스",
      "url": "https://business.kakao.com/info/bizmessage/",
      "note": "카카오톡 완성 알림은 사업자 채널과 템플릿 승인 이후의 후속 범위임을 확인하는 참고 자료다. 첫 버전 UI에는 실제 발송 기능을 포함하지 않는다."
    }
  ]
}
디자인 가이드 원문 전체 보기

UI/UX 디자인 가이드

1. 디자인 방향

가정: 별도 브랜드 아이덴티티가 제공되지 않았으므로 흙과 유약에서 가져온 차분한 색을 사용하되, 공방 감성보다 현장 가독성과 빠른 처리를 우선한다. 작품 번호를 모든 운영 화면의 가장 강한 시각적 기준으로 삼고 사진, 현재 제작 단계, 선반 칸을 한 묶음으로 표시한다. 운영자 화면은 흙이 묻은 손으로도 누르기 쉬운 큰 조작 영역과 짧은 입력 흐름을 사용한다. 회원 화면은 내부 선반 정보와 작업 메모를 숨기고 사진, 쉬운 진행 설명, 예상 완성 시점을 중심으로 구성한다.

무드 키워드: 작품 번호 중심 · 현장 모바일 우선 · 사진 기반 식별 · 현재 제작 단계와 선반 칸 동시 확인 · 초벌 대기와 재벌 대기 분리 · 여러 작품 일괄 변경 · 부분 실패가 보이는 안전한 처리 · 차분한 흙과 유약 색상 · 회원용 쉬운 진행 안내 · 공방별 작업 기준 설정

업계 조사에서 반영한 점

  • 제품 요구 기준으로 작품의 현재 제작 단계와 실제 선반 칸은 서로 다른 정보이며, 등록·이동·일괄 변경 화면에서 함께 확인하고 변경 이력을 각각 남겨야 한다.
  • 작품 번호는 굽 바닥에 새긴 2608-01 형식을 기본으로 하며, 운영 화면의 검색 결과와 목록에서 회원명보다 먼저 보여야 한다.
  • 운영자는 수업 직후 여러 작품을 등록하므로 최근 선택 회원 유지, 다음 작품 번호 제안, 모바일 사진 촬영, 저장하고 다음 등록 흐름이 필요하다.
  • 월 50~150점 규모에서는 전체 통계보다 작품 번호 검색, 단계 탭, 선반 칸 필터, 체크박스 선택과 일괄 변경 진입이 먼저 보여야 한다.
  • 초벌 대기와 재벌 대기는 소성 조건이 달라 같은 후보 목록에 섞지 않는다. 다음 가마 후보 비교 화면도 두 탭을 명확히 분리한다.
  • 여러 작품 상태 한꺼번에 변경은 적용 전 대상 수와 변경 전후 값을 검토하고, 적용 후 성공·실패 작품 번호와 실패 이유를 나눠 보여줘야 한다.
  • 대표 운영자와 보조 강사가 동시에 수정할 수 있으므로 저장 충돌은 일반 오류가 아니라 최신 내용을 비교하는 전용 상태로 표시해야 한다.
  • 회원 전용 내 작품 조회는 운영자용 현재 제작 단계를 쉬운 문장으로 설명하고, 상세 선반 칸·다른 회원 작품·내부 메모는 노출하지 않는다.
  • 예상 완성 시점은 운영자 화면과 회원 화면에서 같은 서버 계산 결과를 사용하고, 계산 기준이 없으면 임의 날짜 대신 확인 필요를 표시한다.
  • 작품 사진과 선반 사진은 현장 모바일 웹에서 바로 촬영할 수 있어야 하며, 목록에서는 작은 미리보기를 사용하고 상세에서 원본 비율로 확대한다.
  • 공정별 선반과 선반 칸은 자유 입력보다 설정된 선택값을 사용한다. 현재 제작 단계와 맞지 않는 선반 칸은 비활성화하고 이유를 표시한다.
  • 확인 필요: 일곱 자 작품 번호와 월 작품 약 130점 조건은 숫자 순번 01~99만으로 동시에 충족할 수 없다. 99 이후 번호 규칙을 확정하기 전에는 UI가 임의의 영문 조합을 사실상 표준으로 강제하지 않는다.
  • 확인 필요: 다음 가마 후보 비교에 크기와 높이의 수치 입력을 필수로 할지 확정되지 않았다. 첫 구현에서는 입력란과 미입력 표시를 제공하되 후보 선택을 막는 조건은 확정 후 적용한다.

2. 레이아웃 전략

  • 방식: Mobile first
  • 근거: SRS에서 공방 현장의 모바일 웹을 우선 사용 환경으로 지정했고, 작품 번호 검색·사진 촬영·단계 변경·선반 칸 선택을 현장에서 수행한다. 기본 화면은 한 손 조작이 가능한 단일 열 카드와 하단 고정 작업 영역으로 구성한다. md 이상에서는 필터와 상세 정보를 넓히고, lg 이상에서는 단계별 작품 목록을 12열 그리드 기반 표로 전환해 다중 선택과 비교 효율을 높인다. 데스크톱에서도 모바일과 같은 기능 및 용어를 유지하며 별도 제품으로 분리하지 않는다.
  • 좁은 화면에서도 핵심 조회·입력·처리를 제거하지 않습니다.
  • 최대 콘텐츠 폭: 1280px
  • 그리드: 모바일 4열 / 데스크톱 12열 / 기본 단위 4px
  • Breakpoint: sm 480px, md 768px, lg 1024px, xl 1440px

3. 컬러 시스템

토큰용도
Canvas#F7F4EE전체 화면 배경. 흙의 온기를 반영하되 사진과 흰색 카드가 구분되도록 사용한다.
Surface#FFFFFF카드, 표, 입력 영역, 대화상자 배경.
TextPrimary#1F2925작품 번호, 제목, 주요 데이터와 본문 기본 글자.
TextSecondary#59645F보조 설명, 변경 시각, 회원 식별 정보. 작은 글자에서도 Canvas 또는 Surface 위 명도 대비를 유지한다.
Border#D5DDD8카드와 표 구분선, 입력 테두리, 비활성 칸 경계.
Primary#255F52주요 버튼, 선택 상태, 완성 배지 텍스트, 운영자 핵심 링크.
PrimaryHover#194B40주요 버튼의 hover와 pressed 상태.
PrimarySoft#E2F0EB선택된 탭·필터, 완성 상태 배경, 회원 화면의 진행 강조.
DryText#854A0E건조 배지의 텍스트와 아이콘.
DrySoft#FEF0C7건조 배지 배경.
BisqueText#9C2A10초벌 대기와 초벌 완료 배지의 텍스트와 아이콘. 두 단계는 문구와 아이콘 모양을 함께 달리한다.
BisqueSoft#FEE4E2초벌 대기와 초벌 완료 배지 배경.
GlazeText#026AA2시유 배지의 텍스트와 아이콘.
GlazeSoft#E0F2FE시유 배지 배경.
RefireText#6941C6재벌 대기 배지의 텍스트와 아이콘.
RefireSoft#F4EBFF재벌 대기 배지 배경.
Warning#8A4B08위치 미지정, 사진 미등록, 기간 만료, 설정 미완료 경고의 텍스트와 아이콘.
WarningSoft#FFF3D6주의 배너와 경고 배지 배경.
Error#B42318중복 작품 번호, 저장 실패, 접근 거부, 일괄 변경 실패와 파괴적 작업.
ErrorSoft#FEE4E2오류 메시지와 실패 결과 행 배경.
Focus#175CD3키보드 초점 링, 현재 입력 위치, 정보성 링크. 상태 구분 색상으로 단독 사용하지 않는다.

상태는 색상만으로 구분하지 않고 아이콘·문구·테두리를 함께 사용합니다.

4. 타이포그래피

  • 한글 기본: Pretendard Variable
  • 대체 글꼴: Pretendard, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, sans-serif
  • 본문 자간: -0.01em
  • 제목 자간: -0.025em
  • 본문 행간: 1.6

5. 간격·형태

  • 간격: 4px, 8px, 12px, 16px, 20px, 24px, 32px, 40px, 48px, 64px
  • 모서리: sm 8px, md 12px, lg 16px, full 9999px

6. 컴포넌트와 상태

AppShell

  • 변형: operator, member, initialSetup
  • 상태: default, loading, accessDenied
  • 적용: 모바일 운영자 화면은 상단 공방명과 검색 진입, 하단에 대시보드·작품·회원·더보기 내비게이션을 둔다. lg 이상에서는 왼쪽 내비게이션과 상단 검색으로 전환한다. 회원 화면은 내 작품 조회에 필요한 최소 내비게이션만 제공한다.

Button

  • 변형: primary, secondary, tertiary, destructive, fullWidth
  • 상태: default, hover, focusVisible, pressed, disabled, loading
  • 적용: 최소 높이는 44px이며 모바일 주요 완료 버튼은 48px을 권장한다. 버튼 문구는 저장, 12점 변경, 작품 등록처럼 결과를 구체적으로 쓴다. 로딩 중 중복 제출을 막되 현재 작업 문구를 유지한다.

IconButton

  • 변형: default, outlined, destructive
  • 상태: default, hover, focusVisible, pressed, disabled
  • 적용: 터치 영역은 최소 44×44px이다. 아이콘만 사용할 때 접근 가능한 이름을 제공하고, 삭제·닫기 외에는 가능하면 짧은 텍스트를 함께 표시한다.

WorkNumberSearch

  • 변형: dashboard, listHeader, detail
  • 상태: empty, typing, loading, matched, partialMatches, noResult, error
  • 적용: 작품 번호 입력을 첫 초점 대상으로 제공한다. 숫자와 하이픈 입력을 지원하고, 하이픈 없이 입력해도 서버 검색 결과를 반환할 수 있게 한다. 검색 결과에는 작품 번호, 사진, 회원, 현재 제작 단계, 선반 칸을 같은 영역에 표시한다.

StageSummaryCard

  • 변형: 건조, 초벌 대기, 초벌 완료, 시유, 재벌 대기, 완성, attention
  • 상태: default, hover, focusVisible, selected, loading
  • 적용: 현재 제작 단계명과 작품 점수를 함께 표시하고 누르면 해당 필터가 적용된 단계별 작품 목록으로 이동한다. 초벌 대기와 재벌 대기는 인접 카드로 배치하되 서로 다른 색과 문구로 구분한다.

StageTabs

  • 변형: scrollable, segmented, kilnSeparated
  • 상태: default, selected, focusVisible, disabled
  • 적용: 모바일에서는 가로 스크롤을 허용하되 선택 탭이 화면 안으로 자동 이동한다. 탭에는 단계명과 작품 수를 함께 표시한다. 다음 가마 후보 비교에서는 초벌 대기와 재벌 대기 두 탭만 제공한다.

FilterBar

  • 변형: mobileSheet, desktopInline
  • 상태: default, applied, loading, emptyResult
  • 적용: 작품 번호, 회원, 현재 제작 단계, 선반, 선반 칸을 필터로 제공한다. 적용된 조건은 삭제 가능한 칩으로 남기며 목록과 상세를 오간 뒤에도 이전 필터를 복원한다.

WorkCollection

  • 변형: mobileCards, tabletRows, desktopTable, kilnComparison
  • 상태: loading, populated, empty, error, selectionMode
  • 적용: 모바일 카드는 작품 번호, 정사각형 사진, 현재 제작 단계, 선반 칸, 회원 순서로 표시한다. lg 이상 표는 선택, 작품 번호, 사진, 현재 제작 단계, 선반 칸, 회원, 예상 완성 시점 순으로 고정한다. 표의 작품 번호와 선반 칸은 줄바꿈하지 않는다.

WorkCard

  • 변형: operator, member, compact, candidate
  • 상태: default, selected, focusVisible, missingPhoto, missingLocation, stale, disabled
  • 적용: 운영자용은 작품 번호를 가장 크게 표시하고 회원, 현재 제작 단계, 선반 칸을 함께 보여준다. 회원용은 작품 사진, 쉬운 진행 문구, 예상 완성 시점과 완성 여부만 보여주며 선반 칸과 내부 메모를 숨긴다.

StatusBadge

  • 변형: 건조, 초벌 대기, 초벌 완료, 시유, 재벌 대기, 완성, 위치 미지정, 기간 만료, 확인 필요
  • 상태: default, compact
  • 적용: 색상, 텍스트, 단계별 아이콘을 함께 사용한다. 초벌 대기와 초벌 완료처럼 색이 같은 배지는 문구와 아이콘으로 구분한다. 배지만으로 핵심 정보를 전달하지 않고 주변에 현재 제작 단계 레이블을 제공한다.

SelectionControl

  • 변형: checkbox, selectAllPage, selectAllFiltered
  • 상태: unchecked, checked, indeterminate, focusVisible, disabled
  • 적용: 모바일에서 체크 영역 전체를 44px 이상으로 제공한다. 현재 화면 전체 선택과 검색 결과 전체 선택을 구분하고, 선택한 작품 수를 항상 함께 표시한다.

BulkActionBar

  • 변형: mobileBottom, desktopTop, review
  • 상태: hidden, active, submitting, partialSuccess, success, failure
  • 적용: 하나 이상의 작품이 선택되면 고정 표시한다. 선택 작품 수, 단계 변경, 선반 칸 이동, 선택 해제를 제공한다. 모바일에서는 안전 영역을 반영하며 목록의 마지막 행을 가리지 않도록 하단 여백을 추가한다.

FormField

  • 변형: text, number, date, select, textarea
  • 상태: default, focus, filled, disabled, readOnly, error, success
  • 적용: 레이블을 항상 표시하고 placeholder만으로 항목을 설명하지 않는다. 오류는 입력 바로 아래에 원인과 수정 방법을 표시한다. 숫자 입력은 모바일 숫자 키패드를 사용하되 단위와 허용 범위를 화면에 명시한다.

WorkNumberInput

  • 변형: new, correction, initialSetup
  • 상태: suggested, checking, available, duplicate, invalidFormat, conflict
  • 적용: 2608-01 형식과 최대 일곱 자 조건을 입력 가까이에 표시한다. 자동 제안값은 운영자가 수정할 수 있어야 한다. 정정 화면은 이전 번호를 읽기 전용으로 보여주고 저장 전 새 번호와 변경 이력 생성을 확인한다. 월 99점 이후 규칙은 확인 필요로 처리한다.

MemberPicker

  • 변형: recentFirst, search, inlineCreate
  • 상태: empty, searching, results, selected, duplicateName, noResult, disabled
  • 적용: 검색 결과에는 회원명과 마스킹된 식별 정보, 현재 보관 작품 수를 함께 표시한다. 동명이인은 이름만으로 선택할 수 없게 한다. 작품을 연속 등록할 때 선택 회원 유지 여부를 명확히 보여준다.

PhotoUploader

  • 변형: workPhoto, shelfPhoto, gallery
  • 상태: empty, capturing, uploading, uploaded, reordering, failed, permissionDenied
  • 적용: 모바일에서 카메라 촬영과 앨범 선택을 모두 제공한다. 업로드 진행률, 재시도, 대표 사진을 표시한다. 사진 업로드 실패 시 입력한 나머지 정보를 잃지 않으며, 권한 확인을 거친 주소로만 이미지를 제공한다.

StageShelfPicker

  • 변형: stacked, bottomSheet, desktopPanel
  • 상태: empty, stageSelected, shelfSelected, cellSelected, unavailable, invalidCombination
  • 적용: 현재 제작 단계 선택 후 해당 단계에 연결된 선반과 선반 칸만 보여준다. 선택 결과는 초벌 대기 2번 선반 1칸처럼 전체 경로로 확인시킨다. 사용할 수 없는 선반 칸은 숨기지 말고 비활성화 사유를 제공한다.

ShelfGrid

  • 변형: picker, settings, photoReference
  • 상태: empty, available, occupied, selected, disabled, deletionBlocked
  • 적용: 선반 칸을 실제 배열에 가까운 격자로 보여주되 칸 번호를 항상 표시한다. 수용량은 기준이 제공된 경우에만 표시한다. 작품이 남은 선반 칸 삭제 시 이동이 필요하다는 안내와 연결 작품 목록을 제공한다.

EstimateDate

  • 변형: operator, member, completed, unknown
  • 상태: calculated, kilnDatePriority, recalculating, missingRule, completed
  • 적용: 운영자에게는 날짜와 계산 기준을 함께 보여주고, 회원에게는 예상 완성 시점과 변경 가능성을 쉬운 문장으로 표시한다. 완성 작품은 날짜 대신 완성을 표시한다. 계산 기준이 없으면 임의 날짜를 만들지 않고 확인 필요를 표시한다.

MemberSummaryCard

  • 변형: list, detail, workContext
  • 상태: active, expired, inactive, loading, conflict
  • 적용: 회원명, 회원권 종류, 잔여 횟수, 유효기간, 진행 중 작품 수를 표시한다. 잔여 횟수 변경은 변경 사유 입력과 전후 값 검토를 거치며 음수 저장을 막는다.

DetailHeader

  • 변형: work, member, settings
  • 상태: default, editing, staleData
  • 적용: 작품 상세에서는 작품 번호, 현재 제작 단계, 회원명과 상태·선반 칸 변경 버튼을 첫 화면에 배치한다. 다른 사용자가 수정한 상태이면 저장을 덮어쓰지 말고 최신 내용 확인 버튼을 표시한다.

HistoryTimeline

  • 변형: stage, location, workNumber, membership
  • 상태: collapsed, expanded, loading, empty
  • 적용: 변경 시각, 변경자, 이전 값, 새 값을 텍스트로 표시한다. 상태 색만으로 전후를 구분하지 않는다. 모바일 기본은 최근 이력 세 건이며 전체 보기를 제공한다.

ReviewDialog

  • 변형: bottomSheet, modal, destructive
  • 상태: open, submitting, success, partialSuccess, failure
  • 적용: 일괄 변경 전 작품 수, 현재 제작 단계 분포, 새 단계, 새 선반 칸을 검토한다. 파괴적 작업은 대상 이름을 다시 표시한다. 닫은 뒤에는 호출한 요소로 키보드 초점을 되돌린다.

BulkResultSummary

  • 변형: success, partialSuccess, failure
  • 상태: collapsed, expanded
  • 적용: 성공·실패 건수를 분리하고 실패 작품 번호와 이유를 행 단위로 제공한다. 실패가 있어도 성공 항목을 실패처럼 표시하지 않는다. 결과 목록을 닫기 전 다시 처리할 작품을 선택할 수 있게 한다.

WizardStepper

  • 변형: initialSetup, settings
  • 상태: notStarted, current, completed, incomplete, blocked
  • 적용: 공방 작업 기준, 회원, 현재 작품, 등록 범위 확인 순서를 표시한다. 각 단계는 자동 저장하며 중단 후 이어서 진행할 수 있게 한다. 완료 표시는 필수 데이터 검사를 통과한 경우에만 적용한다.

FeedbackMessage

  • 변형: inline, banner, toast
  • 상태: info, success, warning, error
  • 적용: 폼 오류는 inline, 화면 전체 상태는 banner, 방금 끝난 단순 작업은 toast를 사용한다. 저장 실패와 부분 실패는 자동으로 사라지는 toast만 사용하지 않는다. 보조 기술이 결과를 읽을 수 있도록 적절한 live region을 적용한다.

LoadingAndEmptyState

  • 변형: skeleton, empty, noSearchResult, accessDenied, networkError
  • 상태: visible, retrying
  • 적용: 빈 목록과 검색 결과 없음은 구분한다. 검색 결과 없음에는 입력 번호를 유지하고 다시 검색 또는 작품 등록으로 이동하는 행동을 제공한다. 스켈레톤은 실제 카드와 표 구조를 따라 레이아웃 이동을 줄인다.

7. 화면별 적용

operator-dashboard · 운영자 대시보드

첫 영역에 작품 번호 검색을 배치한다. 다음으로 건조·초벌 대기·초벌 완료·시유·재벌 대기·완성 수, 위치 미등록과 설정 미완료 항목을 보여준다. 다음 가마 후보는 초벌 대기와 재벌 대기를 분리해 진입시킨다. 회원 검색 결과에서 회원권 잔여 횟수를 바로 확인할 수 있는 축약 영역을 제공해 작품 진행 상태, 다음 가마 후보, 회원권 정보를 한 화면에서 시작할 수 있게 한다.

stage-work-list · 단계별 작품 목록

상단에 현재 제작 단계 탭과 작품 수, 작품 번호 검색, 선반·선반 칸·회원 필터를 둔다. 모바일 카드는 작품 번호와 선반 칸을 가장 크게 보여주고, lg 이상 표는 선택 체크박스와 작품 번호 열을 고정한다. 선택 항목과 필터는 작품 상세를 다녀와도 유지한다.

work-form · 작품 등록·수정

입력 순서는 회원, 작품 번호, 작품 사진, 현재 제작 단계, 선반과 선반 칸, 선택 항목인 크기·높이와 가마 예정일로 한다. 작품 번호는 다음 번호를 제안하되 굽 바닥의 실제 번호와 대조하게 하고 중복을 즉시 검사한다. 현재 제작 단계를 고르면 유효한 선반 칸만 표시한다. 신규 등록에는 저장하고 다음 작품 등록과 저장 후 상세 보기 버튼을 제공한다.

work-search-detail · 작품 번호 검색과 작품 상세

상단 검색창 아래에 작품 번호, 사진, 회원, 현재 제작 단계, 선반 칸, 예상 완성 시점을 첫 화면에서 모두 확인하게 한다. 상태 변경과 선반 칸 이동을 주요 버튼으로 제공하고, 회원권 잔여 횟수는 운영자에게만 요약 표시한다. 아래에는 단계·위치·작품 번호 정정 이력을 시간순으로 제공한다.

bulk-status-change · 여러 작품 상태 한꺼번에 변경

선택 작품 수와 현재 제작 단계 분포를 상단에 고정한다. 새 현재 제작 단계를 선택하면 해당 단계의 선반과 선반 칸만 선택할 수 있게 한다. 저장 전 작품 번호, 현재 값, 변경 후 값을 검토하고, 저장 후 성공과 실패를 분리해 실패 작품 번호와 이유를 보여준다. 다른 사용자의 최신 수정과 충돌한 작품은 덮어쓰지 않는다.

member-list-detail · 회원 목록과 회원 상세

모바일은 회원 목록에서 상세로 이동하고, lg 이상은 목록과 상세를 두 패널로 배치한다. 회원 상세 상단에 회원권 종류, 잔여 횟수, 유효기간을 표시하고 바로 아래에 진행 중 작품을 사진과 현재 제작 단계로 보여준다. 잔여 횟수 변경에는 변경 사유와 전후 값 확인을 요구하며 자동 차감 기능은 제공하지 않는다.

my-works · 회원 전용 내 작품 조회

진행 중 작품과 완성 작품을 구분한다. 작품 카드는 사진, 작품 번호, 회원용 진행 문구, 예상 완성 시점 또는 완성을 표시한다. 상세 선반 칸, 내부 작업 메모, 다른 회원의 작품과 회원권 정보는 노출하지 않는다. 예상 완성 시점이 계산되지 않으면 공방에서 확인 중이라고 표시한다.

login-access · 로그인과 회원 본인 확인

대표 운영자·보조 강사 로그인과 회원 본인 확인을 같은 화면 안에서 명확한 탭으로 분리한다. 운영 계정은 로그인 정보, 회원은 공방이 전달한 초대 주소와 최초 접근 코드를 사용한다. 오류 시 어떤 정보가 틀렸는지 과도하게 노출하지 않으며, 성공하면 역할에 맞는 화면으로 즉시 이동한다.

next-kiln-candidates · 다음 가마 후보 비교

초벌 대기와 재벌 대기를 첫 탭부터 분리하고 동시에 선택할 수 없게 한다. 작품 사진, 작품 번호, 선반 칸, 대기 기간, 크기와 높이 입력값, 관련 선반 사진을 비교한다. 크기·높이가 없으면 미입력 배지를 표시하되 후보 선택 차단 여부는 확인 필요로 둔다. 후보 선택 결과만 저장하며 가마 배치, 적재, 가마 회차와 소성 계획 화면은 만들지 않는다.

studio-workflow-settings · 공방 작업 기준 설정

대표 운영자만 수정할 수 있게 하고 보조 강사에게는 필요 시 읽기 전용으로 표시한다. 건조·초벌 대기·초벌 완료·시유·재벌 대기·완성별로 선반, 선반 칸과 단계별 기본 소요 기간을 설정한다. 작품이 남은 선반이나 선반 칸 삭제는 막고 연결 작품과 이동 필요 내용을 보여준다. 저장 후 예상 완성 시점 재계산이 필요한 범위를 안내한다.

initial-setup · 초기 설정

공방 작업 기준 설정, 회원 등록, 현재 보관 중인 작품 등록, 등록 범위 확인의 단계형 흐름을 사용한다. 각 단계는 자동 저장하고 중단 후 이어서 진행한다. 마지막 화면에서 단계별 작품 수, 선반 칸 미등록, 사진 미등록, 중복 작품 번호를 요약한다. 현재 보관 중인 작품 전체를 옮길지 여부는 확인 필요 항목으로 표시하고 대표 운영자가 등록 범위를 확인한 뒤 운영을 시작한다.

8. 에셋과 모션

  • 가정: 별도 로고가 제공되지 않았으므로 첫 버전 헤더는 생활도자 공방 이름을 텍스트 워드마크로 표시한다.
  • 24px 기준의 일관된 선형 SVG 아이콘 세트: 검색, 카메라, 사진, 작품, 회원, 선반, 건조, 초벌, 시유, 재벌, 완성, 달력, 이력, 경고, 설정.
  • 현재 제작 단계별 아이콘은 색상 없이도 구분되는 서로 다른 실루엣을 사용한다.
  • 작품 사진 미등록 placeholder는 실제 작품처럼 오인될 수 있는 예시 사진 대신 카메라 아이콘과 작품 사진 없음 문구를 사용한다.
  • 선반 사진 미등록 placeholder는 격자 형태의 선반 아이콘과 선반 사진 없음 문구를 사용한다.
  • 권장: 목록용 정사각형 미리보기와 상세용 원본 비율 이미지를 별도로 제공해 모바일 로딩을 줄인다.
  • 작품 사진과 선반 사진은 인증된 요청에만 제공되는 보호 자산으로 처리하고 공개 고정 주소를 화면에 노출하지 않는다.
  • 초기 설정과 빈 화면에는 장식용 스톡 사진보다 다음 행동을 설명하는 단순 SVG 안내 그림을 사용한다.
  • 기본 전환: 180ms cubic-bezier(0.2, 0, 0, 1)
  • prefers-reduced-motion 사용자는 불필요한 움직임을 제거합니다.
  • 다크모드: 초기 범위에서 제외

9. 접근성

  • KWCAG 2.2와 WCAG 2.1 AA를 기준으로 텍스트와 배경의 명도 대비를 맞춘다. 일반 텍스트는 4.5:1 이상, 큰 텍스트와 핵심 그래픽은 3:1 이상을 목표로 한다.
  • 모든 터치 대상은 최소 44×44px로 만들고, 인접한 체크박스와 아이콘 버튼 사이에 최소 8px 간격을 둔다.
  • 현재 제작 단계, 경고, 성공·실패는 색상만으로 구분하지 않고 텍스트, 아이콘 또는 패턴을 함께 사용한다.
  • 키보드 초점은 Focus 색상의 2px 이상 외곽선과 충분한 간격으로 표시하며, 모달과 하단 시트 내부에 초점을 가두고 닫은 뒤 호출 위치로 되돌린다.
  • 입력 항목에는 화면에 보이는 레이블을 제공하고 필수 여부, 단위, 형식 오류와 수정 방법을 입력 가까이에 표시한다.
  • 작품 사진의 대체 텍스트에는 작품 번호와 사진 순서를 포함한다. 장식용 이미지는 빈 대체 텍스트를 사용한다.
  • 표의 헤더와 데이터 셀을 의미상 연결하고, 모바일 카드 전환 후에도 작품 번호·현재 제작 단계·선반 칸의 읽기 순서를 유지한다.
  • 검색, 저장, 사진 업로드, 일괄 변경 결과는 보조 기술이 인식할 수 있는 상태 메시지로 알린다. 실패 메시지는 자동으로 사라지지 않는다.
  • 가로 스크롤 탭과 표에는 키보드 및 스크린 리더로 접근 가능한 대체 이동 방법을 제공한다.
  • 사진 촬영 권한이 거부되거나 카메라를 사용할 수 없는 경우 앨범 업로드와 재시도 방법을 제공한다.
  • 회원 전용 내 작품 조회에서는 내부 선반 칸과 다른 회원의 정보를 시각적으로 숨기는 데 그치지 않고 서버 권한 검사 결과에 따라 렌더링한다.
  • 날짜는 2026년 8월 25일처럼 읽기 쉬운 형식을 사용하고, 예상 완성 시점의 기준과 변경 가능성을 텍스트로 제공한다.
  • prefers-reduced-motion 설정이 있으면 화면 전환과 목록 재배치 애니메이션을 제거하고 즉시 상태를 갱신한다.
  • 모바일 확대를 막지 않으며 200% 확대와 좁은 화면에서도 작품 검색, 조회, 저장과 일괄 변경의 핵심 기능을 사용할 수 있게 한다.

10. 구현 체크리스트

  • 디자인 토큰을 CSS 변수 또는 Tailwind theme에 한 번만 정의합니다.
  • Pretendard와 지정 자간이 모든 한글 화면에 적용되는지 확인합니다.
  • 선택한 레이아웃 전략과 breakpoint가 화면마다 달라지지 않게 합니다.
  • 버튼·입력·표·대화상자의 focus, disabled, error 상태를 확인합니다.
  • 모바일과 데스크톱에서 핵심 사용자 흐름을 각각 끝까지 확인합니다.

조사 출처

  • Web Content Accessibility Guidelines (WCAG) 2.1 — 명도 대비, 키보드 접근, 상태 전달, 오류 식별 등 WCAG 2.1 AA 접근성 기준에 사용했다.
  • Pretendard — 별도 글꼴 지시가 없을 때 적용하는 한글 기본 글꼴의 배포 및 사용 정보를 확인하는 기준이다.
  • 스마트스토어 고객센터 — 제공된 UI/UX 조사에서 한국 운영 도구의 목록, 검색, 선택 후 일괄 처리 패턴을 검토하기 위한 참고 자료로 제시됐다. 생활도자 공방 고유 기능의 근거로 직접 전용하지 않았다.
  • Cafe24-마켓플러스 — 제공된 UI/UX 조사에서 다수 항목을 관리하는 운영 화면의 필터와 일괄 작업 구조를 참고하는 자료로 사용했다.
  • 알림톡 - 카카오비즈니스 — 카카오톡 완성 알림은 사업자 채널과 템플릿 승인 이후의 후속 범위임을 확인하는 참고 자료다. 첫 버전 UI에는 실제 발송 기능을 포함하지 않는다.
디자인 가이드 — 도예공방 운영 관리 서비스 | Prometheon