앱 / 콘솔 분리 — 직원용 운영 도구 하나를 어느 표면에 두나

상태: 작업 기준 = B(역할로 둘) · 오너 확인 1건(§5). 대장의 role 은 어느 안이든 그대로 쓴다(§3). 관련: 에픽 #1455 · 이슈 #1462 · 역할표 docs/design/figma/roles.json · 대장 figma-screens.json. 읽은 때: 2026-11-02, Figma 「Cocode Scaffold App v1.0」 페이지 49:6 를 읽기 전용으로 읽었다(Figma 는 고치지 않았다).

1. 왜 정해야 하나

다른 세 샘플 앱(단골 예약 · 담다 쇼핑 · 배움 강의)은 손님 앱 + 관리자 콘솔이다. 공통 번들도 그 모양을 따라 역할 패키지가 나뉜다 (scaffold-booking: feature/feedback/{app,console} · feature/policy/console · feature/phone_auth/app). 이 앱은 Figma 화면 24종이 모두 직원 화면이라 손님 앱이 없다(페이지 머리말: 「병원 직원이 쓰는 B2B 운영 도구 · 접수, 진료 대기, 예약, 환자 차트, 수납, 통계」).

이 결정이 정하는 것: ① Pages 표면 app · console 에 무엇이 오르나 ② 포털의 「앱 | 관리자」 전환에 무엇이 보이나 ③ 다음 라운드의 셸 구조 ④ 데모 입구(F-12 DemoLoginPanel)의 페르소나.

2. Figma 에서 읽은 것 (근거)

# 본 것 어디서 뜻
E1 56프레임이 모두 같은 틀이다 — 데스크톱은 사이드바 240 + 상단 막대 64, 사이드바 7항목(대시보드 · 접수 · 대기 · 예약 · 환자 · 수납 · 통계 · 설정 — 「접수 · 대기」는 한 항목), 머리에 「<지점> · 관리자」, 아래에 로그인한 원장 HP-02@1440(159:5086) 외 데스크톱 24장 손님용 셸이 없다
E2 그 틀은 scaffold-booking 의 관리자 셸과 같은 부품이다 — 사이드바 6항목 · 머리 「가게 관리자」, 상단 막대 「설정 / 관리 · 설정 · 약관 · 정책」이 HP-13@1440 과 글자까지 같고 「관리 · 버그 · 개선」도 HP-19@1440 과 같다. booking 의 손님 셸은 위쪽 가로 메뉴(Web nav, SH-13@1440)다 SH-A1(179:1651) · SH-A10(278:4950) · SH-A13(293:7126) ↔ HP-13(279:13859) · HP-19(297:6283) 이 앱의 모든 화면은 「콘솔 틀」이다
E3 관리자급 화면도 같은 사이드바 안에 있다 — 약관 · 정책(HP-13) · 버그 · 개선(HP-16) · 관리(HP-19)는 사이드바에서 「설정」이 선택된 채 설정 메뉴 안(오른쪽 패널 · 게시판 · 관리 버튼)이다 HP-13·HP-16·HP-19·HP-24 의 상단 막대 「설정 / …」 떨어진 관리자 셸이 아니라 설정의 하위 영역이다
E4 디자이너 캡션이 역할을 적었다 — HP-16@390 「직원 · 설정에서 들어와요 · 병원 직원끼리 공유」, HP-19@390 「원장 · 관리자 권한 · 이슈 고르기」, HP-19@1440 「게시판의 관리 버튼으로 들어와요」, HP-14·HP-21·HP-22 의 1024 프레임 「관리자 · …」, HP-13@1440 「설정 메뉴 안 오른쪽 패널」 대장 caption 약관 · 정책 편집과 이슈 관리는 관리자급, 게시판은 직원
E5 폰은 루트 탭 4(홈 · 대기 · 환자 · 알림: HP-02·03·05·12)와 앱 바에 뒤로 가기가 있는 페이지 20장이다. 설정(HP-24) · 예약(HP-04) · 수납(HP-08) · 통계(HP-11)로 가는 입구(글자 · 앱 바 아이콘)는 홈 대시보드를 포함해 어느 폰 프레임에서도 찾지 못했다 폰 24장의 앱 바 · 하단 탭 · 글자 폰 내비게이션은 데스크톱 사이드바의 부분집합이다
E6 태블릿 8장은 직원 업무 5(HP-03·04·07·09·10)와 관리자 3(HP-14·21·22)뿐이고, 나머지는 「데스크톱 레이아웃에서 사이드바를 아이콘 레일로 접어 쓴다」(태블릿 규칙) 페이지 노트 245:4275 반응형 규칙은 두 영역이 같다
E7 공통 번들의 역할이 화면과 일대일이다 — 게시판 HP-16–18 = feedback(app) · 관리 HP-19–23 = feedback(console) · 약관 HP-13–15 = policy(console) booking feature/ 트리 번들을 그대로 가져오면 역할이 이미 나뉘어 있다
E8 로그인(HP-01)은 아이디 · 비밀번호 직원 로그인이다(「병원에서 받은 아이디로 로그인해 주세요 · 계정이 없다면 병원 관리자에게 초대를 요청하세요」). 휴대폰 번호 인증이 아니다 HP-01@1440·@390 공통 phone_auth 번들을 그대로 쓰지 않는다 · 시작 화면 3건(스플래시 · 번호 인증 · 데모 안내)은 이 앱에 해당 없음
E9 Figma 페이지의 섹션이 기기별 3개뿐이다 — 「데스크톱 · 1440」 24 · 「태블릿 · 1024 · 대표 화면」 8 · 「모바일 · 390」 24. 다른 세 앱은 같은 페이지를 「고객(수강생) 화면 · 관리자 화면 · 시작 화면」 × 기기로 역할 섹션까지 나눈다 페이지 49:6 · 49:4 · 49:5 · 49:7 의 섹션 이름 디자이너가 이 앱에서는 역할 층을 섹션으로 나누지 않았다 — 한 사용자 층의 도구로 그렸다

