kintex/mobile/components/tickets/sampleTickets.ts

79 lines
2.4 KiB
TypeScript

/*
* 샘플 티켓 데이터 — M10(티켓)·M9(환불) 백엔드 미구현 상태의 폴백.
* 실제 API 없음 → 존재하지 않는 엔드포인트 호출 금지(design.md SCR-M15 "신규·샘플").
* 서버 배선 시 lib/api.ts unwrap 봉투로 교체.
*/
export type TicketStatus = 'usable' | 'used' | 'canceled';
export type TicketFilter = 'active' | 'upcoming' | 'past';
export interface SampleTicket {
id: string;
eventName: string;
hallLabel: string;
period: string; // 표시용 기간 문자열
ticketType: string; // 권종
holderName: string; // 예매자(표시명)
quantity: number; // 매수
status: TicketStatus;
bookingNoMasked: string; // 마스킹된 예매번호
qrSeed: string; // QR placeholder 시드(실제 QR 아님)
filter: TicketFilter;
}
export const STATUS_META: Record<
TicketStatus,
{ label: string; tone: 'success' | 'muted' | 'error' }
> = {
usable: { label: '사용가능', tone: 'success' },
used: { label: '사용됨', tone: 'muted' },
canceled: { label: '취소', tone: 'error' },
};
export const FILTER_TABS: { key: TicketFilter; label: string }[] = [
{ key: 'active', label: '진행중' },
{ key: 'upcoming', label: '예정' },
{ key: 'past', label: '지난' },
];
export const SAMPLE_TICKETS: SampleTicket[] = [
{
id: 'TKT-2026-0314-88',
eventName: '스마트팩토리 코리아 2026',
hallLabel: 'KINTEX 제1전시장 3-4홀',
period: '2026. 03.14(금) - 03.16(일)',
ticketType: '바이어권',
holderName: '정관람',
quantity: 1,
status: 'usable',
bookingNoMasked: 'KTX-****-8245',
qrSeed: 'KTX-SFK2026-BUYER-8245',
filter: 'active',
},
{
id: 'TKT-2026-0210-12',
eventName: '2026 서울 국제 인공지능 컨퍼런스',
hallLabel: 'KINTEX 제2전시장',
period: '2026. 02.10 - 02.12',
ticketType: '일반권',
holderName: '정관람',
quantity: 2,
status: 'used',
bookingNoMasked: 'KTX-****-1120',
qrSeed: 'KTX-AI2026-STD-1120',
filter: 'past',
},
{
id: 'TKT-2026-0505-31',
eventName: '그린에너지 엑스포 2026',
hallLabel: 'KINTEX 제1전시장 5홀',
period: '2026. 05.05 - 05.07',
ticketType: '단체권',
holderName: '정관람',
quantity: 1,
status: 'usable',
bookingNoMasked: 'KTX-****-0505',
qrSeed: 'KTX-GREEN2026-GRP-0505',
filter: 'upcoming',
},
];