From 3ed4c51ee7d0edae665e6030efa3b2604af03a9f Mon Sep 17 00:00:00 2001 From: mehaotian <490272692@qq.com> Date: Tue, 26 Apr 2022 10:20:52 +0800 Subject: [PATCH] docs: uni-stat-v2 --- docs/uni-stat-v2.md | 256 ++++++++++++++++++++++---------------------- 1 file changed, 126 insertions(+), 130 deletions(-) diff --git a/docs/uni-stat-v2.md b/docs/uni-stat-v2.md index 989561565..943315409 100644 --- a/docs/uni-stat-v2.md +++ b/docs/uni-stat-v2.md @@ -34,7 +34,7 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。 在项目中打开 `manifest.json` , 选择 `uni统计配置` 项,根据需求,选择开通 `uni统计` ,勾选 `version2` 开启新版统计。 -![开启统计](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/73a73c56-1b65-4fc2-9429-26248f3e1267.png) +![开启统计](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/03c7afa3-2512-462b-a53f-cbaeca4dec58.png) ### 全局设置 @@ -45,12 +45,20 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。 ```js //... "uniStatistics": { - "enable": true,//全局开启 - "version": "2" // 开启新版uni统计,值为字符串 + "enable": true,//全局开启 + "version": "2" // 开启新版uni统计,值为字符串 }, //... ``` +**uniStatistics说明** + +|字段|类型|默认值|可选值|说明| +|:-:|:-:|:-:|:-:|:-:| +|enable|Boolean|false|true , false|全局开启或关闭统计 ,分平台配置会覆盖当前配置| +|version|String|'1'|"1" , "2"|统计版本 ,如不填写,默认使用版本1.0,推荐使用2.0版本| +|debug|Boolean|false|true , false|开启统计调试模式 ,会产生大量日志,且会在开发阶段上报数据,应用发布请关闭此项| + ### 分平台设置 `uniStatistics` 支持分平台设置,比如若需仅开启微信平台的 `uni统计`,则在`mp-weixin`节点下设置 `uniStatistics ->enable` 即可,如下: @@ -64,11 +72,17 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。 } ``` +**uniStatistics说明** + +|字段|类型|默认值|可选值|说明| +|:-:|:-:|:-:|:-:|:-:| +|enable|Boolean|false|true , false|分平台开启或关闭统计 ,分平台配置会覆盖全局配置,uniStatistics 需在平台配置下| + ::: warning 注意 - 在分平台下如有`uniStatistics -> enable`字段,则优先使用分平台下配置 ,反之使用全局统计设置 -- 分平台无需设置 `version` 属性 ,`version` 属性仅全局生效 -- 应用在运行、调试时不会上报统计数据,仅在发行后,并启动新版的App、h5、小程序,才会上报数据。 -- 如需在开发运行阶段调试查看上报数据 ,可开启 debug 模式 ,后文查看详情 +- 分平台无需设置 `version`、`debyg` 属性 ,两个属性仅全局生效 +- 分平台无需设置 `debyg` 属性 ,`debyg` 属性仅全局生效 +- 应用仅在开启调试模式,或发行后才会上报数据 ::: ### 域名白名单 @@ -159,7 +173,12 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。 3. 发行项目到对应平台 ,此时数据已经成功采集到 `uni-admin` 中 -## 前端SDK开启调试模式 + + + +## 开源代码解读 +### 前端SDK说明 +#### 开启调试模式 将 `manifest.json -> uniStatistics` 下的 `debug` 字段设置为 `true|false` ,来开启关闭 `uni统计`调试模式 @@ -200,7 +219,7 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。 ``` -### 采集类型说明 +#### 采集类型说明 **应用启动** @@ -361,37 +380,35 @@ uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。 |none|无网络| |cable|有线| +#### 数据上报逻辑 +数据上报间隔最小是 10s 上报一次 ,在上报间隔内,会将每次上报节点的数据加入统计数据队列,10s后会在下一个上报节点,统一对数据队列进行一定的处理进行上报。 - -## 开源代码解读 - -### 前端SDK说明 -uni-app 框架内置 - +这么做的目的是防止频繁上报引起的并发问题。所以上报请求不是时实发生的。 ### uni-admin说明 **前端页面结构** + 为了突出目标,仅注释出 uni 统计相关的文件夹及文件,其余与普通 uni-app 项目相同。新增页面可参考 uni-stat 中相似页面。 ```bash ├── cloudfunctions -├── common # 样式 -│ │── uni.css # 公共样式 -│ └── uni-icons.css # icon样式 -├── components # 自定义组件 -├── js_sdk # js sdk -│ └── uni-stat # uni统计相关工具方法 +├── common # 样式 +│ │── uni.css # 公共样式 +│ └── uni-icons.css # icon样式 +├── components # 自定义组件 +├── js_sdk # js sdk +│ └── uni-stat # uni统计相关工具方法 │ └── util.js -├── pages # 页面 -│ └── uni-stat # uni统计页面 -│ │── channel # 渠道(app) -│ │ │── channel.vue # 页面(下同) -│ │ └── fieldsMap.js # 字段配置(下同) -│ │── device # 设备统计 -│ │ │── activity # 渠道/场景分析 +├── pages # 页面 +│ └── uni-stat # uni统计页面 +│ │── channel # 渠道(app) +│ │ │── channel.vue # 页面(下同) +│ │ └── fieldsMap.js # 字段配置(下同) +│ │── device # 设备统计 +│ │ │── activity # 渠道/场景分析 │ │ │ │── activity.vue │ │ │ └── fieldsMap.js -│ │ │── comparison # 平台对比 +│ │ │── comparison # 平台对比 │ │ │ │── comparison.vue │ │ │ └── fieldsMap.js │ │ │── overview # 今日概览 @@ -455,22 +472,6 @@ uni-app 框架内置 ``` -### 服务端说明 - -**1. 服务端构成** - -- `uni-config-center/uni-stat 配置模块`:给`uni-stat 公共模块`提供运行必要的配置参数。 -- `uni-stat 公共模块`:数据处理模块,包括收集上报数据的处理入库及定时任务的数据处理。 -- `uni-stat-receiver 上报数据接收器`:接收客户端上报数据并转发给公共模块处理。注意:该云对象依赖于`uni-id`公共模块。 -- `uni-stat-cron 定时任务云函数`:触发定时任务并转发给公共模块处理 - -**2. 公共模块结构说明** -- `shared目录` 公共模块,提供公共函数库等支持。 -- `stat/mod目录` 数据模型,提供具体业务实现。 -- `stat/lib目录` 工具类类库,提供日期计算、数据加密等额外功能支持。 -- `stat/report.js文件` 数据上报功能的分发入口文件。 -- `stat/stat.js文件` 数据统计及日志清理功能的分发入口文件。 -- `index.js文件` 代理入口文件。 ### 服务端说明 @@ -487,7 +488,7 @@ uni-app 框架内置 注意:uni统计公共模块依赖于 uniCloud配置中心(uni-config-center) ::: -```base {6} +```bash ├── shared # 公共模块,提供公共函数库等支持。 │ │── create-api.js # 用来创建对外访问的实例 │ │── error.js # 错误处理模块 @@ -537,13 +538,13 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` **基础参数** -|配置项 |默认值 |说明 | -| :--------: |:---------:|:-------------------: | +|配置项 |默认值 |说明 | +| :--------: |:---------:|:-------------------: | | debug | false |开启调试模式 true: 开启,false:关闭,开启后会产生大量日志,生产环境请关闭。 | -| redis | false |开启redis缓存,开启后可以降低数据库查询压力,提升uni统计性能,可按需决定是否开启。[开启方法](#开启redis缓存) | +| redis | false |开启redis缓存,开启后可以降低数据库查询压力,提升uni统计性能,可按需决定是否开启。[开启方法](#开启redis缓存) | | cachetime | 604800 |redis缓存有效期,单位秒。 | | sessionExpireTime| 1800 |会话过期时间,该配置用来判断当前会话是否已过期,一般情况下无需修改此项。 | -| realtimeStat | true |开启实时统计,true: 开启,false:关闭,开启后会每小时统计一次,数据库读写次数会增多,可按需决定是否开启。 | +| realtimeStat | true |开启实时统计,true: 开启,false:关闭,开启后会每小时统计一次,数据库读写次数会增多,可按需决定是否开启。 | | cronMin | false |开启分钟级定时任务,true: 开启,false:关闭。开启后定时任务将细分到分钟级执行,分摊数据计算压力,适合应用日活较大或有特殊需求的用户群体。开启方法见下方 [开启分钟级定时任务](#开启分钟级定时任务)。 | | cron | - |用于配置定时任务触发时间,详情见下方[定时任务配置说明](#定时任务配置说明)。 | | batchInsertNum | 5000 |当有批量写入操作时,限制单次写入数据库的最大条数。为防止写入超时,最大值为5000条。 | @@ -572,40 +573,40 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` "uni-cloud-jql": {}, "uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。 } -} +} ``` ``` javascript //配置uni-stat-cron的redis拓展库 -{ - "name": "uni-stat-cron", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "uni-stat": "file:../common/uni-stat" +{ + "name": "uni-stat-cron", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "uni-stat": "file:../common/uni-stat" }, "extensions": { "uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。 - }, - "cloudfunction-config": { - "concurrency": 1, - "memorySize": 512, - "timeout": 600, - "triggers": [ - { - "name": "uni-stat-cron", - "type": "timer", - "config": "0 0 * * * * *" - } - ] - } + }, + "cloudfunction-config": { + "concurrency": 1, + "memorySize": 512, + "timeout": 600, + "triggers": [ + { + "name": "uni-stat-cron", + "type": "timer", + "config": "0 0 * * * * *" + } + ] + } } ``` @@ -618,38 +619,38 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` | type |定时任务类型:如 `stat`:基础数据统计 | | time |触发时间表达式:`* * * *` 共四位,由左到右分别代表:星期(1-7代表周一到周日)/日/时/分。例:每天晚上0点0分触发,应写作 `* * 0 0` | -目前定时任务类型有(以下括号内的内容表示开启分钟级统计后定时任务的触发时间): +目前定时任务类型有(`以下括号内的内容表示开启分钟级统计后定时任务的触发时间`): -- `stat`:基础数据统计 - - 实时统计,默认每小时(0分)触发,统计上一小时的基础数据 - - 日统计,默认每天上午1点(10分)触发,统计前一天的基础数据 - - 周统计,默认每周一上午1点(20分)触发,统计上一周的基础数据 - - 月统计,默认每月1号上午3点(30分)触发,统计上一月的基础数据 +- `stat`:基础数据统计,统计维度包括: + - 实时统计,默认`每小时(0分)`触发,统计上一小时的基础数据 + - 日统计,默认`每天上午1点(10分)`触发,统计前一天的基础数据 + - 周统计,默认`每周一上午1点(20分)`触发,统计上一周的基础数据 + - 月统计,默认`每月1号上午3点(30分)`触发,统计上一月的基础数据 -- `retention-device`:设备留存数据统计 -- - 日统计,默认每天上午2点(20分)触发,统计前一天的设备留存数据 -- - 周统计,默认每周一上午2点(30分)触发,统计上一周的设备留存数据 -- - 月统计,默认每月1号上午4点(30分)触发,统计上一月的设备留存数据 +- `retention-device`:设备留存数据统计,统计维度包括: + - 日统计,默认`每天上午2点(20分)`触发,统计前一天的设备留存数据 + - 周统计,默认`每周一上午2点(30分)`触发,统计上一周的设备留存数据 + - 月统计,默认`每月1号上午4点(30分)`触发,统计上一月的设备留存数据 -- `retention-user`:用户留存数据统计 -- - 日统计,默认每天上午3点(40分)触发,统计前一天的用户留存数据 -- - 周统计,默认每周一上午5点(30分)触发,统计上一周的用户留存数据 -- - 月统计,默认每月1号上午6点(40分)触发,统计上一月的用户留存数据 +- `retention-user`:用户留存数据统计,统计维度包括: + - 日统计,默认`每天上午3点(40分)`触发,统计前一天的用户留存数据 + - 周统计,默认`每周一上午5点(30分)`触发,统计上一周的用户留存数据 + - 月统计,默认`每月1号上午6点(40分)`触发,统计上一月的用户留存数据 -- `active-device`:活跃设备数据归档 -- - 日归档,默认每天上午0点(10分)触发,归档前一天的活跃设备数据,注意:此项数据要保持在`基础数据统计`、`设备留存数据统计`、`用户留存数据统计`中的周统计、月统计触发之前执行。 +- `active-device`:活跃设备数据归档,统计维度包括: + - 日归档,默认`每天上午0点(10分)`触发,归档前一天的活跃设备数据,注意:此项数据要保持在`基础数据统计`、`设备留存数据统计`、`用户留存数据统计`中的周统计、月统计触发之前执行。 -- `active-user`:活跃用户数据归档 -- - 日归档,默认每天上午0点(20分)触发,归档前一天的活跃用户数据,注意:此项数据要保持在`基础数据统计`、`设备留存数据统计`、`用户留存数据统计`中的周统计、月统计触发之前执行。 +- `active-user`:活跃用户数据归档,统计维度包括: + - 日归档,默认`每天上午0点(20分)`触发,归档前一天的活跃用户数据,注意:此项数据要保持在`基础数据统计`、`设备留存数据统计`、`用户留存数据统计`中的周统计、月统计触发之前执行。 -- `page`:页面数据统计 -- - 日统计,默认每天上午3点(20分)触发,统计前一天的页面数据 +- `page`:页面数据统计,统计维度包括: + - 日统计,默认`每天上午3点(20分)`触发,统计前一天的页面数据 -- `event`:事件数据统计 -- - 日统计,默认每天上午4点(20分)触发,统计前一天的事件数据 +- `event`:事件数据统计,统计维度包括: + - 日统计,默认`每天上午4点(20分)`触发,统计前一天的事件数据 -- `error`:错误数据统计 -- - 日统计,默认每天上午5点(20分)触发,统计前一天的错误数据 +- `error`:错误数据统计,统计维度包括: + - 日统计,默认`每天上午5点(20分)`触发,统计前一天的错误数据 #### 开启分钟级定时任务 @@ -665,16 +666,16 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` ``` javascript //config选项为阿里云定时器的cron表达式 将原小时级表达式 "config": "0 0 * * * * *" 更改为分钟级表达式 "config": "0 * * * * * *" 后重新上传部署云函数即可. -"cloudfunction-config": { - "concurrency": 1, - "memorySize": 256, - "timeout": 600, - "triggers": [ - { - "name": "uni-stat-cron", - "type": "timer", - "config": "0 * * * * * *" - } +"cloudfunction-config": { + "concurrency": 1, + "memorySize": 256, + "timeout": 600, + "triggers": [ + { + "name": "uni-stat-cron", + "type": "timer", + "config": "0 * * * * * *" + } ] } ``` @@ -687,16 +688,16 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` ``` javascript //config选项为阿里云定时器的cron表达式 将原小时级表达式 "config": "0 0 * * * * *" 更改为分钟级表达式 "config": "0 * * * * * *" 后重新上传部署云函数即可. -"cloudfunction-config": { - "concurrency": 1, - "memorySize": 256, - "timeout": 600, - "triggers": [ - { - "name": "uni-stat-cron", - "type": "timer", - "config": "0 * * * * * *" - } +"cloudfunction-config": { + "concurrency": 1, + "memorySize": 256, + "timeout": 600, + "triggers": [ + { + "name": "uni-stat-cron", + "type": "timer", + "config": "0 * * * * * *" + } ] } ``` @@ -730,18 +731,13 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 ` - `分享日志:shareLog`,默认保留`7`天的日志。 - `错误日志:errorLog`,默认保留`7`天的日志。 -::: warning 注意事项 -- 客户端和统计后台两个项目务必关联同一个服务空间,且uni-admin中所有云函数、公共模板等都已经上传部署到该服务空间 -- 使用 uni 统计必须配置 APPID 才能正常使用。[DCloud的Appid有什么用,如需转让应用怎么做](https://ask.dcloud.net.cn/article/35907) -- 应用在运行、调试时不会上报统计数据,仅在发行后,并启动新版的App、h5、小程序,才会上报数据。 -- 不支持 CLI 项目 -::: - - - +::: warning 注意事项 +- 客户端和统计后台两个项目务必关联同一个服务空间,且uni-admin中所有云函数、公共模板等都已经上传部署到该服务空间 +- 使用 uni 统计必须配置 APPID 才能正常使用。[DCloud的Appid有什么用,如需转让应用怎么做](https://ask.dcloud.net.cn/article/35907) +- 应用在运行、调试时不会上报统计数据,仅在发行后,并启动新版的App、h5、小程序,才会上报数据。 +- 不支持 CLI 项目 +::: -