3. 대장의 역할 (결정)

role 은 「누가 쓰는 화면인가」다. 아래 표가 roles.json 이고 대장 56장에 그대로 들어갔다.

role 코드 프레임 (폰 · 태블릿 · 데스크톱) 뜻
start HP-01 2 (1 · 0 · 1) 로그인
staff HP-02–12 · 16–18 · 24 35 (15 · 5 · 15) 직원 업무: 대시보드 · 접수 · 대기 · 예약 · 환자 · 차트 · 수납 · 통계 · 알림 · 설정 · 버그 · 개선 게시판
admin HP-13–15 · 19–23 19 (8 · 3 · 8) 원장 · 관리자 권한: 약관 · 정책 편집(policy), 버그 · 개선 관리 → 작업 만들기 → 작업 상세 → 병합(feedback)

role 은 표면이 아니라 사용자 층이라 §4 의 어느 안을 골라도 바뀌지 않는다(안 A 에서는 admin 이 앱 안의 역할 가림 영역이 된다). 도구의 옛 규칙(코드의 -A/-S 글자)은 숫자뿐인 이 앱의 코드를 전부 customer 로 만들어 뜻이 틀려서, build_ledger.py 와 check_figma_screens.dart 가 roles.json 을 읽도록 넓혔다(파일이 없는 앱은 옛 규칙 그대로).

3-1. 안 B 의 프레임 매핑 (작업 기준 — 다음 라운드의 셸 구현이 그대로 쓴다)

대장의 56프레임을 안 B(role 이 admin 이면 console, 그 밖은 app)로 나눈 표다. 안 A 로 바뀌면 console 열이 전부 app 이 된다. 대장 key 는 docs/product/figma-screens.json 의 key(코드@폭)이고 — 는 그 기기 프레임이 없다는 뜻이다(태블릿은 「태블릿 규칙」으로 데스크톱을 아이콘 레일로 접어 쓴다).

