bmall-mcp 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -79,18 +79,30 @@ npx -y bmall-mcp
79
79
 
80
80
  ```
81
81
  提取埋点需求 https://stream.jd.com/ddrx/#/requirement/29582
82
+ 提取 iOS 端埋点 https://stream.jd.com/ddrx/#/requirement/29582
82
83
  ```
83
84
 
84
85
  参数:
85
86
  - `requirementUrl`: 埋点需求文档URL(必填)
87
+ - `platform`: 目标端(可选,默认自动检测)
88
+ - `iOS` | `Android` | `H5` | `Web` | `鸿蒙`
86
89
 
87
90
  功能:
88
- - 自动识别当前项目类型(iOS/Android/Web/H5/Flutter)
89
- - 根据项目类型筛选对应端的埋点
91
+ - 支持指定目标端,未指定时自动识别当前项目类型
92
+ - 根据目标端筛选对应的埋点
90
93
  - 生成结构化埋点文档
91
94
 
92
95
  ## Changelog
93
96
 
97
+ ### v1.0.6 (2026-01-13)
98
+ - ✅ 修正 page_code 为页面编号(非页面名称)
99
+
100
+ ### v1.0.5 (2026-01-13)
101
+ - ✅ 支持用户指定目标端(platform 参数),未指定时自动检测
102
+ - ✅ 支持一个模块多个页面,按页面分组显示埋点
103
+ - ✅ 状态筛选支持"新增"和"修改"
104
+ - ✅ 精简 Prompt 输出格式
105
+
94
106
  ### v1.0.4 (2026-01-13)
95
107
  - ✅ 优化 `mta_read` Prompt,精简输出格式
96
108
  - ✅ 过滤通用参数(bPin、buId 等),只输出业务参数
package/dist/index.js CHANGED
@@ -78,6 +78,11 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
78
78
  type: "string",
79
79
  description: "埋点需求文档URL,如 https://stream.jd.com/ddrx/#/requirement/29582",
80
80
  },
81
+ platform: {
82
+ type: "string",
83
+ enum: ["iOS", "Android", "H5", "Web", "鸿蒙"],
84
+ description: "目标端 (可选,默认自动检测当前项目类型)",
85
+ },
81
86
  },
82
87
  required: ["requirementUrl"],
83
88
  },
@@ -136,6 +141,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
136
141
  }
