Skip to content

m.pregoi.com (admin-web) — Company Profile & footer/cookie cleanup (기획서)

상태: §2 목표 1·2·3·4 및 §3 구현 — admin-web 코드 반영됨 (배포는 별도). §4 접근 경로: 채택 모델 B 직접 URL — 기존과 동일하게 추가 게이트/리다이렉트 없음.

범위: Prego apps/admin-web (m.pregoi.com).

1. 배경 / 문제 (과거) 및 조치

이슈원인(과거)조치(반영됨)
초대 행 Remove모바일에서 텍스트 버튼이 레이아웃에 묻혀 잘 안 보임.빨간 X 아이콘 버튼 + aria-label (app/page.tsx CompanyInfoStep).
하단 Cookie settingsapp/layout.tsxLocalizedCookieConsentBanner 마운트.배너 미마운트; 미사용 래퍼 파일 삭제.
Employee PortalCompanyInfoStep에 보조 라벨.해당 라벨 제거.
저작권 한 줄각 페이지 <Footer /> + Footer.tsx.Footer.tsx 삭제, 모든 페이지에서 import/JSX 제거.

접근 경로 (제품·보안 검토 주제): 테넌트 온보딩/관리용 m 진입을 www.pregoi.com 메뉴를 통해서만 허용할지, 직접 URL(북마크·이메일 링크·주소창 입력)도 허용할지에 대한 정책 — §4에서 비교·추천.

2. 목표 (수용 기준)

  1. Remove → 빨간 X 아이콘

    • 초대 행 삭제 컨트롤을 텍스트 Remove 대신 시각적으로 분명한 빨간색 X 아이콘 버튼으로 교체.
    • type="button", 접근성: aria-label (예: Remove invite row / Remove this person) 필수. 포커스 링 유지.
    • 모바일·좁은 너비에서 가려지지 않도록: 아이콘 전용 히트 영역(최소 44×44px 권장), shrink-0, 행 레이아웃(flex/grid)에서 이메일/이름 필드와 겹침 없이 배치.
  2. Cookie settings 문구 제거 (admin-web 전 페이지)

    • m.pregoi.com에서 사용자에게 보이는 “Cookie settings” (및 동등한 설정 진입 카피가 노출되는 경우) 제거.
    • 채택: A) admin-web에서 쿠키 배너/설정 UI 미마운트 (§3.2). 대안 B)(최소 동의만 유지)는 미적용.
    • ConsentAwareAnalyticsNEXT_PUBLIC_GA_MEASUREMENT_ID가 있을 때만 로드됨 — 배너 없음일 때 GA는 동의 쿠키(예: www에서 설정)가 있을 때만 로드되는지 제품·법무와 확인.
  3. Employee Portal 라벨 삭제

    • 서브도메인 필드 아래 Employee Portal 텍스트 노출 제거 (불필요한 제품 힌트 정리).
  4. 저작권 푸터 문구 삭제 (admin-web 전 페이지)

    • m.pregoi.com 모든 라우트에서 하단 © … All rights reserved. 한 줄(및 동일 역할의 푸터 블록) 미노출.
    • 반영: Footer 컴포넌트 삭제 + 루트 정적 *.html에서 전역 <footer> 제거 (§3.4).
    • 법무: 마케팅 www 등 다른 호스트의 법적 고지와 역할 분담이 유지되는지 확인.

3. 구현 방향 (admin-web에 반영됨 — 아래는 설계·파일 참고)

3.1 초대 행 삭제 컨트롤

  • 주요 파일: apps/admin-web/app/page.tsxCompanyInfoStep, removeInviteRow와 연결된 버튼.
  • 패턴: 기존 인라인 SVG 또는 프로젝트에서 이미 쓰는 아이콘 세트(있다면 동일 라이브러리)로 X 아이콘 추가. 색: text-red-600 / dark 모드 대비.
  • 검증: iPhone SE 폭, Android Chrome, 초대 행 N개일 때 스크롤·오버플로 없음.
  • 진입점: apps/admin-web/app/layout.tsx적용됨: <LocalizedCookieConsentBanner /> 제거. ConsentAwareAnalytics·PREGO_CONSENT_EARLY_SCRIPT 유지.
  • 정리: 미사용 래퍼 components/ui/LocalizedCookieConsentBanner.tsx 삭제 (재도입 시 @platform/cookie-consent에서 직접 import).
  • 감사: grep -r "Cookie settings\\|openPregoCookieSettings\\|PREGO_COOKIE_SETTINGS" apps/admin-web 로 잔존 링크 확인.
  • 대안(미적용): “설정 버튼만 숨김”이면 packages/prego-cookie-consentCookieConsentBanner옵션 prop — 필요 시 별도 기획.
  • 문서: apps/admin-web/docs/PLAN-minimal-header-footer.md 갱신됨.