표면 코드 화면 대장 key (폰 · 태블릿 · 데스크톱) 번들
app HP-01 로그인 HP-01@390 · — · HP-01@1440 로그인(아이디 · 비밀번호) — phone_auth 를 쓰지 않는다
app HP-02 대시보드 HP-02@390 · — · HP-02@1440 도메인(이 앱에서 새로)
app HP-03 접수 · 대기 HP-03@390 · HP-03@1024 · HP-03@1440 도메인(이 앱에서 새로)
app HP-04 예약 관리 HP-04@390 · HP-04@1024 · HP-04@1440 도메인(이 앱에서 새로)
app HP-05 환자 목록 HP-05@390 · — · HP-05@1440 도메인(이 앱에서 새로)
app HP-06 환자 차트 HP-06@390 · — · HP-06@1440 도메인(이 앱에서 새로)
app HP-07 차트 작성 HP-07@390 · HP-07@1024 · HP-07@1440 도메인(이 앱에서 새로)
app HP-08 수납 관리 HP-08@390 · — · HP-08@1440 도메인(이 앱에서 새로)
app HP-09 수납 처리 HP-09@390 · HP-09@1024 · HP-09@1440 도메인(이 앱에서 새로)
app HP-10 수납 완료 HP-10@390 · HP-10@1024 · HP-10@1440 도메인(이 앱에서 새로)
app HP-11 통계 HP-11@390 · — · HP-11@1440 도메인(이 앱에서 새로)
app HP-12 알림 HP-12@390 · — · HP-12@1440 도메인(이 앱에서 새로)
app HP-16 버그 · 개선 HP-16@390 · — · HP-16@1440 feedback(app)
app HP-17 글쓰기 HP-17@390 · — · HP-17@1440 feedback(app)
app HP-18 이슈 상세 HP-18@390 · — · HP-18@1440 feedback(app)
app HP-24 설정 HP-24@390 · — · HP-24@1440 도메인(이 앱에서 새로)
console HP-13 약관 · 정책 HP-13@390 · — · HP-13@1440 policy(console)
console HP-14 새 버전 작성 HP-14@390 · HP-14@1024 · HP-14@1440 policy(console)
console HP-15 게시 예약 완료 HP-15@390 · — · HP-15@1440 policy(console)
console HP-19 버그 · 개선 관리 HP-19@390 · — · HP-19@1440 feedback(console)
console HP-20 이슈 관리 HP-20@390 · — · HP-20@1440 feedback(console)
console HP-21 작업 만들기 HP-21@390 · HP-21@1024 · HP-21@1440 feedback(console)
console HP-22 작업 상세 HP-22@390 · HP-22@1024 · HP-22@1440 feedback(console)
console HP-23 병합 완료 HP-23@390 · — · HP-23@1440 feedback(console)

4. 앱 / 콘솔 — 두 안 (+ 한 안)

A. 앱 하나 B. 역할로 둘 (작업 기준) C. 콘솔 하나
app 표면 56프레임 전부(직원 + 관리자급을 역할로 가림) start + staff 37프레임(폰 16 · 태블릿 5 · 데스크톱 16) 비움
console 표면 비움(커널 기본 화면만) admin 19프레임(폰 8 · 태블릿 3 · 데스크톱 8) 56프레임 전부
Figma 일치(E1–E3 · E9) 가장 가깝다 — 한 셸, 설정 안의 관리 화면이 같은 사이드바 안, 페이지 섹션도 역할로 나뉘지 않음 콘솔 화면도 직원 사이드바(7항목 · 설정 선택)를 그려야 맞는다 → 셸을 공용 패키지로 한 번 짓고 두 호스트가 쓴다. 콘솔에서 설정 밖 항목은 앱으로 가는 링크 한 셸 — 단 앱이 비는 것이 어색
공통 번들(E7) policy·feedback 의 console 패키지를 앱 호스트에 얹는다 — 다른 세 앱과 호스트 배선이 다르다 번들 역할 그대로 — 가져와 Figma 에 맞추는 비용 최소 console 호스트에 app 역할(feedback)까지 얹는다
포털 「앱 | 관리자」 관리자 쪽이 비었다 → 오너 요건 ①(앱 · 어드민 라이브 뷰)을 이 앱은 못 채운다 둘 다 채워진다 앱 쪽이 비었다
데모 입구(F-12) 한 입구에서 직원 · 원장 페르소나를 골라 한 앱에 들어가고 메뉴가 역할로 갈린다 앱 입구 = 직원 페르소나, 콘솔 입구 = 원장 페르소나(다른 앱의 손님 · 관리자와 같은 모양) 콘솔 입구 하나
위험 요건 ① 미충족 · 호스트 배선이 다른 앱과 갈림 설정 메뉴가 두 표면에 걸쳐 「약관 · 정책」 · 「관리」 입구가 표면 사이 링크가 된다 폰 · 태블릿까지 console 호스트가 맡는다

