用户(项目)画像是指根据用户(项目)的属性、偏好、习惯、行为等信息而抽象出来的标签化用户(项目)的模型。 通俗说就是给用户(项目)打标签,而标签是通过对用户(项目)信息分析而来的高度精炼的特征标识。 通过打标签可以利用一些高度概括、容易理解的特征来描述用户(项目),可以让人更容易理解用户(项目),并且可以方便计算机处理。
我们主要是建立EOA地址画像、合约地址画像和项目的画像,为了方便后续区分不同地址和不同相同项目,并且给后续数据挖掘提供数据支持。
在互联网领域画像常用来作为精准营销、用户统计、推荐系统、数据挖掘等基础性工作。 但是对于我们,主要利用画像来实现对EOA地址、合约地址和项目的分析、统计等工作:
- 用户(项目)统计:
- 根据用户(项目)的属性、行为特征对用户(项目)进行分类后,统计不同特征下的用户(项目)数量、分布。
- 分析不同用户(项目)画像群体的分布特征。
- 数据挖掘:以用户(项目)画像为基础构建推荐系统,进行风险分析等。
- 行业报告与用户研究:通过用户(项目)画像分析可以了解行业动态,比如根据项目画像输出分析报告等。
一般来说,根据具体的业务内容,会有不同的数据,不同的业务目标,所以也会实现不同的画像。 在互联网领域,用户画像数据一般包括以下内容: 人口属性、兴趣特征、消费特征、位置特征、设备属性、行为数据、社交数据等等。
但是针对我们的EOA地址画像、合约画像和项目画像,数据的来源一般会来自两个方向:
- 链上数据:记录在区块链上的数据,包括区块、交易、消息日志等。上链意味着共识和存储,数据则不可篡改。
- 链下数据:除了区块链上的数据,例如项目的twitter数据、新闻数据等等。
我们需要结合链上数据与链下数据一起分析得到画像标签。
画像最重要的一个步骤就是对用户(项目)标签化,我们要明确要分析用户(项目)的各种维度,才能确定如何对用户(项目)进行画像。
在建立用户画像上,可以分为以下几个步骤:
- 基础数据收集:包括上一节中描述的链上数据与链下数据。
- 画像体系架构:设计画像的体系架构,包括画像层级、画像依赖、画像类型、画像主题等设计。
- 数据分析加工:当我们对用户(项目)画像所需要的基础数据收集完毕后,需要对这些资料进行分析和加工,提炼关键要素,构建可视化模型。 对收集到的数据进行统计、规则抽取和模型设计等,抽象出用户(项目)的各类标签
- 画像标签系统架构:利用大数据的整体架构对标签化的过程进行开发实现,对数据进行加工,将标签管理化。 同时将标签计算的结果进行计算。这个过程中需要依靠Hive,Hbase等大数据技术,为了提高数据的实时性,还要用到Flink,Kafka等实时计算技术。
- 标签可视化:要将我们的计算结果,数据,接口等等,形成服务。比如,图表展示,可视化展示等等。
画像标签系统为了方便使用和保持鲁棒性,一般需要保证大数据、实时性和可视化等特性。
主要实现的挑战分为以下几个方面:
- 大数据: 整体用户(项目)画像体系必须建立在大数据架构之上。
- 实时性: Kafka和Flink等实时流式计算框架的数据的一致性,事件时间窗口,水印,触发器都成为很容易的实现。而实时的OLAP框架Druid更是让交互式实时查询成为可能。
- 数据仓库: Hive是作为离线数仓的不二选择,而hive使用的新引擎tez也有着非常好的查询性能,而最近新版本的Flink也支持了hive性能非常不错。但是在实时用户画像架构中,Hive是作为一个按天的归档仓库的存在,作为历史数据形成的最终存储所在,也提供了历史数据查询的能力。而Druid作为性能良好的实时数仓,将共同提供数据仓库的查询与分析支撑,Druid与Flink配合共同提供实时的处理结果,实时计算不再是只作为实时数据接入的部分,而真正的挑起大梁。
依据上面的分析与我们要实现的功能,我们将依赖Hive和Druid建立我们的数据仓库,使用Kafka进行数据的接入,使用Flink作为我们的流处理引擎,对于标签的元数据管理我们还是依赖Mysql作为把标签的管理,并使用Airflow作为我们的调度任务框架,并最终将结果输出到Mysql和Hbase中。
梳理标签体系是实现用户画像过程中最基础、也是最核心的工作,后续的建模、数据仓库搭建都会依赖于标签体系。 标签是某一种用户特征的符号表示。是一种内容组织方式,是一种关联性很强的关键字,能方便的帮助我们找到合适的内容及内容分类。 标签解决的是描述或命名问题,但在实际应用中,还需要解决数据之间的关联,所以通常将标签作为一个体系来设计,以解决数据之间的关联问题。
用户画像标签体系创建后一般要包含以下几个方面的内容:
- 画像标签的命名
- 画像标签的主题
- 画像标签的属性
- 画像标签的分类
- 画像标签的层级
- 画像标签的依赖
画像标签按照构造方式、数据类型、业务需求等方面进行分类,每一种分类方式都代表可以采取一种检索标签的方式。
按照打标签的方式来看,一般分为三种类型:
- 基于统计类的画像标签
- 基于规则类的画像标签
- 基于挖掘类的画像标签
统计类标签:这类标签是最为基础也最为常见的标签类型,例如对于某个用户来说,他的性别、年龄、城市、星座、近7日活跃时长、近7日活跃天数、近7日活跃次数等字段可以从用户注册数据、用户访问、消费类数据中统计得出。该类标签构成了用户画像的基础。
规则类标签:该类标签基于用户行为及确定的规则产生。例如对平台上“消费活跃”用户这一口径的定义为近30天交易次数>=2。在实际开发画像的过程中,由于运营人员对业务更为熟悉、而数据人员对数据的结构、分布、特征更为熟悉,因此规则类标签的规则确定由运营人员和数据人员共同协商确定。
机器学习挖掘类标签:该类标签通过数据挖掘产生,应用在对用户的某些属性或某些行为进行预测判断。例如根据一个用户的行为习惯判断该用户是男性还是女性,根据一个用户的消费习惯判断其对某商品的偏好程度。该类标签需要通过算法挖掘产生。
按照标签的主题来看,一般分多种类型:
- 用户(项目)属性画像标签
- 用户(项目)行为画像标签
- 用户(项目)偏好画像标签
- 用户(项目)风险画像标签 ......
按照数据的类型来看,一般分为两种类型:
- 定性画像标签
- 定量画像标签
定性标签:人为定性的标签,快捷方便但缺少数据验证,可深入数据挖掘。
定量标签:根据数据统计或者数据分析得到的标签,数据得到充分验证,但是难以挖掘深层特征。
按照标签的构造方式来看,可以分为四种类型:
- 原始数据层画像标签
- 事实标签层画像标签
- 模型标签层画像标签
- 预测层画像标签
标签需要进行分级分类的管理,一方面使得标签更加的清晰有条件,另一方面也方便我们对标签进行存储查询,也就是管理标签。
把标签分成不同的层级和类别:
- 方便管理数千个标签,让散乱的标签体系化。
- 维度并不孤立,标签之间互有关联
- 可以为标签建模提供标签子集。
同时需要注意梳理某类别的子分类时,尽可能的遵循MECE原则(相互独立、完全穷尽),尤其是一些有关用户分类的,要能覆盖所有用户,但又不交叉。
标签主题 | 创建人 | 创建时间 |
---|---|---|
属性 | QS | 2022/8/30 15:30:46 |
行为 | QS | 2022/8/30 15:30:46 |
偏好 | Eliot | 2022/8/30 15:30:46 |
风险 | Eliot | 2022/8/30 15:30:46 |
标签类型 | 创建人 | 创建时间 |
---|---|---|
统计类 | QS | 2022/8/30 15:30:46 |
规则类 | QS | 2022/8/30 15:30:46 |
挖掘类 | Eliot | 2022/8/30 15:30:46 |
开发方式 | 创建人 | 创建时间 |
---|---|---|
人为分类 | QS | 2022/8/30 15:30:46 |
机器统计 | Eliot | 2022/8/30 15:30:46 |
规则统计 | Eliot | 2022/8/30 15:30:46 |
算法预测 | Eliot | 2022/8/30 15:30:46 |
开发人 | 创建人 | 创建时间 |
---|---|---|
SJ | QS | 2022/8/30 15:30:46 |
LX | QS | 2022/8/30 15:30:46 |
GWD | Eliot | 2022/8/30 15:30:46 |
标签桶 | 创建人 | 创建时间 |
---|---|---|
EOA地址标签 | QS | 2022/8/30 15:30:46 |
合约地址标签 | QS | 2022/8/30 15:30:46 |
项目标签 | Eliot | 2022/8/30 15:30:46 |
对于一些需要其他标签统计、计算和预测的标签,记录该标签依赖的标签
标签名 | 依赖标签 | 创建人 | 创建时间 |
---|---|---|---|
project_risk_level | project_price_risk | QS | 2022/8/30 15:30:46 |
project_risk_level | project_operation_risk | QS | 2022/8/30 15:30:46 |
project_risk_level | project_code_risk | QS | 2022/8/30 15:30:46 |
针对标签的层级:标签层级应该是树或者森林,所以每个标签只有一个上级标签。 层级主要是概念上的层级。
- 上级标签ID为了方便查找父节点
- 根标签ID为了方便查找根
- 标签层级为了方便查找统计标签
- 标签ID路径是为了方便查找子树
标签ID | 标签名 | 主题 | 标签类型 | 数据类型 | 标签桶 | 上级标签ID | 根标签ID | 标签层级 | 标签ID路径 | 描述 | 参数 | 开发方式 | 开发人 | 创建时间 | 备注 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000001 | activate_days | 行为 | 统计类 | int | EOA地址标签 | 1 | 1 | / | 地址最后一次行为出现时间 - 第一次行为时间 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000002 | deploy_contract_count | 行为 | 统计类 | int | EOA地址标签 | 2 | 1 | / | 部署合约数量 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000003 | max_deploy_contract_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 2 | 2 | 2 | /2/ | 一天内部署合约最大次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000004 | token_transfer_receive_count | 行为 | 统计类 | int | EOA地址标签 | 4 | 1 | / | erc20 收款的总次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000005 | max_token_transfer_receive_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 4 | 4 | 2 | /4/ | 一天内 代币收款 收款最大次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000006 | avg_token_transfer_receive_count | 行为 | 统计类 | float | EOA地址标签 | 4 | 4 | 2 | /4/ | 平均每天代币收款次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000007 | token_transfer_send_count | 行为 | 统计类 | int | EOA地址标签 | 7 | 1 | / | token转出次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000008 | max_token_transfer_send_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 7 | 7 | 2 | /7/ | 一天内代币转出最高次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000009 | avg_token_transfer_send_count | 行为 | 统计类 | float | EOA地址标签 | 7 | 7 | 2 | /7/ | 平均每天token转出次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000010 | tx_send_count | 行为 | 统计类 | int | EOA地址标签 | 10 | 1 | / | 发送交易总数量 = tx_send + ether_send | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000011 | max_tx_send_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 10 | 10 | 2 | /10/ | 一天内发送交易最高的次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000012 | avg_tx_send_count | 行为 | 统计类 | float | EOA地址标签 | 10 | 10 | 2 | /10/ | 平均每天发送交易次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000013 | ether_send_count | 行为 | 统计类 | int | EOA地址标签 | 13 | 1 | / | 转出 eth 次数总和 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000014 | max_eth_send_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 13 | 13 | 2 | /13/ | 一天内转出eth最高次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000015 | avg_eth_send_count_day | 行为 | 统计类 | float | EOA地址标签 | 13 | 13 | 2 | /13/ | 平均每天转出 eth 次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000016 | eth_receive_count | 行为 | 统计类 | int | EOA地址标签 | 16 | 1 | / | 转入 eth次数总和 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000017 | max_eth_receive_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 16 | 16 | 2 | /16/ | 一天收到 eth 收款最高次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000018 | avg_eth_receive_count_day | 行为 | 统计类 | float | EOA地址标签 | 16 | 16 | 2 | /16/ | 平均每天eth收款次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000019 | mix_token_deposit_count | 行为 | 统计类 | int | EOA地址标签 | 19 | 1 | / | 混币存款次数总和 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000020 | max_mix_token_deposit_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 19 | 19 | 2 | /19/ | 一天内混币存款次数最高的次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000021 | avg_mix_token_deposit_count | 行为 | 统计类 | float | EOA地址标签 | 19 | 19 | 2 | /19/ | 平均每天混币存款次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000022 | mix_token_withdraw_count | 行为 | 统计类 | int | EOA地址标签 | 22 | 1 | / | 混币赎回次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000023 | max_mix_token_withdraw_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 22 | 22 | 2 | /22/ | 一天内混币赎回最高次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000024 | avg_mix_token_withdraw_count | 行为 | 统计类 | float | EOA地址标签 | 22 | 22 | 2 | /22/ | 平均每天混币赎回最高次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000025 | is_tx_call_self | 偏好 | 规则类 | bool | EOA地址标签 | 25 | 1 | / | 是否 tx_send, tx_receive, eth_send, eth_receive 的 form 和to 地址相同 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000026 | is_deploy_contract | 偏好 | 规则类 | bool | EOA地址标签 | 26 | 1 | / | 是否部署合约 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000027 | is_mix_deposit | 偏好 | 规则类 | bool | EOA地址标签 | 27 | 1 | / | 是否混币存款 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000028 | is_mix_withdraw | 偏好 | 规则类 | bool | EOA地址标签 | 28 | 1 | / | 是否混币取款数量大于1 | {"mix_withdraw_counts": 1} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000029 | action_count | 行为 | 统计类 | int | EOA地址标签 | 29 | 1 | / | 所有action数量 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000030 | avg_action_count | 行为 | 统计类 | float | EOA地址标签 | 29 | 29 | 2 | /29/ | 平均每天action数量 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000031 | max_action_count_per_day | 行为 | 统计类 | int | EOA地址标签 | 29 | 29 | 2 | /29/ | 一天action最高的次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000032 | max_action_one_block | 行为 | 统计类 | int | EOA地址标签 | 29 | 29 | 2 | /29/ | 一个区块内的action最高的次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000033 | max_action_one_address | 行为 | 统计类 | int | EOA地址标签 | 29 | 29 | 2 | /29/ | 与同一个地址交互action最高的次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000034 | is_high_freq_send_tx | 偏好 | 规则类 | bool | EOA地址标签 | 34 | 1 | / | 是否存在高频发送交易(5分钟内有10个行为) | {"limited_seconds": 600, "limited_action_counts": 10} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000035 | is_high_freq_receive_tx | 偏好 | 规则类 | bool | EOA地址标签 | 35 | 1 | / | 是否存在高频接收交易(5分钟内有10个行为) | {"limited_seconds": 600, "limited_action_counts": 10} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000036 | is_high_freq_send_token | 偏好 | 规则类 | bool | EOA地址标签 | 36 | 1 | / | 是否存在高频对外转账token(5分钟内有10个行为) | {"limited_seconds": 600, "limited_action_counts": 10} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000037 | is_high_freq_receive_token | 偏好 | 规则类 | bool | EOA地址标签 | 37 | 1 | / | 是否存在高频接收token转账(5分钟内有10个行为) | {"limited_seconds": 600, "limited_action_counts": 10} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000038 | call_contract_count | 行为 | 统计类 | int | EOA地址标签 | 38 | 1 | / | 调用合约次数 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000039 | is_transfer_after_token_approve_spend | 偏好 | 规则类 | bool | EOA地址标签 | 39 | 1 | / | 是否在token_approve_spend后存在转账 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000040 | eth_receive_from_address_ratio | 行为 | 统计类 | float | EOA地址标签 | 16 | 16 | 2 | /16/ | eth_receive来源不同地址的比率(来源地址个数/eth_receive个数) | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000041 | avg_eth_receive_amount | 行为 | 统计类 | float | EOA地址标签 | 16 | 16 | 2 | /16/ | 平均每一笔eth_receive转账资金 | {} | 机器统计 | QS | 2022/8/30 15:30:46 | |
0000042 | bot | 属性 | 规则类 | bool | EOA地址标签 | 42 | 1 | / | 有 send_self_tx 标签或者经常在同一个区块中发送两笔交易 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000043 | airdrop | 行为 | 规则类 | bool | EOA地址标签 | 43 | 1 | / | 同一个区块内有2笔以上的 发送token 交易, 且一个小时内有 20 笔以上 | {"transfer_counts_one_block":2, "max_transfer_one_hour": 20} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000044 | fishing_probably | 风险 | 规则类 | bool | EOA地址标签 | 44 | 1 | / | 疑似钓鱼攻击:有 token_approve_spend 行为并且之前两个地址没有任何关联 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000045 | pk_thief_probably | 风险 | 规则类 | bool | EOA地址标签 | 45 | 1 | / | 疑似私钥盗窃者,1个小时内转走holder所有币种的 transfer 行为 和 ether,两个地址之前没有任何关联 | {"max_hours": 1} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000046 | nft_player | 属性 | 规则类 | bool | EOA地址标签 | 46 | 1 | / | 有 nft 转账行为 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000047 | flash_loan_player | 属性 | 规则类 | bool | EOA地址标签 | 47 | 1 | / | 闪电贷玩家 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000048 | token | 属性 | 规则类 | bool | 合约地址标签 | 48 | 1 | / | 有 transfer 事件 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000049 | erc20 | 属性 | 规则类 | bool | 合约地址标签 | 49 | 1 | / | 可以调 decimals 接口 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000050 | nft | 属性 | 规则类 | bool | 合约地址标签 | 50 | 1 | / | nft合约 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000051 | Popular | 属性 | 规则类 | bool | 合约地址标签 | 51 | 1 | / | 有超过500个活跃地址,持续三个月 | {"max_active_address": 500, "limit_month": 3} | 机器统计 | QS | 2022/8/30 15:30:46 | ||
0000052 | Personal | 属性 | 规则类 | bool | 合约地址标签 | 52 | 1 | / | 历史只有1个活跃地址 | {"historical_active_address_counts": 1} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000053 | Bot | 属性 | 规则类 | bool | 合约地址标签 | 53 | 1 | / | 地址是 personal, 且一个区块内有2笔交易 | {"max_transfer_one_block": 2} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000054 | Airdrop | 属性 | 规则类 | bool | 合约地址标签 | 54 | 1 | / | 一个区块内有2笔以上的token转账 | {"max_transfer_one_block": 2} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000055 | Arbitrage | 属性 | 规则类 | bool | 合约地址标签 | 55 | 2 | / | 同一个交易内,有两笔相反的转账顺序 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000056 | flash_loan | 属性 | 规则类 | bool | 合约地址标签 | 55 | 55 | 1 | /55/ | 闪电贷合约 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | |
0000057 | huge_custom | 偏好 | 规则类 | bool | 合约地址标签 | 57 | 1 | / | 超过 500 个用户地址 | {"max_address_counts": 500} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000058 | huge_activate_customs | 偏好 | 规则类 | bool | 合约地址标签 | 58 | 1 | / | 超过100个活跃用户 | {"max_active_address_counts": 100} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000059 | huge_increase_customs | 偏好 | 规则类 | bool | 合约地址标签 | 59 | 1 | / | 每日新增 50个用户 | {"max_new_address_counts": 50} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000060 | internal_called | 行为 | 规则类 | bool | 合约地址标签 | 60 | 1 | / | 触发了事件, 但交易的to 地址不是合约 | {} | 规则统计 | QS | 2022/8/30 15:30:46 | ||
0000061 | project_risk_level | 风险 | 挖掘类 | float | 项目标签 | 61 | 1 | / | 项目的风险等级,有其他标签计算得到 | {} | 算法预测 | QS | 2022/8/30 15:30:46 | ||
0000061 | project_price_risk | 风险 | 挖掘类 | float | 项目标签 | 61 | 61 | 1 | /61/ | 项目的价格风险 | {} | 算法预测 | QS | 2022/8/30 15:30:46 | |
0000061 | project_operation_risk | 风险 | 挖掘类 | float | 项目标签 | 61 | 61 | 1 | /61/ | 项目的运营风险 | {} | 算法预测 | QS | 2022/8/30 15:30:46 | |
0000061 | project_code_risk | 风险 | 挖掘类 | float | 项目标签 | 62 | 61 | 1 | /61/ | 项目的代码风险 | {} | 算法预测 | QS | 2022/8/30 15:30:46 |