import { TransportOptions } from '@tencent/merlin-core'; import { BehaviorReportItemData, omit } from '@tencent/merlin-behavior'; import { KvTransport } from './KvTransport'; export interface Mmdata23865KvTransportOptions extends TransportOptions { /** 业务 Id,根据前端仓库来定,记录于 https://doc.weixin.qq.com/sheet/e3_AFoAlwZeAFIe50fu9FxSlGhzzjsuD?scode=AJEAIQdfAAohWLVYZ8AGkAQgbdAFw */ bizId: number; } function parseNetworkField(networkStr?: string) { if (!networkStr) { return 0; } switch (networkStr) { case 'wifi': return 1; case '2g': return 3; case '3g': return 4; case '4g': return 5; case '5g': return 6; default: return 0; } } /** Mmdata 23865 协议 kvReport 上报器 * * https://mmdata.oa.com/dist/#/protocol_detail?log_id=23865 */ export class Mmdata23865KvTransport extends KvTransport { constructor(options: Mmdata23865KvTransportOptions) { super({ ...options, logId: 23865, parser: (record) => { const { data, ctime, context } = record; const { env, base, scope } = context; return [ options.bizId, scope.contextId, scope.entranceId, ctime, env.location, parseNetworkField(scope.network), env.userAgent, base.user.extra, scope.redDotInfo, scope.recInfo, scope.pageName, scope.refPageName, scope.accessId, scope.refAccessId, scope.fromElementId, // 这里定义其实不对,它应当是与 fromAccessId 关联的,感觉分析时需要弃用此字段? scope.step, scope.extInfo, data.key, data.extInfo, data.behaviorType, omit(data, ['key', 'extInfo', 'behaviorType']), { screenHeight: scope.screenHeight, screenWidth: scope.screenWidth, clientHeight: scope.clientHeight, clientWidth: scope.clientWidth, }, scope.entranceInfo, ]; }, }); } }