B 를 작업 기준으로 하는 이유: ① 오너 요건 ① 「앱 · 어드민 라이브 뷰」를 두 표면 모두 채운다 ② 공통 번들 역할(E7)과 디자이너 캡션의 역할 표기(E4)가 이미 이 구분이다 ③ 다른 세 앱과 포털 · Pages 구조가 같다. 그래도 확정하지 않는 이유: Figma 가 한 셸이고 관리자급 화면이 설정 안에 있으며 페이지 섹션도 역할로 나뉘지 않아(E1 · E3 · E9) A 도 정당하다 — 비용(공용 셸 패키지)과 표면 간 링크가 걸린 선택이라 오너가 정한다.

5. 오너 확인 필요 (1건)

이 샘플을 B(앱 + 콘솔 두 표면) 로 만들까, A(앱 하나) 로 만들까?

6. 디자이너 확인 (이 앱만의 것 — 목록에 덧붙인다)

  1. 설정 메뉴가 프레임마다 다르다 — HP-24@1440 은 병원 정보 · 진료 시간 · 예약 규칙 · 알림 · 의료진 관리(4명) · 약관 · 정책 · 버그 · 개선(검토 대기 3 · 진행 중 작업 1) · 대기실 화면으로 보기 · 로그아웃이고, HP-13@1440 은 병원 정보 · 진료 시간 · 직원 · 권한(12명) · 알림 · 약관 · 정책 · 버그 · 개선 · 환자 화면으로 보기 · 로그아웃이다. 시간 표기도 「09:00 – 18:00」 ↔ 「09:00 ~ 18:00」.
  2. 폰에서 설정(HP-24@390) · 예약 · 수납 · 통계로 가는 입구가 Figma 에 없다 — 탭 4개(홈 · 대기 · 환자 · 알림)와 앱 바(알림 종 · 검색 · 뒤로 가기)뿐이고, 폰 24장의 글자에서도 그 입구를 찾지 못했다(알림 HP-12 의 「예약 환자가 도착했어요」 · 「수납이 끝나지 않았어요」 같은 항목이 유일한 단서).
  3. 일반 직원 시점 화면이 없다 — 사이드바 사용자는 모든 프레임에서 원장 한 사람이다. 설정의 어느 메뉴(병원 정보 편집 · 의료진 관리 · 약관 · 정책)가 원장 전용이고 직원에게는 가려지는지 정해야 한다(HP-16 캡션은 직원도 설정에서 게시판에 들어온다고 적었다).
  4. 「환자 화면으로 보기」 · 「대기실 화면으로 보기」가 가리키는 환자용 · 대기실 화면이 이 페이지에 없다.
  5. 스플래시 프레임이 없다 — 로그인이 첫 화면이다(시작 화면 3건은 해당 없음).
  6. 태블릿 8장이 폰용 상태 바(44)를 쓰고 홈 인디케이터는 없다 · scrim 5개의 실효 불투명도 0.192(README 「Figma 쪽에서 본 것」).

7. 다음 라운드가 이어받을 것