import { CrudPage } from '../components/Crud' import { Badge, TENANTS } from '../components/ui' import { getAdSchedules, createAdSchedule, updateAdSchedule, deleteAdSchedule } from '../api/client' // 광고 스케줄 편성 — 매장별 광고/미디어 재생 스케줄. const MEDIA = ['IMAGE', 'VIDEO', 'TEMPLATE'] const STATUS = ['SCHEDULED', 'ACTIVE', 'ENDED', 'PAUSED'] const stTone = (s: string) => s === 'ACTIVE' ? 'green' : s === 'SCHEDULED' ? 'blue' : s === 'PAUSED' ? 'yellow' : 'gray' export default function AdScheduleList() { return ( getAdSchedules()} onCreate={createAdSchedule} onUpdate={updateAdSchedule} onDelete={deleteAdSchedule} defaults={{ tenantCode: 'ZIOINFO', mediaType: 'IMAGE', status: 'SCHEDULED', priority: 5 }} columns={[ { key: 'adName', header: '광고명', render: r => {r.adName} }, { key: 'storeCode', header: '매장', render: r => {r.storeCode || 'ALL'} }, { key: 'mediaType', header: '미디어', render: r => {r.mediaType} }, { key: 'period', header: '기간', render: r => {(r.startAt || '').slice(0, 10)} ~ {(r.endAt || '').slice(0, 10)} }, { key: 'priority', header: '우선', align: 'center' }, { key: 'status', header: '상태', render: r => {r.status} }, ]} form={[ { key: 'tenantCode', label: '테넌트', type: 'select', opts: TENANTS }, { key: 'storeCode', label: '매장코드 (ALL=전체)', placeholder: 'ALL' }, { key: 'adName', label: '광고명' }, { key: 'mediaType', label: '미디어 유형', type: 'select', opts: MEDIA }, { key: 'mediaPath', label: '미디어 경로' }, { key: 'templateCode', label: '템플릿코드' }, { key: 'startAt', label: '시작 일시', type: 'datetime-local' }, { key: 'endAt', label: '종료 일시', type: 'datetime-local' }, { key: 'dailyStart', label: '일일 시작 시각', type: 'time' }, { key: 'dailyEnd', label: '일일 종료 시각', type: 'time' }, { key: 'priority', label: '우선순위(1~10)', type: 'number' }, { key: 'status', label: '상태', type: 'select', opts: STATUS }, ]} /> ) }