137
142
  if (request.params.name === "mta_read") {
138
143
  const requirementUrl = request.params.arguments?.requirementUrl;
144
+ const platform = request.params.arguments?.platform;
139
145
  if (!requirementUrl) {
140
146
  return {
141
147
  content: [
@@ -146,7 +152,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
146
152
  ],
147
153
  };
148
154
  }
149
- const prompt = getMtaReadPrompt(requirementUrl);
155
+ const prompt = getMtaReadPrompt(requirementUrl, platform);
150
156
  return {
151
157
  content: [
152
158
  {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@
2
2
  * MTA 埋点文档生成工具
3
3
  * 返回 Prompt 指导 AI 从京东流式平台提取埋点需求
4
4
  */
5
- export declare function getMtaReadPrompt(requirementUrl: string): string;
5
+ export declare function getMtaReadPrompt(requirementUrl: string, userPlatform?: string): string;
6
6
  //# sourceMappingURL=mtaReadPrompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mtaReadPrompt.d.ts","sourceRoot":"","sources":["../../src/tools/mtaReadPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CA+E/D"}
1
+ {"version":3,"file":"mtaReadPrompt.d.ts","sourceRoot":"","sources":["../../src/tools/mtaReadPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAoEtF"}
@@ -3,7 +3,7 @@
3
3
  * 返回 Prompt 指导 AI 从京东流式平台提取埋点需求
4
4
  */
5
5
  import { detectProjectType, validateAndGetIDE } from "./utils.js";
6
- // 项目类型 → MTA 端映射
6
+ // 项目类型 → MTA 端映射(自动检测时使用)
7
7
  const PROJECT_TYPE_TO_MTA_PLATFORMS = {
8
8
  ios: ["iOS"],
9
9
  android: ["Android"],
@@ -13,14 +13,20 @@ const PROJECT_TYPE_TO_MTA_PLATFORMS = {
13
13
  unknown: ["iOS", "Android"],
14
14
  };
15
15
  // 所有 MTA 端类型(用于排除)
16
- const ALL_MTA_PLATFORMS = ["iOS", "Android", "H5", "Web"];
17
- export function getMtaReadPrompt(requirementUrl) {
16
+ const ALL_MTA_PLATFORMS = ["iOS", "Android", "H5", "Web", "鸿蒙"];
17
+ export function getMtaReadPrompt(requirementUrl, userPlatform) {
18
18
  // 从 URL 提取需求 ID
19
19
  const match = requirementUrl.match(/requirement\/(\d+)/);
20
20
  const requirementId = match ? match[1] : "未知";
21
- // 自动检测项目类型
22
- const projectType = detectProjectType();
23
- const platforms = PROJECT_TYPE_TO_MTA_PLATFORMS[projectType] || PROJECT_TYPE_TO_MTA_PLATFORMS["unknown"];
21
+ // 确定目标端:用户指定 > 自动检测
22
+ let platforms;
23
+ if (userPlatform && ALL_MTA_PLATFORMS.includes(userPlatform)) {
24
+ platforms = [userPlatform];
25
+ }
26
+ else {
27
+ const projectType = detectProjectType();
28
+ platforms = PROJECT_TYPE_TO_MTA_PLATFORMS[projectType] || PROJECT_TYPE_TO_MTA_PLATFORMS["unknown"];
29
+ }
24
30
  const platformsStr = platforms.join("、");
25
31
  // 计算需要排除的端
26
32
  const excludePlatforms = ALL_MTA_PLATFORMS.filter(p => !platforms.includes(p));
@@ -33,32 +39,24 @@ export function getMtaReadPrompt(requirementUrl) {
33
39
  ## 需求信息
34
40
  - **需求URL**: ${requirementUrl}
35
41
  - **需求ID**: ${requirementId}
36
- - **目标端**: ${platformsStr}
42
+ - **目标端**: ${platformsStr}(不输出: ${excludePlatformsStr})
37
43
 
38
44
  ## 执行步骤
39
- 1. 使用浏览器工具导航到需求页面
40
- 2. 获取页面内容/快照,分析埋点列表
41
- 3. 点击每个埋点查看详细参数
42
- 4. 按筛选规则提取信息,生成埋点文档
45
+ 1. 打开需求页面,获取埋点列表
46
+ 2. 点击每个埋点查看详细参数
47
+ 3. 按筛选规则提取,生成文档
43
48
 
44
- > 需要浏览器自动化工具(如 Chrome DevTools MCP、Playwright MCP 等)
49
+ > 需要浏览器工具(Chrome DevTools MCP、Playwright MCP 等)
45
50
 
46
51
  ## 筛选规则
47
52
 
48
- ### 端筛选
49
- - **输出**: ${platformsStr}
50
- - **不输出**: ${excludePlatformsStr}
51
- - **映射**: 苹果→iOS, 安卓→Android, 鸿蒙→iOS
53
+ **端映射**: 苹果→iOS, 安卓→Android
52
54
 
53
- ### 参数筛选
54
- **输出**: page_code, page_name, 业务参数(vidinfo.xxx, skuinfo.xxx 等)
55
+ **状态**: 提取"新增"和"修改"状态
55
56
 
56
- **不输出的通用参数**: bPin, buId, thirdId, crId, shopMode, opPin, industryId
57
+ **不输出的参数**: bPin, buId, thirdId, crId, shopMode, opPin, industryId
57
58
 
58
- **不输出的冗余信息**: 触发时机, 事件评级, 上报时机, 点击类型, 计入订单, SQL
59
-
60
- ### 状态筛选
61
- 仅提取"新增"状态的埋点
59
+ **不输出的字段**: 触发时机, 事件评级, 上报时机, 点击类型, 计入订单, SQL
62
60
 
63
61
  ## 输出格式
64
62
 
@@ -67,24 +65,16 @@ export function getMtaReadPrompt(requirementUrl) {
67
65
 
68
66
  ## 1. {模块名称}模块(需求ID: ${requirementId})
69
67
 
70
- ### 模块信息
71
- - **模块名称**: {模块名称}
72
- - **涉及页面**: {页面名称} (页面编号: {编号})
73
-
74
- **埋点概述**: 该模块共N个埋点,覆盖xxx功能。其中X个浏览,Y个曝光,Z个点击。
68
+ **埋点概述**: 共N个埋点。X个浏览,Y个曝光,Z个点击。
75
69
 
76
70
  ### 埋点列表
77
71
 
72
+ #### 页面: {页面名称} (page_code: {页面编号}, page_name: {页面名称})
73
+
78
74
  **1.1 埋点名**: {名称}
79
75
  **埋点ID**: \`{标识符}\`
80
76
  **埋点类型**: {浏览/曝光/点击}
81
- **埋点参数**:
82
- - \`page_code\`: 页面唯一标识
83
- - \`page_name\`: 页面名称
84
- - \`vidinfo.vid\`: 视频id
85
- - \`vidinfo.sort\`: 顺序(从1开始)
86
-
87
- ---
77
+ **埋点业务参数**: 无 / 参数列表
88
78
  \`\`\`
89
79
 
90
80
  ## 输出位置
@@ -1 +1 @@
1
- {"version":3,"file":"mtaReadPrompt.js","sourceRoot":"","sources":["../../src/tools/mtaReadPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKlE,iBAAiB;AACjB,MAAM,6BAA6B,GAAkC;IACnE,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,mBAAmB;AACnB,MAAM,iBAAiB,GAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEzE,MAAM,UAAU,gBAAgB,CAAC,cAAsB;IACrD,gBAAgB;IAChB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9C,WAAW;IACX,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,6BAA6B,CAAC,WAAW,CAAC,IAAI,6BAA6B,CAAC,SAAS,CAAC,CAAC;IACzG,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzC,WAAW;IACX,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvD,iBAAiB;IACjB,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAErF,OAAO;;;eAGM,cAAc;cACf,aAAa;aACd,YAAY;;;;;;;;;;;;;YAab,YAAY;aACX,mBAAmB;;;;;;;;;;;;;;;;;;uBAkBT,aAAa;;;;;;;;;;;;;;;;;;;;;;;IAuBhC,SAAS,QAAQ,aAAa,OAAO,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"mtaReadPrompt.js","sourceRoot":"","sources":["../../src/tools/mtaReadPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKlE,0BAA0B;AAC1B,MAAM,6BAA6B,GAAkC;IACnE,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,GAAG,EAAE,CAAC,KAAK,CAAC;IACZ,EAAE,EAAE,CAAC,IAAI,CAAC;IACV,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,mBAAmB;AACnB,MAAM,iBAAiB,GAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAE/E,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,YAAqB;IAC5E,gBAAgB;IAChB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9C,oBAAoB;IACpB,IAAI,SAAwB,CAAC;IAC7B,IAAI,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,YAA2B,CAAC,EAAE,CAAC;QAC5E,SAAS,GAAG,CAAC,YAA2B,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,SAAS,GAAG,6BAA6B,CAAC,WAAW,CAAC,IAAI,6BAA6B,CAAC,SAAS,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzC,WAAW;IACX,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvD,iBAAiB;IACjB,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAErF,OAAO;;;eAGM,cAAc;cACf,aAAa;aACd,YAAY,SAAS,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;uBAwB9B,aAAa;;;;;;;;;;;;;;;IAehC,SAAS,QAAQ,aAAa,OAAO,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmall-mcp",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "MCP Server for bmall development rules and tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -87,6 +87,11 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
87
87
  type: "string",
88
88
  description: "埋点需求文档URL,如 https://stream.jd.com/ddrx/#/requirement/29582",
89
89
  },
90
+ platform: {
91
+ type: "string",
92
+ enum: ["iOS", "Android", "H5", "Web", "鸿蒙"],
93
+ description: "目标端 (可选,默认自动检测当前项目类型)",
94
+ },
90
95
  },
91
96
  required: ["requirementUrl"],
92
97
  },
@@ -153,6 +158,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
153
158
 
154
159
  if (request.params.name === "mta_read") {
155
160
  const requirementUrl = request.params.arguments?.requirementUrl as string;
161
+ const platform = request.params.arguments?.platform as string | undefined;
156
162
 
157
163
  if (!requirementUrl) {
158
164
  return {
@@ -165,7 +171,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
165
171
  };
166
172
  }
167
173
 
168
- const prompt = getMtaReadPrompt(requirementUrl);
174
+ const prompt = getMtaReadPrompt(requirementUrl, platform);
169
175
  return {
170
176
  content: [
171
177
  {
@@ -5,10 +5,10 @@
5
5
 
6
6
  import { detectProjectType, validateAndGetIDE } from "./utils.js";
7
7
 
8
- // MTA 端类型(埋点需求网站中的 4 种端)
9
- type MtaPlatform = "iOS" | "Android" | "H5" | "Web";
8
+ // MTA 端类型(埋点需求网站中的 5 种端)
9
+ type MtaPlatform = "iOS" | "Android" | "H5" | "Web" | "鸿蒙";
10
10
 
11
- // 项目类型 → MTA 端映射
11
+ // 项目类型 → MTA 端映射(自动检测时使用)
12
12
  const PROJECT_TYPE_TO_MTA_PLATFORMS: Record<string, MtaPlatform[]> = {
13
13
  ios: ["iOS"],
14
14
  android: ["Android"],
@@ -19,16 +19,21 @@ const PROJECT_TYPE_TO_MTA_PLATFORMS: Record<string, MtaPlatform[]> = {
19
19
  };
20
20
 
21
21
  // 所有 MTA 端类型(用于排除)
22
- const ALL_MTA_PLATFORMS: MtaPlatform[] = ["iOS", "Android", "H5", "Web"];
22
+ const ALL_MTA_PLATFORMS: MtaPlatform[] = ["iOS", "Android", "H5", "Web", "鸿蒙"];
23
23
 
24
- export function getMtaReadPrompt(requirementUrl: string): string {
24
+ export function getMtaReadPrompt(requirementUrl: string, userPlatform?: string): string {
25
25
  // 从 URL 提取需求 ID
26
26
  const match = requirementUrl.match(/requirement\/(\d+)/);
27
27
  const requirementId = match ? match[1] : "未知";
28
28
 
29
- // 自动检测项目类型
30
- const projectType = detectProjectType();
31
- const platforms = PROJECT_TYPE_TO_MTA_PLATFORMS[projectType] || PROJECT_TYPE_TO_MTA_PLATFORMS["unknown"];
29
+ // 确定目标端:用户指定 > 自动检测
30
+ let platforms: MtaPlatform[];
31
+ if (userPlatform && ALL_MTA_PLATFORMS.includes(userPlatform as MtaPlatform)) {
32
+ platforms = [userPlatform as MtaPlatform];
33
+ } else {
34
+ const projectType = detectProjectType();
35
+ platforms = PROJECT_TYPE_TO_MTA_PLATFORMS[projectType] || PROJECT_TYPE_TO_MTA_PLATFORMS["unknown"];
36
+ }
32
37
  const platformsStr = platforms.join("、");
33
38
 
34
39
  // 计算需要排除的端
@@ -44,32 +49,24 @@ export function getMtaReadPrompt(requirementUrl: string): string {
44
49
  ## 需求信息
45
50
  - **需求URL**: ${requirementUrl}
46
51
  - **需求ID**: ${requirementId}
47
- - **目标端**: ${platformsStr}
52
+ - **目标端**: ${platformsStr}(不输出: ${excludePlatformsStr})
48
53
 
49
54
  ## 执行步骤
50
- 1. 使用浏览器工具导航到需求页面
51
- 2. 获取页面内容/快照,分析埋点列表
52
- 3. 点击每个埋点查看详细参数
53
- 4. 按筛选规则提取信息,生成埋点文档
55
+ 1. 打开需求页面,获取埋点列表
56
+ 2. 点击每个埋点查看详细参数
57
+ 3. 按筛选规则提取,生成文档
54
58
 
55
- > 需要浏览器自动化工具(如 Chrome DevTools MCP、Playwright MCP 等)
59
+ > 需要浏览器工具(Chrome DevTools MCP、Playwright MCP 等)
56
60
 
57
61
  ## 筛选规则
58
62
 
59
- ### 端筛选
60
- - **输出**: ${platformsStr}
61
- - **不输出**: ${excludePlatformsStr}
62
- - **映射**: 苹果→iOS, 安卓→Android, 鸿蒙→iOS
63
+ **端映射**: 苹果→iOS, 安卓→Android
63
64
 
64
- ### 参数筛选
65
- **输出**: page_code, page_name, 业务参数(vidinfo.xxx, skuinfo.xxx 等)
65
+ **状态**: 提取"新增"和"修改"状态
66
66
 
67
- **不输出的通用参数**: bPin, buId, thirdId, crId, shopMode, opPin, industryId
67
+ **不输出的参数**: bPin, buId, thirdId, crId, shopMode, opPin, industryId
68
68
 
69
- **不输出的冗余信息**: 触发时机, 事件评级, 上报时机, 点击类型, 计入订单, SQL
70
-
71
- ### 状态筛选
72
- 仅提取"新增"状态的埋点
69
+ **不输出的字段**: 触发时机, 事件评级, 上报时机, 点击类型, 计入订单, SQL
73
70
 
74
71
  ## 输出格式
75
72
 
@@ -78,24 +75,16 @@ export function getMtaReadPrompt(requirementUrl: string): string {
78
75
 
79
76
  ## 1. {模块名称}模块(需求ID: ${requirementId})
80
77
 
81
- ### 模块信息
82
- - **模块名称**: {模块名称}
83
- - **涉及页面**: {页面名称} (页面编号: {编号})
84
-
85
- **埋点概述**: 该模块共N个埋点,覆盖xxx功能。其中X个浏览,Y个曝光,Z个点击。
78
+ **埋点概述**: 共N个埋点。X个浏览,Y个曝光,Z个点击。
86
79
 
87
80
  ### 埋点列表
88
81
 
82
+ #### 页面: {页面名称} (page_code: {页面编号}, page_name: {页面名称})
83
+
89
84
  **1.1 埋点名**: {名称}
90
85
  **埋点ID**: \`{标识符}\`
91
86
  **埋点类型**: {浏览/曝光/点击}
92
- **埋点参数**:
93
- - \`page_code\`: 页面唯一标识
94
- - \`page_name\`: 页面名称
95
- - \`vidinfo.vid\`: 视频id
96
- - \`vidinfo.sort\`: 顺序(从1开始)
97
-
98
- ---
87
+ **埋点业务参数**: 无 / 参数列表
99
88
  \`\`\`
100
89
 
101
90
  ## 输出位置