열 가지 가상 데모의 브랜드
공개 화면은 독립적인 가상 브랜드다. 실제 회사의 로고, 상품 사진, 연락처, 매출, 제휴 관계를 사용하지 않는다. 모든 거래·예약·상담·배송은 고정된 샘플 세계 안에서만 동작한다.
브랜드의 단일 구현은 feature/outreach/app/lib/src/outreach_theme.dart의 outreachTheme이며, 앱·운영 콘솔·Widgetbook·골든 테스트가 같은 함수를 호출한다. 화면은 CoUI 의미 토큰과 텍스트 역할을 사용한다.
| 가상 브랜드 | 성격 | 기본 색상 hue | 사용 맥락 |
|---|---|---|---|
| ONGIL EXPRESS | 명료함·이동·안정 | 215 | 노선·좌석 예약 |
| BARAMDEUL CC | 자연·여유·정돈 | 145 | 골프·패키지 예약 |
| GABYEOWOON TRAVEL | 탐색·따뜻함·가벼움 | 30 | 여행 상품 비교 |
| IEUM TOUR | 대화·발견·개성 | 275 | 여행 탐색·상담 |
| DOYAK ACADEMY | 집중·계획·신뢰 | 245 | 시험 목표·수강 |
| BODEURAN BABY | 돌봄·부드러움·명료함 | 350 | 월령 큐레이션·정기배송 |
| GOYO BEDDING | 차분함·편안함·정돈 | 175 | 침구 탐색·주문 |
| SEOMGYEOL BREWERY | 섬·공예·탐험 | 195 | 브랜드·방문·판매처 |
| HANGEORUM ENGLISH | 호기심·성장·친근함 | 55 | 레벨 체험·상담 |
| DAMON GALBI | 따뜻함·모임·정성 | 5 | 룸·선물 예약 |
실제 구현한 7축
| 축 | 결정과 구현 | 근거·범위 |
|---|---|---|
| 색 | PrimitiveColors.generate에 브랜드별 hue, 공통 saturation/lightness와 보조 hue 오프셋을 주입하고 CoUI 의미 매핑으로 라이트·다크 생성 |
같은 정보 구조를 유지하면서 브랜드별 방향을 구분한다. 원색 값은 테마 파일 한 곳에 있다. |
| 타이포 | CoUI CoreTypography.coui의 17개 역할. 본문은 번들 Pretendard를 사용한다. |
제목·본문·라벨 역할을 공유하며 화면별 임의 글자 크기를 만들지 않는다. 브랜드별 글꼴·굵기 재정의는 현재 없다. |
| 형태 | 공통 버튼 CoreRadius.radius12, 카드 CoreRadius.radius16 |
손가락 조작과 읽기 중심의 친근한 형태를 공유한다. 브랜드별 형태 차이는 현재 없다. |
| 간격·밀도 | Gap.space*와 CoUI 기본 컴포넌트 간격, XL 조작 버튼 |
좁은 화면에서는 단일 열, 가용 폭이 충분할 때만 두 열을 사용한다. |
| 효과 | CoUI 기본 표면·테두리·그림자·상태 레이어·포커스 토큰 | 브랜드별 임의 그림자를 덧붙이지 않는다. |
| 모션 | CoUI 기본 컴포넌트 모션 | 별도 브랜드 애니메이션은 없다. 기준 골든은 애니메이션을 고정한다. |
| 아이콘 | CoUI 컴포넌트의 기본 Lucide 아이콘과 크기 | 실제 회사 로고나 별도 이미지 아이콘을 복제하지 않는다. |
각 브랜드의 Widgetbook에는 실제 테마의 의미 색 조합·대비 수치, 17개 타이포 역할, 버튼의 활성·보조·비활성 상태와 상호작용이 있다. 색 이외의 축을 공통으로 유지하는 것은 현재 구현 범위이며, 열 개가 모두 별도의 형태·모션 체계를 가진다고 주장하지 않는다.
측정과 시각 검증
feature/outreach/widgetbook/test/outreach_widgetbook_test.dart는 열 브랜드 × 라이트·다크 × 여섯 의미 색 조합을 CoreContrast.ratio로 측정한다. 본문 기준 4.5:1을 요구한다. 측정 결과 표는 최종 테마 검증 후 이 문서 아래에 기록한다.
골든은 기능 소유 feature/outreach/app/test/golden/outreach_golden_test.dart에 있다. 열 데모 각각 정상·검증 오류·빈 상태·운영 콘솔을 실제 OutreachPage로 그린다. 360px/데스크톱 × 라이트/다크 × 한국어/아랍어 × 글자 배율 1.0/1.3을 pairwise로 계획한다. 각 시나리오 6개, 총 240개 변형이다. Dart 업무 세계의 기준 시각은 2026-10-16T09:00:00Z다.
기준 이미지 생성·비교 환경은 이 저장소의 tool/golden/update.sh와 CI 계약인 Darwin/arm64다. 캡처, 기준 생성, 비교, 갤러리 배포는 서로 별도의 증거다. 모바일 큰 글자·아랍어 RTL은 자동 레이아웃 검사와 골든의 검토 대상이며, 번역의 언어 전문가 검수나 모든 보조공학의 적합성을 의미하지 않는다.
최종 의미 색 대비 실측
2026-10-16, Darwin/arm64, 고정된 의존성으로 위 Widgetbook 테스트를 실행했다. 테마의 최종 high-contrast 의미 매핑과 호스트 표면 토큰을 함께 측정한 결과다. 표의 여섯 조합 모두 본문 AA 4.5:1 이상이다. 초기 일반 매핑의 세 브랜드 버튼 대비 미달을 발견해 중앙 테마에서 수정한 뒤 다시 측정했다.
| 브랜드 | 테마 | onSurface | onSurfaceVariant | onPrimary | primaryText | error | onPrimaryContainer |
|---|---|---|---|---|---|---|---|
| ONGIL EXPRESS | light | 21.000 | 14.740 | 15.387 | 15.387 | 15.648 | 12.547 |
| ONGIL EXPRESS | dark | 17.867 | 15.970 | 17.124 | 14.569 | 14.156 | 11.768 |
| BARAMDEUL CC | light | 21.000 | 14.359 | 11.624 | 11.624 | 15.648 | 10.238 |
| BARAMDEUL CC | dark | 17.867 | 16.062 | 18.497 | 15.737 | 14.156 | 9.183 |
| GABYEOWOON TRAVEL | light | 21.000 | 14.491 | 13.548 | 13.548 | 15.648 | 11.527 |
| GABYEOWOON TRAVEL | dark | 17.867 | 15.990 | 17.867 | 15.202 | 14.156 | 10.613 |
| IEUM TOUR | light | 21.000 | 14.795 | 16.560 | 16.560 | 15.648 | 13.001 |
| IEUM TOUR | dark | 17.867 | 15.970 | 16.487 | 14.027 | 14.156 | 12.395 |
| DOYAK ACADEMY | light | 21.000 | 14.879 | 17.671 | 17.671 | 15.648 | 13.537 |
| DOYAK ACADEMY | dark | 17.867 | 15.970 | 16.087 | 13.687 | 14.156 | 13.098 |
| BODEURAN BABY | light | 21.000 | 14.766 | 15.921 | 15.921 | 15.648 | 12.572 |
| BODEURAN BABY | dark | 17.867 | 15.990 | 16.583 | 14.109 | 14.156 | 11.903 |
| GOYO BEDDING | light | 21.000 | 14.318 | 11.368 | 11.368 | 15.648 | 10.089 |
| GOYO BEDDING | dark | 17.867 | 16.072 | 18.638 | 15.858 | 14.156 | 9.019 |
| SEOMGYEOL BREWERY | light | 21.000 | 14.459 | 13.048 | 13.048 | 15.648 | 11.216 |
| SEOMGYEOL BREWERY | dark | 17.867 | 16.072 | 18.050 | 15.358 | 14.156 | 10.197 |
| HANGEORUM ENGLISH | light | 21.000 | 14.213 | 11.051 | 11.051 | 15.648 | 10.022 |
| HANGEORUM ENGLISH | dark | 17.867 | 16.092 | 19.045 | 16.204 | 14.156 | 8.883 |
| DAMON GALBI | light | 21.000 | 14.766 | 15.670 | 15.670 | 15.648 | 12.502 |
| DAMON GALBI | dark | 17.867 | 15.990 | 16.754 | 14.255 | 14.156 | 11.771 |
명령: cd feature/outreach/widgetbook && flutter test --no-pub test/outreach_widgetbook_test.dart — 43개 테스트 통과. 색 대비 통과는 레이아웃·보조공학·문구 검수 전체의 통과를 대신하지 않는다.
최종 골든 실행 기록
2026-10-16 Darwin/arm64에서 최종 번들 다국어 글꼴·표면 토큰으로 다음 검증을 실행했다.
| 단계 | 실행 | 결과 |
|---|---|---|
| 캡처 | CO_GOLDEN_MODE=capture CO_GOLDEN_OUTPUT=<repo>/build/co_golden flutter test --no-pub test/golden/outreach_golden_test.dart |
240/240 통과, 40개 시나리오 manifest |
| 기준 생성 | 위 최종 캡처의 240개 PNG를 기능 소유 test/golden/goldens/에 보관 |
10개 suite × 4개 상태 × 6개 변형 |
| 비교 | CO_GOLDEN_MODE=compare flutter test --no-pub test/golden/outreach_golden_test.dart |
240/240 통과 |
| Widgetbook 검증 | flutter test --no-pub test/outreach_widgetbook_test.dart |
43/43 통과: 30개 use case, 실제 페이지 상태 전환, 데이터 보존, 120개 색 대비 실측 |
| 정적 검사 | 기능 Widgetbook·골든·커머스 테스트의 dart analyze |
오류·경고·info 없음 |
오류 시나리오는 실제 검증 오류를 발생시키고 그 알림을 스크롤해 캡처한다. 빈 상태도 실제 조건·목록·장바구니 상태를 바꾸고 페이지를 스크롤한다. 운영 시나리오는 동일 엔진의 실제 샘플 명령으로 예약·주문·구독·상담 기록을 만든다. 대체용 빈 화면이나 미리 그린 목업은 사용하지 않는다. 골든 갤러리와 Widgetbook 웹 빌드·공개 URL 검증은 호스트 배포 파이프라인의 별도 단계다.