이 저장소의 출처 — 생성 · 가져온 도구 · 우회
이 저장소는 Figma 「Cocode Scaffold App v1.0」 의 한 앱 페이지(49:6)를 Flutter 앱으로 만드는 샘플 앱이다(에픽 #1455 · 이 앱의 이슈 #1462).
coco-de/scaffold-booking(7f28d21)이 먼저 만든 방식을 따랐고, coco-de/scaffold-shop 이 세 앱(shop · class · clinic)이 같은 도구를 쓰도록 일반화한 판을 가져왔다.
생성
| 항목 | 값 |
|---|---|
| 명령 | cob generate --base kernel -s project.yaml(project.yaml 은 name · demo 뿐, 생성할 때만 scaffold_only: true) |
| 핀 | kernel cf069bd0ae52715f8604397b8c033d4c985a20b1 · cob 0.6.0 · bricks db4eae51 · --layout bundle |
| CoUI | 생성 시점 coui_flutter-v0.176.0 / coui_core-v0.175.0 → #3 · #8 에서 coui_flutter-v0.177.1(9870648f992bdef5f37291b4b7f660055bf6f127) / coui_core-v0.175.1(e40c92f8cf94f765d3131b7955523f50eab99dfc) — 패키지별 태그 ref(짝 규칙: packages/coui_core 는 두 커밋 사이에 바뀌지 않았다). #3 은 두 패키지를 한 SHA + 줄 끝 태그 주석으로 고정했고 #8 이 정본 형태(패키지별 태그)로 바꿨다. tool/gates/check_coui_pin.py 는 두 형태를 다 읽는다 |
| Serverpod | 4.1.0 |
| 첫 커밋 | 9418835 — 생성 직후 트리에서 정체성 값(표시 이름 · 번들 ID)만 손질했다(scaffold-shop 첫 커밋과 이름만 다른 같은 775파일) |
다른 저장소에서 가져온 것 (M0)
| 이 저장소 | 가져온 곳 | 바꾼 것 |
|---|---|---|
| #1 Serverpod import 별칭 재생성 | booking #7 · shop #1 | 해시는 패키지 이름에서 나오므로 이 앱 값(_irpusal5 · _ie1dous5)으로 다시 만들었다 |
| #2 pub 미러 우회(dart-lang/pub#4912) | booking #4 (5fdf11a) |
없음 — git apply 그대로(shop #2 와 바이트까지 같다) |
| #3 · #8 coui 핀 상향 | 이 저장소에서 새로(#8 은 scaffold-class#3 과 같은 형태) | #3: 한 SHA + 줄 끝 태그 주석 · 핀 게이트가 그 형태도 읽도록 확장(시험 10개) → #8: 패키지별 태그 ref 로 정정(같은 커밋이라 렌더 불변, 골든 기준선은 다시 만들지 않았다) |
| #4 브랜드 테마 + 첫 골든 기준선 | shop #3 (ff868c4) |
Green 토큰으로 다시 생성, 시험의 대표 hex 두 표만 이 앱 값 · 기준 이미지는 CI 봇 커밋 e442d1e(PNG 120개) |
| #5 Figma 대조 도구 | shop #4 (9ccb2fc) |
화면 코드 MK→HP, 시험 suite clinic, 파일럿 HP-01@390(이 앱에는 스플래시 프레임이 없다) |
| #6 화면 대장 + 원본 PNG | shop #5 (ae3bbf2) |
역할표 roles.json 으로 두 도구 확장(코드가 숫자뿐인 앱) · 앱/콘솔 분리 근거 docs/product/surface-split.md |
상류가 닫히면 지울 우회
| 우회 | 상류 이슈 | 지우는 조건 |
|---|---|---|
| Serverpod import 별칭 재생성 커밋(#1) | coco-de/co-bricks#917 | 생성이 서버 코드젠을 한 번 돌려 별칭을 맞추면 새 핀에서 필요 없다 |
pub_git_prefetch.py · selfhost-prep 의 git-token(#2) |
coco-de/kernel#57, dart-lang/pub#4912 | Dart 3.14(pub#4914 포함)를 싣는 Flutter stable 로 FLUTTER_VERSION 을 올린 뒤 |
이 저장소에서 새로 정한 것 · 알아 둘 것
- 골든 기준 이미지는 CI(셀프호스트 macOS · Darwin/arm64)가 만들었다 — 테마 PR(#4)의 봇 커밋
e442d1e(PNG 120개). 로컬 capture 를 기준으로 옮기지 않는다. - 이 앱은 직원용 운영 도구 하나(손님 앱이 없다)다. 화면 코드가 숫자뿐이라 대장의 역할은
docs/design/figma/roles.json이 정하고, 앱/콘솔 소속은docs/product/surface-split.md(작업 기준 B · 오너 확인 1건)가 가진다. - 환자 정보가 나오는 화면이다 — 데모 데이터는 가상 인물만(co_faker). 실제 개인정보 · 진료 기록 금지. Figma 샘플의 이름 · 차트 번호 · 연락처도 가상이다.
- 로그인은 아이디 · 비밀번호(직원 계정)다 — 공통
phone_auth번들을 그대로 쓰지 않는다. 스플래시 프레임이 없어 시작 화면은 로그인 하나다. - main push 의 Pages 워크플로는
사이트 빌드까지 성공하고배포 (GitHub Pages)가 404 로 실패한다 — Pages 는 화면이 모두 끝난 뒤에 켠다(오너 지시). - Figma 의 앱 색 확장 컬렉션이 CoUI 라이브러리 변수 149개 중 49개만 덮는다 —
docs/design/figma/tokens/brand-colors.json의couiExtension.notOverriddenDiffering(Green 20개, 디자이너 확인 목록 44번). - 정체성 게이트(
tool/gates/check_identity.py)가 표시 이름을 지정 파일(identity.yaml의files) 밖에서 막는다 — 문서 · 주석 · 시험에는 앱 이름을 쓰지 않는다. 이슈 참조도 조직 문자열이 든…#N꼴이 아니라 번호로만 적는다.