Figma 원본 이미지

reference/ 는 Figma 「Cocode Scaffold App v1.0」 페이지 49:6 의 화면 프레임 56개를 1배율로 내보낸 원본 PNG 다 (폰 390 24장 · 태블릿 1024 8장 · 데스크톱 1440 24장). 화면마다의 노드 id · 섹션 · 역할 · 기기 · 크기 · 캡션 · 원본 링크는 화면 대장 docs/product/figma-screens.json 에 있고, 대장의 image 가 이 폴더의 파일을 가리킨다. 구현 캡처와 견줄 기준 이미지다 — 구현 캡처로 덮어쓰지 않는다.

이 폴더와 대장은 scaffold-booking(7f28d21)의 docs/design/figma/ 와 같은 모양이고, 도구는 scaffold-shop 이 일반화한 판을 쓴다. 달라진 것: 대장을 손으로 짓지 않고 읽기 전용 레시피 tool/design/figma/export_ledger.figma.js 가 읽은 값을 tool/design/figma/build_ledger.py 가 digest 로 검산하며 짓는다(아래 「대장 다시 만들기」). 이 앱만의 것: 화면 코드가 숫자뿐이라(HP-01…HP-24) 역할을 roles.json 이 정한다(아래 「역할」).

내보낸 방법

대장의 insets · modes

역할 (role)

대장의 role 은 「누가 쓰는 화면인가」다. 다른 앱은 화면 코드의 접두 글자(-A 관리자 · -S 시작 · 그 밖 손님)가 정하지만, 이 앱의 코드는 모두 숫자뿐이라 roles.json 이 정한다 — 이 파일이 있으면 build_ledger.py(--roles)와 tool/design/check_figma_screens.dart 가 같이 읽는다(없으면 옛 규칙 그대로). -A/-S 글자가 붙은 코드는 파일이 있어도 글자가 이긴다.

role 코드 프레임 뜻
start HP-01 2 로그인
staff HP-02–12 · 16–18 · 24 35 직원이 업무에 쓰는 화면(접수 · 예약 · 환자 · 차트 · 수납 · 통계 · 알림 · 설정 · 버그 · 개선 게시판)
admin HP-13–15 · 19–23 19 원장 · 관리자 권한(약관 · 정책 편집, 버그 · 개선 관리 → AI 작업 → 병합)

근거와 앱/콘솔 소속은 docs/product/surface-split.md 에 있다.

대장 다시 만들기

Figma 가 바뀌었을 때(화면이 늘거나 캡션 · 띠가 바뀜) 다시 읽는다. 앱마다 바꾸는 값은 레시피 머리의 두 줄(페이지 id · 코드 접두사)뿐이다.

  1. tool/design/figma/export_ledger.figma.js 를 Figma MCP use_figma 에 그대로 넣어 돌린다(읽기 전용). 반환 {digest, notesDigest, count, rows, notes} 를 파일(예: /tmp/ledger-export.json)로 옮겨 적는다.
  2. 프레임 목록({fileKey, page:{id,name}, frames:[{nodeId,name,keys,device,width,height,section}]})을 준비한다 — get_metadata 의 페이지 XML 에서 Caption 프레임을 뺀 것.
  3. python3 tool/design/figma/build_ledger.py --frames <프레임 목록> --export /tmp/ledger-export.json --prefix HP — 옮겨 적기를 digest 로 검산하고 프레임 목록과 이름 · 크기를 대조해 대장을 쓴다(역할은 roles.json).

이 대장의 값: rows digest 260669d4 · notes digest 26f6b8ab · 56개.

한 화면 다시 내보내기

  1. 대장에서 그 화면의 node · width · height 를 확인한다.
  2. get_screenshot(fileKey 6yq0C3oSVVR2HdaOe807eB, nodeId = node, maxDimension = 긴 변, contentsOnly: true)으로 받은 URL 을 바로 curl -f -L -o docs/design/figma/reference/<key>.png "<url>" 로 저장한다(URL 은 곧 만료된다 — 어디에도 적지 않는다).
  3. 프레임 크기 · 캡션 · 상태 바 · 홈 인디케이터가 바뀌었으면 대장의 해당 필드도 고치고, exportedAt 을 내보낸 시각(UTC)으로 바꾼다.
  4. 확인: dart tool/design/check_figma_screens.dart — 필드 · key · PNG IHDR 크기 · 기기 폭 · 역할과, 대장이 가리키지 않는 PNG 를 본다. 계약 게이트 tool/gates/check_all.sh 도 이 검사를 부른다.

Figma 쪽에서 본 것 (Figma 는 고치지 않았다)