KT-NEGOWIZ fe_v2 의 서비스 안내 팝업을 우리 구조로 이식.
- frontend: GuideContent(공용 본문, VAT/배송비는 chat init 메타로 동적 표시)
+ ServiceInfoPopup(채팅 진입 시 자동 — 안내 보지 않기/오늘 하루 보지 않기)
+ ServiceGuidePopup(메뉴 유의사항·이용 가이드 버튼 수동 — X/배경/ESC 닫기)
+ useServiceInfoPopup 훅(서버 상태 + localStorage 오늘 하루)
+ apis/auth 에 popupStatus 쿼리·hidePopup 뮤테이션, 헬프데스크 연락처 반영,
한국어 단어 잘림 방지(break-keep)
- backend: GET /v1/auth/popup/status, POST /v1/auth/popup/hide
(authenticate 공통 인증 + supplier_users.hide_service_info 영구 저장), 테스트 4건
- db: supplier_users.hide_service_info 컬럼 — 00-init 테이블 정의 갱신,
기존 DB 보정은 alters/2026-07-07-supplier-users-hide-service-info.sql 별도 파일
(기준선 이후 보정 ALTER 는 alters/ 파일로 관리하도록 규칙 변경)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
import { X } from 'lucide-react'
|
|
import { Modal } from '@/components'
|
|
import { cn, interactive } from '@/lib'
|
|
import { GuideContent, GuideContactBox } from './GuideContent'
|
|
|
|
// 유의사항 및 이용방법 팝업 (메뉴 버튼으로 여는 수동형). X 버튼 · 배경 클릭 · ESC 로 닫는다.
|
|
export function ServiceGuidePopup({ onClose }: { onClose: () => void }) {
|
|
return (
|
|
<Modal onClose={onClose}>
|
|
<div className="flex max-h-[90vh] w-full max-w-[1000px] flex-col items-end gap-6 overflow-y-auto rounded-3xl bg-white px-12 pb-[56px] pt-8">
|
|
<button
|
|
type="button"
|
|
aria-label="닫기"
|
|
onClick={onClose}
|
|
className={cn(
|
|
'flex size-10 flex-shrink-0 items-center justify-center rounded-full bg-neutral-10',
|
|
interactive,
|
|
)}
|
|
>
|
|
<X size={20} className="text-neutral-80" />
|
|
</button>
|
|
<div className="flex w-full flex-col gap-6 px-[40px]">
|
|
<GuideContent />
|
|
<GuideContactBox />
|
|
</div>
|
|
</div>
|
|
</Modal>
|
|
)
|
|
}
|