export type UserLogCategory = | 'login' | 'browse_product' | 'order' | 'pay' | 'wechat_auth' | 'browse_store' | 'redeem' | 'profile'; const USER_LOG_EVENT_CATEGORIES: Record = { login: ['login_success', 'sms_login', 'sms_send', 'sms_verify_fail'], browse_product: ['home_view', 'product_click', 'product_detail_view'], order: ['order_confirm_view', 'order_submit'], pay: ['pay_success', 'pay_fail'], wechat_auth: ['wechat_login', 'wechat_phone', 'wechat_location', 'wechat_album'], browse_store: ['store_list_view', 'store_detail_view'], redeem: ['benefit_redeem_start', 'benefit_redeem_success'], profile: ['profile_update', 'bind_phone'], }; export const USER_LOG_CATEGORY_OPTIONS: Array<{ value: UserLogCategory | ''; label: string }> = [ { value: '', label: '全部' }, { value: 'login', label: '登录' }, { value: 'browse_product', label: '浏览商品' }, { value: 'order', label: '下单' }, { value: 'pay', label: '支付' }, { value: 'wechat_auth', label: '微信授权' }, { value: 'browse_store', label: '浏览门店' }, { value: 'redeem', label: '核销' }, { value: 'profile', label: '信息修改' }, ]; export function resolveUserLogCategory(eventName: string): UserLogCategory | null { for (const [category, events] of Object.entries(USER_LOG_EVENT_CATEGORIES) as Array< [UserLogCategory, readonly string[]] >) { if (events.includes(eventName)) return category; } return null; } export const USER_LOG_CATEGORY_LABELS = Object.fromEntries( USER_LOG_CATEGORY_OPTIONS.filter((o) => o.value).map((o) => [o.value, o.label]), ) as Record;