3.3 Employee Portal

  • 주요 파일: 동일 app/page.tsx — 해당 span 제거 또는 조건부 렌더링 폐기.
  • 디자인/카피팀에 대체 설명 불필요함이 확인된 상태에서 삭제.

3.4 저작권 푸터 제거

  • 적용됨: components/layout/Footer.tsx 삭제, 모든 페이지에서 Footer import·<Footer /> 제거.
  • 정적 데모 HTML (apps/admin-web/*.html 루트): 전역 <footer class="footer"> 블록 제거 (Next 앱과 동일하게 하단 브랜딩 줄 없음). 페이지 내부 링크용 signup-footer 등은 유지.
  • 주의: 푸터 제거 후 하단 여백·레이아웃(특히 모바일 safe area)이 깨지지 않는지 확인.

4. m 접근 경로: www 경유 vs 직접 URL (시스템·보안 비교 및 추천)

4.1 방식 정의

방식설명
A. www 메뉴 경유사용자가 반드시 www.pregoi.com에서 링크/버튼을 눌러 m.pregoi.com으로 이동하도록 UX·문서를 유도. (HTTP 레벨에서 “www에서만 오게” 강제하는 것은 별도 기술이 필요 — 아래 참고.)
B. 직접 URL주소창 입력, 북마크, 이메일/슬랙에 심은 딥링크(https://m.pregoi.com/?plan=free&region=sg 등)로 바로 m 접속 허용.

4.2 시스템 관점

항목A (경유 유도)B (직접 URL)
사용자 경험첫 방문 온보딩에는 “설명 있는 랜딩 → 이동”이 자연스러움. 반복 방문 관리자·지원팀은 북마크/딥링크 불가하면 불편.북마크·공유·지원 시나리오에 유리. 마케팅 캠페인·쿼리(plan, region)와 잘 맞음.
구현 복잡도“유도”만이면 링크/카피 수준. 강제하려면 Referer 검사, 일회용 토큰, www에서만 발급하는 signed query 등 추가 구현·운영 부담.별도 게이트 없이 표준 웹과 동일.
딥링크·이메일OTP 메일·운영 안내에 m 직링크를 넣기 어려워질 수 있음.이메일·문서에 안정적인 진입 URL 유지 가능.

4.3 보안 관점

항목A (경유·또는 Referer 기반 “강제”)B (직접 URL)
실질적 보호Referer/Origin 체크만으로 “www에서만”을 보장하기 어렵움(클라이언트·프록시·브라우저에 따라 누락·조작 가능). 보안 효과는 낮음이며 오탐·호환성 이슈 가능.공격면은 공개 URL이 존재한다는 점에서 A와 동일하게, 결국 인증·세션·테넌트 경계가 방어의 중심.
인증OTP·JWT·Zuplo 신뢰 헤더 등은 도메인과 무관하게 설계되는 것이 정상. m이 직접 열려도 비로그인 상태에서는 민감 데이터 없음.동일.
피싱·오인사용자 교육(공식 도메인만 사용)은 www/m 모두 필요.동일.
스캐닝·봇m 호스트를 숨겨도 DNS·인증서·공개 문서에 노출되면 은닉 효과 미미. WAF·레이트 리밋·봇 관리가 효과적.동일하게 엣지 정책으로 완화.

4.4 추천 (요약)

  • 직접 URL 접속(B)을 허용하는 것을 기본 추천한다. 이유: 실제 보안은 인증·게이트웨이·테넌트 스코프에 두고, 직접 URL은 UX·운영·딥링크에 필수에 가깝다.
  • **www 메뉴(A)**는 “첫 사용자 안내·마케팅 퍼널”로는 유지하되, 접속 경로를 HTTP로 강제하지 않는 것이 일반적으로 낫다.
  • 만약 규제·내부 정책으로 추가 완화가 필요하면: (1) 레이트 리밋 / Bot Fight / 지리 정책 등 인프라 통제, (2) 민감 작업만 별도 재인증, (3) 내부 전용이면 IP allowlist/VPN 등 명시적 네트워크 통제를 Referer 기반보다 우선 검토.

5. 검증 체크리스트

  • 주요 라우트에서 하단 Cookie settings 미노출.
  • GA 사용 시: 스테이징에서 동의 없이 GA가 로드되지 않는지(제품 정책에 따라 수동 확인).
  • Company Profile: 초대 행 빨간 X 노출·탭 가능.
  • Employee Portal 라벨 없음.
  • admin-web 저작권 푸터 없음 (Footer 제거).
  • pnpm --filter prego-admin-web run lint · pnpm run build (admin-web).

6. 관련 문서

Help