46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
export type UserLogCategory =
|
|
| 'login'
|
|
| 'browse_product'
|
|
| 'order'
|
|
| 'pay'
|
|
| 'wechat_auth'
|
|
| 'browse_store'
|
|
| 'redeem'
|
|
| 'profile';
|
|
|
|
const USER_LOG_EVENT_CATEGORIES: Record<UserLogCategory, readonly string[]> = {
|
|
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<string, string>;
|