[{"data":1,"prerenderedAt":1496},["ShallowReactive",2],{"doc:\u002Fhistory\u002Fhistory.20260519":3},{"id":4,"title":5,"body":6,"description":1464,"extension":1489,"meta":1490,"navigation":1491,"path":1492,"seo":1493,"stem":1494,"__hash__":1495},"docs\u002Fhistory\u002Fhistory.20260519.md","2026-05-19 — 디자인 가이드 페이지 + Cloudflare 프로덕션 배포",{"type":7,"value":8,"toc":1463},"minimark",[9,13,18,27,30,37,93,97,195,199,220,222,226,295,299,359,363,423,427,466,470,529,533,536,690,694,792,796,863,867,963,967,1093,1097,1135,1139,1187,1191,1226,1230,1237,1337,1339,1343,1435,1439],[10,11,5],"h1",{"id":12},"_2026-05-19-디자인-가이드-페이지-cloudflare-프로덕션-배포",[14,15,17],"h2",{"id":16},"한-줄-요약","한 줄 요약",[19,20,21,22,26],"p",{},"Relay-inspired 정본을 시각화한 ",[23,24,25],"code",{},"\u002Fguide"," 라이브 카탈로그 페이지(18섹션)를 추가하고, 디자인 피벗 전체(Phase 1~2b-2 + 가이드)를 Cloudflare Pages 프로덕션에 배포. 이후 UI 스케일 115%·1400px 폭·정렬 근본수정·로고 이미지화·푸터 다크·채널칩 통일·카드강조 B·헤더 불투명·수신자 접기 등 페이지 설정과 **Phase 2b-3(발송조회\u002F통계\u002F주소록\u002F충전\u002F인증)**까지 적용하며 재배포(총 10회).",[28,29],"hr",{},[14,31,33,34,36],{"id":32},"_1-디자인-가이드-페이지-guide","1. 디자인 가이드 페이지 (",[23,35,25],{},")",[38,39,40,59,78,87],"ul",{},[41,42,43,46,47],"li",{},[23,44,45],{},"app\u002Fpages\u002Fguide.vue"," 신설 — sticky 사이드 nav + 스크롤 스파이 + 18섹션 라이브 카탈로그.\n",[38,48,49,52],{},[41,50,51],{},"소개(hero) · 01 원칙(7) · 02 컬러(ink 11단\u002Faccent\u002Fsemantic\u002F채널 도트) · 03 타이포 · 04 간격 · 05 라운드·그림자 · 06 버튼 · 07 Pill · 08 폼 · 09 배지 · 10 카드 · 11 테이블 · 12 빈상태 · 13 토스트 · 14 미리보기 폰 5종 · 15 레이아웃 · 16 5-카드 골격+매트릭스 · 17 톤",[41,53,54,55,58],{},"실제 ",[23,56,57],{},"App*"," 컴포넌트로 라이브 예시 렌더 (AppBadge\u002FAppEmptyState\u002FPhone·Kakao·Rcs·Email·Push Preview\u002FAppFormRow\u002FAppRadioGroup\u002FAppSegmented\u002FAppSendFormCard).",[41,60,61,65,66,69,70,73,74,77],{},[62,63,64],"strong",{},"결정",": 핸드오프 ",[23,67,68],{},"design-guide.jsx","는 구 토큰이 섞인 stale 아티팩트(",[23,71,72],{},"--color-sky-vivid",", Noto Sans KR, 1200px, indigo 그라데이션)라 그대로 복사하지 않고, ",[62,75,76],{},"현재 정본(ink\u002Faccent, Inter\u002FJetBrains Mono, 1400px, r-sm\u002Fmd\u002Flg, shadow-soft\u002Fpopover\u002Fmodal)에 맞춰 값·라벨 재작성",". 가이드 표기값 = main.css 일치.",[41,79,80,83,84,86],{},[23,81,82],{},"app\u002Fpages\u002Fhome.vue"," 바로가기에 \"디자인 가이드\"(",[23,85,25],{},") 링크 추가.",[41,88,89,90,92],{},"검증: ",[23,91,25],{}," HTTP 200 (87.6KB), 컴파일·하이드레이션 오류 0.",[14,94,96],{"id":95},"_2-cloudflare-pages-프로덕션-배포","2. Cloudflare Pages 프로덕션 배포",[38,98,99,114,131,138,184],{},[41,100,101,102,105,106,109,110,113],{},"빌드: ",[23,103,104],{},"pnpm build"," (Nitro ",[23,107,108],{},"cloudflare-pages"," 프리셋) → ",[23,111,112],{},"dist\u002F"," 1.35MB \u002F gzip 423KB.",[41,115,116,117,120,121,126,127,130],{},"인증: ",[23,118,119],{},"wrangler whoami"," → ",[122,123,125],"a",{"href":124},"mailto:info@malgnsoft.com","info@malgnsoft.com"," (account ",[23,128,129],{},"d2b8c552…",", 기존 배포 계정 동일).",[41,132,133,134,137],{},"배포: ",[23,135,136],{},"npx wrangler@4 pages deploy dist --project-name=malgn-noti --branch=main"," (프로덕션).",[41,139,140,141],{},"결과:\n",[38,142,143,159,166],{},[41,144,145,146,151,152,155,156,158],{},"프로덕션: ",[122,147,148],{"href":148,"rel":149},"https:\u002F\u002Fmalgn-noti.pages.dev",[150],"nofollow"," — ",[23,153,154],{},"\u002Fhome","·",[23,157,25],{}," HTTP 200",[41,160,161,162],{},"배포 alias: ",[122,163,164],{"href":164,"rel":165},"https:\u002F\u002F4b3da057.malgn-noti.pages.dev",[150],[41,167,168,169,172,173,172,176,179,180,183],{},"라이브 마커 확인: ",[23,170,171],{},"gnb-wrap"," · ",[23,174,175],{},"ai-card",[23,177,178],{},"credit-hero"," · Inter 폰트 · ",[23,181,182],{},"ink-900"," · \"운영 콘솔\"",[41,185,186,187,190,191,194],{},"배포 시점 working tree 기준이라 ",[23,188,189],{},"guide.vue","\u002F",[23,192,193],{},"home.vue","\u002F문서가 git 미반영 상태였음 → 본 커밋으로 라이브 ↔ git 일치화.",[14,196,198],{"id":197},"_3-git","3. Git",[38,200,201,207],{},[41,202,203,206],{},[23,204,205],{},"main"," 직접 커밋·푸시 (브랜치는 main 단일 운영 — 2026-05-18 사용자 결정 유지).",[41,208,209,210,212,213,215,216,219],{},"범위: ",[23,211,45],{},"(신규), ",[23,214,82],{},"(가이드 링크), ",[23,217,218],{},"doc\u002FDESIGN.md","(§0 현황), 이 history + README 인덱스.",[28,221],{},[14,223,225],{"id":224},"_4-전역-ui-스케일-115-재배포","4. 전역 UI 스케일 115% + 재배포",[38,227,228,231,256,259,288],{},[41,229,230],{},"요청: 전체 폰트 스케일 ~115% 확대.",[41,232,233,235,236,239,240,243,244,247,248,251,252,255],{},[62,234,64],{},": 카드 제목·헤딩·테이블 등 폰트가 px 하드코딩이라 ",[23,237,238],{},"--font-base","만 키우면 부분만 커짐. ",[23,241,242],{},":root"," 에 ",[23,245,246],{},"--ui-scale: 1.15"," 토큰 + ",[23,249,250],{},"body { zoom: var(--ui-scale); }"," 한 줄로 텍스트·간격·컴포넌트를 균일 비례 확대(브라우저 줌 효과). sticky GNB·모달·토스트 정상. 복원 = ",[23,253,254],{},"--ui-scale: 1",".",[41,257,258],{},"트레이드오프: 폰트만이 아니라 레이아웃·여백도 ~15% 확대(전체 비례). 텍스트-only는 타이포 스케일 재설계 필요(범위 큼) — 보류.",[41,260,261,262,265,266],{},"빌드 → ",[23,263,264],{},"wrangler pages deploy dist --branch=main"," 재배포.\n",[38,267,268,274],{},[41,269,161,270],{},[122,271,272],{"href":272,"rel":273},"https:\u002F\u002Fec3368a2.malgn-noti.pages.dev",[150],[41,275,276,277,280,281,172,284,287],{},"검증: 프로덕션 CSS 자산(",[23,278,279],{},"entry.*.css",")에 ",[23,282,283],{},"ui-scale:1.15",[23,285,286],{},"zoom:var(--ui-scale)"," 포함 확인.",[41,289,290,291,294],{},"변경 파일: ",[23,292,293],{},"app\u002Fassets\u002Fcss\u002Fmain.css"," 단일.",[14,296,298],{"id":297},"_5-디자인-폭-1400px-보정-재배포","5. 디자인 폭 1400px 보정 + 재배포",[38,300,301,304,319,336,355],{},[41,302,303],{},"요청: 디자인 너비 1400px.",[41,305,306,307,310,311,314,315,318],{},"진단: ",[23,308,309],{},"--container-max"," 토큰은 이미 ",[23,312,313],{},"1400px","였으나 §4의 ",[23,316,317],{},"body{zoom:1.15}","가 곱해져 화면 실제 폭 ≈ 1610px.",[41,320,321,324,325,120,328,331,332,335],{},[62,322,323],{},"수정",": ",[23,326,327],{},"--container-max: calc(1400px \u002F var(--ui-scale))",[23,329,330],{},"1217.4px × 1.15 = 1400px"," 화면폭. ",[23,333,334],{},"--ui-scale"," 변경 시 자동 유지(절대 디자인 폭). 본문·GNB·푸터 일괄.",[41,337,261,338,340,341],{},[23,339,264],{}," 재배포(3회차).\n",[38,342,343,349],{},[41,344,161,345],{},[122,346,347],{"href":347,"rel":348},"https:\u002F\u002F3ae53fbd.malgn-noti.pages.dev",[150],[41,350,351,352,287],{},"검증: 프로덕션 CSS에 ",[23,353,354],{},"container-max:calc(1400px\u002Fvar(--ui-scale))",[41,356,290,357,294],{},[23,358,293],{},[14,360,362],{"id":361},"_6-헤더본문-좌우-정렬-버그-수정-재배포","6. 헤더\u002F본문 좌우 정렬 버그 수정 + 재배포",[38,364,365,368,378,401,419],{},[41,366,367],{},"증상: sticky 헤더(GNB)가 본문보다 안쪽으로 들어와 좌우 끝이 어긋남.",[41,369,370,373,374,377],{},[62,371,372],{},"원인",": §4의 ",[23,375,376],{},"body { zoom }","이 스크롤바(html\u002Fviewport 기준)·sticky GNB·중앙정렬과 다른 좌표계 → sticky 헤더가 스크롤바 폭만큼 가로 오프셋.",[41,379,380,382,383,386,387,390,391,190,394,397,398,400],{},[62,381,323],{},": zoom을 스크롤 컨테이너인 ",[23,384,385],{},"html","로 이동 + ",[23,388,389],{},"scrollbar-gutter: stable",". 스크롤바·sticky·",[23,392,393],{},".app-container",[23,395,396],{},".gnb-inner","\u002F푸터가 동일 좌표계 → 좌우 끝 일치. ",[23,399,309],{}," calc·115%·1400px 모두 불변(html zoom 균일).",[41,402,261,403,405,406],{},[23,404,264],{}," 재배포(4회차).\n",[38,407,408,414],{},[41,409,161,410],{},[122,411,412],{"href":412,"rel":413},"https:\u002F\u002F2c1a6180.malgn-noti.pages.dev",[150],[41,415,351,416,287],{},[23,417,418],{},"html{scrollbar-gutter:stable;zoom:var(--ui-scale)}",[41,420,290,421,294],{},[23,422,293],{},[14,424,426],{"id":425},"_7-운영-컨벤션-문서화","7. 운영 컨벤션 문서화",[38,428,429,461],{},[41,430,431,434,435],{},[23,432,433],{},"CLAUDE.md"," §7.1 \"Git · 배포 · 작업 이력 (운영 컨벤션)\" 신규 — 그간 따라온 워크플로 규약화.\n",[38,436,437,443,450],{},[41,438,439,440,442],{},"Git: 단일 ",[23,441,205],{}," 운영, 커밋\u002F푸시는 명시 요청 시, Co-Authored-By trailer.",[41,444,133,445,120,447,449],{},[23,446,104],{},[23,448,264],{},", \"배포\"=빌드→배포→검증→커밋·푸시·history 한 흐름, working tree 기준→배포 후 git 일치.",[41,451,452,453,456,457,460],{},"이력: ",[23,454,455],{},"history.yyyyMMdd.md"," 하루 한 파일, 같은 날 추가는 ",[23,458,459],{},"§N","+README 인덱스 갱신.",[41,462,290,463,465],{},[23,464,433],{}," 단일 (문서, 무배포).",[14,467,469],{"id":468},"_8-페이지-타이틀-설명-줄-제거-재배포","8. 페이지 타이틀 설명 줄 제거 + 재배포",[38,471,472,483,505,525],{},[41,473,474,475,478,479,482],{},"요청: 페이지 타이틀 영역 3번째 줄(설명 ",[23,476,477],{},"\u003Cp>",") 제거 — 범위는 ",[62,480,481],{},"페이지 헤더 패턴 전체","(사용자 확인).",[41,484,485,486,489,490,493,494,497,498,501,502,504],{},"수정: ",[23,487,488],{},"main.css"," ",[23,491,492],{},".page-header p { display: none }",". ",[23,495,496],{},".page-header"," 쓰는 모든 페이지(발송 6종 + 향후) 일괄, 홈\u002F가이드는 다른 헤더라 무영향. 복원 = ",[23,499,500],{},"display"," 제거. 마크업 ",[23,503,477],{},"는 템플릿 유지(숨김).",[41,506,261,507,509,510],{},[23,508,264],{}," 재배포(5회차).\n",[38,511,512,518],{},[41,513,161,514],{},[122,515,516],{"href":516,"rel":517},"https:\u002F\u002F08d1a759.malgn-noti.pages.dev",[150],[41,519,520,521,524],{},"검증: 프로덕션 CSS ",[23,522,523],{},"page-header p{…display:none…}"," 확인.",[41,526,290,527,294],{},[23,528,293],{},[14,530,532],{"id":531},"_9-페이지-설정-묶음-로고정렬푸터채널-칩-재배포","9. 페이지 설정 묶음 (로고·정렬·푸터·채널 칩) + 재배포",[19,534,535],{},"사용자 요청을 모아 처리한 일괄 변경:",[38,537,538,560,600,610,640,650,674],{},[41,539,540,543,544,547,548,551,552,555,556,559],{},[62,541,542],{},"로고 이미지화",": 워드마크를 이미지대로 변경 — 다크 r-md 타일 + 화이트 글리프, \"맑은\"(700) + \"message\"(연회색). 아이콘은 lucide 단일로 없어 ",[23,545,546],{},"AppLogoMark.vue","(말풍선+스파클 커스텀 SVG, currentColor) 신설, GNB(헤더·드로어)·푸터·인증 일관. 단어 간격 축소(",[23,549,550],{},".gnb-logo"," gap 10→7 + ",[23,553,554],{},".gnb-logo-sub"," margin-left -5 → ~2px, ",[23,557,558],{},".auth-logo"," 8, 푸터 name-row 2).",[41,561,562,565,566,569,570,573,574,577,578,580,581,584,585,588,589,592,593,596,597,255],{},[62,563,564],{},"헤더\u002F푸터 ↔ 본문 정렬 근본 수정",": 원인은 zoom\u002F스크롤바가 아니라 ",[62,567,568],{},"CSS 단축속성 충돌"," — 페이지 루트 ",[23,571,572],{},"class=\"app-container page-body\"","에서 ",[23,575,576],{},".page-body { padding: 32px 0 64px }","가 ",[23,579,393],{},"의 좌우 패딩(32px)을 0으로 덮어써 본문만 풀블리드였음. ",[23,582,583],{},".page-body","를 ",[23,586,587],{},"padding-block: 32px 64px","(세로 전용)로 변경. 부수 가드: ",[23,590,591],{},"html { overflow-y: scroll }","(스크롤바 폭 고정), ",[23,594,595],{},".layout-default { overflow-x: clip }"," + ",[23,598,599],{},".layout-main { min-width: 0 }",[41,601,602,605,606,609],{},[62,603,604],{},"푸터 다크",": 배경 ",[23,607,608],{},"--ink-900",", 텍스트는 흰색 투명도 단계로 재배치. 1차 가독성 미흡 피드백 → 작은 텍스트(11~12px) 대비를 WCAG AA 기준으로 상향(회사명·강조 링크 = 순백, 사업자정보 0.75, 기본 0.72 등).",[41,611,612,615,616,619,620,190,623,577,626,629,630,190,633,190,636,639],{},[62,613,614],{},"채널 칩 통일",": KAKAO만 박스로 보인 원인은 ",[62,617,618],{},"클래스 충돌"," — 미리보기 셸 전역 ",[23,621,622],{},".kakao",[23,624,625],{},".rcs",[23,627,628],{},".ch-pill kakao\u002Frcs","에 누수. 셸 컨테이너를 ",[23,631,632],{},".phone .imsg",[23,634,635],{},".phone .kakao",[23,637,638],{},".phone .rcs","로 스코프 → 6채널 모두 SMS·EMAIL과 동일(점+모노 코드).",[41,641,642,645,646,649],{},[62,643,644],{},"타이틀 실사 이미지 검토",": 디자인 시스템(정보 우선·calm)과 충돌해 비권장. 비교 목업 페이지로 6안 제시 → 사용자 ",[62,647,648],{},"현행 유지"," 결정, 목업 페이지 폐기(미커밋).",[41,651,261,652,654,655],{},[23,653,264],{}," 재배포(6회차).\n",[38,656,657,663],{},[41,658,161,659],{},[122,660,661],{"href":661,"rel":662},"https:\u002F\u002Fcecb5166.malgn-noti.pages.dev",[150],[41,664,520,665,172,668,172,671,524],{},[23,666,667],{},".footer{background:var(--ink-900)}",[23,669,670],{},".phone .kakao{",[23,672,673],{},"page-body{…padding-block}",[41,675,290,676,678,679,212,681,678,684,678,687,255],{},[23,677,488],{},", ",[23,680,546],{},[23,682,683],{},"AppGnb.vue",[23,685,686],{},"AppFooter.vue",[23,688,689],{},"layouts\u002F{auth,default}.vue",[14,691,693],{"id":692},"_10-카드-헤더-단계번호-제거타이틀-강조-강조안-목업-배포","10. 카드 헤더 단계번호 제거·타이틀 강조 + 강조안 목업 배포",[38,695,696,703,725,736,753,781],{},[41,697,698,699,702],{},"요청: 발신\u002F수신자 등 카드의 ",[23,700,701],{},"01·02"," 단계 번호 삭제 + 영역 강조(우선 폰트 키우기).",[41,704,705,706,573,709,712,713,716,717,720,721,724],{},"적용: ",[23,707,708],{},"AppSendFormCard.vue",[23,710,711],{},".step"," 번호 요소 제거(발송 6종 전체, ",[23,714,715],{},"step"," prop은 호환 위해 유지·미렌더). ",[23,718,719],{},".card-header .title"," 13→15px·600→700·tracking -0.01em, ",[23,722,723],{},".card-header"," padding 14→16px.",[41,726,727,728,731,732,735],{},"강조 추가안 8종(현행\u002FA eyebrow\u002FB accent바\u002FA+B\u002FD dot\u002FF 헤더↔바디 accent 경계선\u002FC 섹션헤더 분리\u002FE 헤더톤) 비교용 ",[23,729,730],{},"app\u002Fpages\u002Fdev\u002Fcard-emphasis-mockups.vue"," 생성 — ",[62,733,734],{},"사용자 요청으로 배포 포함","(이전 title 목업과 달리 폐기 보류, 결정 시 정리).",[41,737,738,324,741,744,745,748,749,752],{},[62,739,740],{},"배포 사고·수정",[23,742,743],{},"wrangler pages deploy","가 git HEAD 한글 커밋 메시지를 배포 메타로 읽다 ",[23,746,747],{},"Invalid commit message, must be valid UTF-8","로 실패. ",[23,750,751],{},"--commit-message \"\u003Cascii>\" --commit-dirty=true"," 명시로 해결. CLAUDE.md §7.1 배포 절차에 규약 반영.",[41,754,755,756],{},"빌드 → 재배포(7회차).\n",[38,757,758,764],{},[41,759,161,760],{},[122,761,762],{"href":762,"rel":763},"https:\u002F\u002F20c0b350.malgn-noti.pages.dev",[150],[41,765,766,767,770,771,489,774,777,778,780],{},"검증: 프로덕션 ",[23,768,769],{},"\u002Fdev\u002Fcard-emphasis-mockups"," 200, ",[23,772,773],{},"\u002Fsend\u002Fsms",[23,775,776],{},"class=\"step\""," 0건(번호 제거), ",[23,779,154],{}," 200.",[41,782,290,783,678,785,678,787,212,789,791],{},[23,784,708],{},[23,786,488],{},[23,788,730],{},[23,790,433],{}," §7.1.",[14,793,795],{"id":794},"_11-강조안-b-확정-적용-목업-폐기","11. 강조안 B 확정 적용 + 목업 폐기",[38,797,798,805,824,833,854],{},[41,799,800,801,804],{},"사용자 결정: 강조안 ",[62,802,803],{},"B (accent 좌측 바)"," 채택.",[41,806,705,807,810,811,813,814,817,818,813,820,823],{},[23,808,809],{},"AppSendFormCard","의 ",[23,812,723],{},"에 ",[23,815,816],{},"card-header--accent"," 클래스 부여 + ",[23,819,488],{},[23,821,822],{},".card-header--accent { border-left: 3px solid var(--accent); padding-left: 17px }",". AppSendFormCard 한정 스코프 → 발송 6종의 4카드(발신\u002F수신자\u002F메시지\u002F발송옵션)에만 적용, 홈·가이드 카드 무영향.",[41,825,826,827,596,829,832],{},"결정 완료로 ",[23,828,730],{},[23,830,831],{},"app\u002Fpages\u002Fdev\u002F"," 폐기.",[41,834,835,836],{},"빌드 → 재배포(8회차).\n",[38,837,838,844],{},[41,839,161,840],{},[122,841,842],{"href":842,"rel":843},"https:\u002F\u002Fe86488b5.malgn-noti.pages.dev",[150],[41,845,766,846,489,848,850,851,853],{},[23,847,773],{},[23,849,816],{}," 4건(B 적용), ",[23,852,769],{}," 404(목업 제거).",[41,855,290,856,678,858,678,860,862],{},[23,857,708],{},[23,859,488],{},[23,861,831],{},"(삭제).",[14,864,866],{"id":865},"_12-헤더-불투명화-수신자-카드-접기펼치기","12. 헤더 불투명화 + 수신자 카드 접기\u002F펼치기",[38,868,869,890,920,931,954],{},[41,870,871,872,875,876,596,879,882,883,889],{},"헤더: ",[23,873,874],{},".gnb-wrap"," 반투명(",[23,877,878],{},"rgba(255,255,255,.8)",[23,880,881],{},"backdrop-filter blur",") → ",[62,884,885,886],{},"불투명 ",[23,887,888],{},"var(--white)",", backdrop-filter 제거(성능).",[41,891,892,893,813,895,190,898,901,902,155,905,908,909,912,913,916,917,919],{},"수신자 카드 접기\u002F펼치기: ",[23,894,809],{},[23,896,897],{},"collapsible",[23,899,900],{},"defaultCollapsed"," prop + chevron 토글(헤더 클릭\u002F버튼, ",[23,903,904],{},"aria-expanded",[23,906,907],{},"aria-label",", ▾↔▸ 회전, 바디 ",[23,910,911],{},"v-show","). ",[23,914,915],{},"AppRecipientCard","만 ",[23,918,897],{}," 적용 — 발신정보·메시지·발송옵션·홈·가이드 무영향.",[41,921,922,923,926,927,930],{},"아이콘 위치: 사용자 요청으로 헤더 우측 끝 → ",[62,924,925],{},"타이틀 바로 옆","으로 이동(hint \"총 N명\"은 기존 ",[23,928,929],{},"margin-left:auto","로 우측 유지).",[41,932,933,934],{},"빌드 → 재배포(9회차).\n",[38,935,936,942],{},[41,937,161,938],{},[122,939,940],{"href":940,"rel":941},"https:\u002F\u002F7910043f.malgn-noti.pages.dev",[150],[41,943,520,944,947,948,489,950,953],{},[23,945,946],{},".gnb-wrap{background:var(--white)}","(불투명), ",[23,949,773],{},[23,951,952],{},"card-toggle"," 존재(접기 토글), 200.",[41,955,290,956,678,958,678,960,255],{},[23,957,488],{},[23,959,708],{},[23,961,962],{},"AppRecipientCard.vue",[14,964,966],{"id":965},"_13-phase-2b-3-발송조회통계주소록충전인증","13. Phase 2b-3 — 발송조회\u002F통계\u002F주소록\u002F충전\u002F인증",[38,968,969,1030,1044,1064,1087],{},[41,970,971,972,975,976],{},"핸드오프 ",[23,973,974],{},"other-pages.jsx"," 6개 페이지군 이식:\n",[38,977,978,992,998,1004,1017],{},[41,979,980,983,984,987,988,991],{},[23,981,982],{},"AppHistoryView.vue"," 신규 — 발송 조회(4 stat-card+segmented 기간+채널\u002F상태 필터+검색+테이블+페이지네이션). ",[23,985,986],{},"\u002Fhistory\u002F{sms,rcs,kakao,email,push}"," 5채널이 ",[23,989,990],{},"defaultChannel","만 달리해 공유.",[41,993,994,997],{},[23,995,996],{},"history\u002Fstats.vue"," — 4 KPI + 일별 stacked bar + 채널 donut(SVG) + TOP 템플릿 progress. 차트색 = DESIGN §2.4 채널 도트 체계(info\u002Famber\u002Fwarning\u002Faccent\u002Fviolet).",[41,999,1000,1003],{},[23,1001,1002],{},"contacts\u002Flist.vue"," — 240px 그룹 사이드바 + 필터바 + 연락처 테이블 + 선택 액션.",[41,1005,1006,151,1009,1012,1013,1016],{},[23,1007,1008],{},"charge\u002Findex.vue",[23,1010,1011],{},".content-2col",", 프리셋 5 + 결제수단 3 + 최근내역 \u002F aside ",[23,1014,1015],{},".credit-hero"," + 결제요약.",[41,1018,1019,155,1022,1025,1026,1029],{},[23,1020,1021],{},"login\u002Findex.vue",[23,1023,1024],{},"signup.vue"," — 기존 ",[23,1027,1028],{},"auth"," 레이아웃 셸 안에 카드 내용만 렌더(로그인: 비번토글\u002F유지\u002F찾기, 회원가입: 3-step 스테퍼).",[41,1031,1032,1033,1036,1037,678,1040,1043],{},"핸드오프 적응: 구 토큰 → ink\u002Faccent\u002Fsemantic+채널색, ",[23,1034,1035],{},"Icon","→",[23,1038,1039],{},"UIcon i-lucide-*",[23,1041,1042],{},"useToast","→Nuxt UI, 기존 공용 클래스 재사용.",[41,1045,1046,1047],{},"빌드 → 재배포(10회차).\n",[38,1048,1049,1055],{},[41,1050,161,1051],{},[122,1052,1053],{"href":1053,"rel":1054},"https:\u002F\u002F08f9446c.malgn-noti.pages.dev",[150],[41,1056,1057,1058,1061,1062,524],{},"검증: 10개 URL 200, stats ",[23,1059,1060],{},"donut-wrap","·charge ",[23,1063,178],{},[41,1065,1066,1067,212,1069,678,1072,678,1075,678,1078,678,1081,678,1084,1086],{},"변경: ",[23,1068,982],{},[23,1070,1071],{},"pages\u002Fhistory\u002F{sms,rcs,kakao,email,push,stats}.vue",[23,1073,1074],{},"pages\u002Fcontacts\u002Flist.vue",[23,1076,1077],{},"pages\u002Fcharge\u002Findex.vue",[23,1079,1080],{},"pages\u002Flogin\u002Findex.vue",[23,1082,1083],{},"pages\u002Fsignup.vue",[23,1085,218],{}," §0.",[41,1088,1089,1092],{},[62,1090,1091],{},"잔여",": 발신정보·메시지관리·캠페인·계정설정·문의·시스템페이지 — 핸드오프 시안 없음, 디자인 방향 별도 협의 필요.",[14,1094,1096],{"id":1095},"_14-gnb-발송-관리-메뉴-분리","14. GNB \"발송 관리\" 메뉴 분리",[38,1098,1099,1102,1115,1131],{},[41,1100,1101],{},"요청: 단일 \"발송 관리\" 드롭다운을 둘로 분리.",[41,1103,1104,1106,1107,1110,1111,1114],{},[23,1105,683],{}," MENU_TREE: ",[23,1108,1109],{},"발송 조회\u002F통계","(채널별 발송조회 5 + 구분선 + 통계) \u002F ",[23,1112,1113],{},"주소록","(연락처\u002F그룹\u002F수신거부) 2개 그룹으로 분리. 메뉴는 데이터+CSS 호버 기반이라 인덱스 의존 없음.",[41,1116,1117,1118],{},"빌드 → 재배포(11회차).\n",[38,1119,1120,1126],{},[41,1121,161,1122],{},[122,1123,1124],{"href":1124,"rel":1125},"https:\u002F\u002F3af5079b.malgn-noti.pages.dev",[150],[41,1127,766,1128,1130],{},[23,1129,154],{}," 200, \"발송 조회\u002F통계\"·\"주소록\" 렌더, \"발송 관리\" 0건.",[41,1132,290,1133,294],{},[23,1134,683],{},[14,1136,1138],{"id":1137},"_15-sms-타이틀-변경-수신자-카드-최상단-이동","15. SMS 타이틀 변경 + 수신자 카드 최상단 이동",[38,1140,1141,1154,1160,1182],{},[41,1142,1143,1146,1147,120,1150,1153],{},[23,1144,1145],{},"pages\u002Fsend\u002Fsms.vue",": H1·문서타이틀 ",[23,1148,1149],{},"SMS 발송",[23,1151,1152],{},"문자메시지 발송"," (브레드크럼은 이미 일치).",[41,1155,1156,1157,1159],{},"발송 6채널(sms\u002Fkakao\u002Frcs\u002Femail\u002Fpush\u002Fflow) 전체: ",[23,1158,915],{},"를 카드 스택 첫 번째(타이틀 다음)로 이동. 새 순서 = 수신자 → 발신\u002F플로우 → 메시지 → 발송옵션. 사용자 결정: 6채널 전체 적용(알림톡은 잠긴 수신자 카드가 먼저 노출되는 UX 감수).",[41,1161,1162,1163],{},"빌드 → 재배포(12회차).\n",[38,1164,1165,1171],{},[41,1166,161,1167],{},[122,1168,1169],{"href":1169,"rel":1170},"https:\u002F\u002F5ad321a1.malgn-noti.pages.dev",[150],[41,1172,1173,1174,1177,1178,1181],{},"검증: 소스상 6파일 모두 ",[23,1175,1176],{},"\u003CAppRecipientCard","가 첫 ",[23,1179,1180],{},"\u003CAppSendFormCard","보다 앞, 프로덕션 200.",[41,1183,1066,1184,255],{},[23,1185,1186],{},"pages\u002Fsend\u002F{sms,kakao,rcs,email,push,flow}.vue",[14,1188,1190],{"id":1189},"_16-알림톡-발신-정보-카드-최상단-복귀","16. 알림톡 발신 정보 카드 최상단 복귀",[38,1192,1193,1196,1202,1222],{},[41,1194,1195],{},"요청: 알림톡 페이지만 발신 정보 카드를 타이틀 다음(첫 카드)으로.",[41,1197,1198,1201],{},[23,1199,1200],{},"pages\u002Fsend\u002Fkakao.vue",": 발신 정보 ↔ 수신자 순서 교체 → 발신 정보 → 수신자 → 메시지 → 옵션. 알림톡은 발신 프로필+템플릿 선택 전 수신자\u002F메시지 잠금(progressive disclosure)이라 발신 정보 선행이 자연스러움. 나머지 5채널은 수신자-우선 유지.",[41,1203,1204,1205],{},"빌드 → 재배포(13회차).\n",[38,1206,1207,1213],{},[41,1208,161,1209],{},[122,1210,1211],{"href":1211,"rel":1212},"https:\u002F\u002F372eab23.malgn-noti.pages.dev",[150],[41,1214,1215,1216,1218,1219,1221],{},"검증: 소스 ",[23,1217,1180],{},"@85 \u003C ",[23,1220,1176],{},"@120, 프로덕션 200.",[41,1223,1066,1224,294],{},[23,1225,1200],{},[14,1227,1229],{"id":1228},"_17-발송-6채널-3-카드-재배치-템플릿-다이얼로그-캡처-기준","17. 발송 6채널 3-카드 재배치 + 템플릿 다이얼로그 (캡처 기준)",[19,1231,1232,1233,1236],{},"사용자 제공 캡처 6종 기준으로 발송 페이지를 ",[62,1234,1235],{},"템플릿 선택 \u002F 수신자 설정 \u002F 메시지 설정 3-카드"," 패턴으로 통일:",[38,1238,1239,1253,1259,1265,1275,1285,1295,1305,1319],{},[41,1240,1241,324,1244,1246,1247,489,1249,1252],{},[62,1242,1243],{},"공용 컴포넌트",[23,1245,809],{}," 접기 토글 → \"닫기\u002F열기\" 텍스트형. ",[23,1248,915],{},[23,1250,1251],{},"title"," prop 추가(기본 \"수신자\"), 액션 버튼 라벨\u002F스타일 캡처 기준(+ 직접입력\u002F+ 주소록에서 선택=다크, 수신자 정보 수정\u002F삭제=핑크), \"수신자 추가\" 라벨 제거.",[41,1254,1255,1258],{},[62,1256,1257],{},"SMS",": 3-카드, 발송목적 일반용\u002F인증용\u002F광고용, 발신번호 안내문, 국내\u002F국제 2줄 byte 카운터, 템플릿 행 통일(선택된 템플릿 없음 + 선택), 수신자 초기 공란.",[41,1260,1261,1264],{},[62,1262,1263],{},"알림톡",": 발신 프로필 셀렉트화, 메시지 설정=읽기전용 메타(템플릿코드\u002F카카오톡코드\u002F발송목적\u002F메시지유형\u002F강조유형\u002F내용\u002F보안여부), 프로필 모달 제거.",[41,1266,1267,1270,1271,1274],{},[62,1268,1269],{},"RCS",": 발신 브랜드+번호 2-셀렉트, 발송유형 3-단, 수신 대기 만료 기한, ",[23,1272,1273],{},"AppRcsTemplateDialog"," 신규(미리보기 미지원 안내).",[41,1276,1277,1280,1281,1284],{},[62,1278,1279],{},"이메일",": 발송목적\u002F발신메일\u002F제목(0\u002F1000)\u002F내용\u002F첨부파일(안내 4줄)+인라인 이메일 미리보기(텍스트\u002FHTML 토글), ",[23,1282,1283],{},"AppEmailTemplateDialog"," 신규(미리보기 포함).",[41,1286,1287,1290,1291,1294],{},[62,1288,1289],{},"PUSH",": 발송목적·입력유형 라디오, HTML 스타일 박스, 배지, 확장 6행(버튼\u002F미디어\u002FAndroid·iOS 미디어\u002F큰 아이콘\u002F그룹), Android·iOS 미리보기 2-up, ",[23,1292,1293],{},"AppPushTemplateDialog"," 신규.",[41,1296,1297,1300,1301,1304],{},[62,1298,1299],{},"Flow",": 안내 2줄, 플로우 이름 셀렉트+생성관리, 발송 순서 chips+메시지 채널 셀렉트, 읽기전용 발신\u002F목적\u002F유형, ",[23,1302,1303],{},"AppFlowManageDialog"," 신규(생성 관리 목록).",[41,1306,1307,1308],{},"빌드 → 재배포(14회차).\n",[38,1309,1310,1316],{},[41,1311,161,1312],{},[122,1313,1314],{"href":1314,"rel":1315},"https:\u002F\u002F093effc9.malgn-noti.pages.dev",[150],[41,1317,1318],{},"검증: 발송 6채널 + 홈 200, 컴파일\u002F하이드레이션 0.",[41,1320,1321,1322,190,1324,190,1326,190,1328,1330,1331,155,1333,596,1335,255],{},"신규 컴포넌트: ",[23,1323,1273],{},[23,1325,1283],{},[23,1327,1293],{},[23,1329,1303],{},". 변경: ",[23,1332,809],{},[23,1334,915],{},[23,1336,1186],{},[28,1338],{},[14,1340,1342],{"id":1341},"산출물-당일","산출물 (당일)",[38,1344,1345,1350,1355,1360,1375,1380,1385,1391,1401,1407,1417,1420,1423,1426,1429],{},[41,1346,1347,1349],{},[23,1348,45],{}," (신규, 18섹션 라이브 가이드)",[41,1351,1352,1354],{},[23,1353,82],{}," (바로가기 5번째: 디자인 가이드)",[41,1356,1357,1359],{},[23,1358,218],{}," (§0 적용 현황에 가이드 페이지 행 추가)",[41,1361,1362,1364,1365,1368,1369,678,1372,1374],{},[23,1363,293],{}," (전역 115% ",[23,1366,1367],{},"html{zoom}","+",[23,1370,1371],{},"scrollbar-gutter",[23,1373,309],{}," 1400px 보정, 헤더 정렬 수정)",[41,1376,1377,1379],{},[23,1378,433],{}," §7.1 운영 컨벤션(Git·배포·이력) 신규",[41,1381,1382,1384],{},[23,1383,546],{}," 신규(브랜드 마크 SVG) · AppGnb\u002FAppFooter\u002Fauth\u002Fdefault 로고·정렬·푸터 다크",[41,1386,1387,1390],{},[23,1388,1389],{},"doc\u002Fhistory\u002Fhistory.20260519.md"," + README 인덱스",[41,1392,1393,1394,1397,1398,1400],{},"강조안 ",[62,1395,1396],{},"B(accent 좌측 바)"," 확정 적용 → ",[23,1399,816],{},", 비교 목업 폐기",[41,1402,1403,1404,1406],{},"헤더 불투명화 + 수신자 카드 접기\u002F펼치기(",[23,1405,809],{}," collapsible)",[41,1408,1409,1412,1413,1416],{},[62,1410,1411],{},"Phase 2b-3"," — 발송조회(",[23,1414,1415],{},"AppHistoryView",")\u002F통계\u002F주소록\u002F충전\u002F로그인\u002F회원가입 6페이지군",[41,1418,1419],{},"GNB \"발송 관리\" → \"발송 조회\u002F통계\" + \"주소록\" 분리",[41,1421,1422],{},"SMS→문자메시지 발송 타이틀 변경 + 발송 6채널 수신자 카드 최상단 이동",[41,1424,1425],{},"알림톡 발신 정보 카드 최상단 복귀(disclosure 정합)",[41,1427,1428],{},"발송 6채널 3-카드 재배치(템플릿 선택\u002F수신자 설정\u002F메시지 설정) + 채널 템플릿 다이얼로그 4종 신규",[41,1430,1431,1432,36],{},"Cloudflare Pages 프로덕션 배포 ×14 (",[122,1433,148],{"href":148,"rel":1434},[150],[14,1436,1438],{"id":1437},"다음-단계-알려진-한계","다음 단계 \u002F 알려진 한계",[38,1440,1441,1457,1460],{},[41,1442,1443,1446,1447],{},[62,1444,1445],{},"Phase 2b-3 남음",": 이력·통계·주소록·발신정보·메시지관리·캠페인·충전·인증 페이지.\n",[38,1448,1449,1454],{},[41,1450,971,1451,1453],{},[23,1452,974],{},"에 발송조회\u002F통계\u002F주소록\u002F충전\u002F로그인\u002F회원가입 시안 존재.",[41,1455,1456],{},"발신정보·메시지관리·캠페인은 핸드오프 시안 없음 → 별도 협의.",[41,1458,1459],{},"미적용 화면은 backward-compat 별칭으로 색만 이행(간격·폰트·형태는 구 시안).",[41,1461,1462],{},"GitHub Actions 자동 배포 미구성 — 현재는 wrangler CLI 수동 배포.",{"title":1464,"searchDepth":1465,"depth":1465,"links":1466},"",3,[1467,1469,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,1488],{"id":16,"depth":1468,"text":17},2,{"id":32,"depth":1468,"text":1470},"1. 디자인 가이드 페이지 (\u002Fguide)",{"id":95,"depth":1468,"text":96},{"id":197,"depth":1468,"text":198},{"id":224,"depth":1468,"text":225},{"id":297,"depth":1468,"text":298},{"id":361,"depth":1468,"text":362},{"id":425,"depth":1468,"text":426},{"id":468,"depth":1468,"text":469},{"id":531,"depth":1468,"text":532},{"id":692,"depth":1468,"text":693},{"id":794,"depth":1468,"text":795},{"id":865,"depth":1468,"text":866},{"id":965,"depth":1468,"text":966},{"id":1095,"depth":1468,"text":1096},{"id":1137,"depth":1468,"text":1138},{"id":1189,"depth":1468,"text":1190},{"id":1228,"depth":1468,"text":1229},{"id":1341,"depth":1468,"text":1342},{"id":1437,"depth":1468,"text":1438},"md",{},true,"\u002Fhistory\u002Fhistory.20260519",{"title":5,"description":1464},"history\u002Fhistory.20260519","-WrrlxUI19tRkvihhQBL0qlnQ-2wVZL-cYZxVhXBQXU",1780643216574]