完善 value_rank 社交图设计并落地 @ 结构化存储
- messages 表新增 mentioned_user_ids 字段设计,使用 JSON 数组字符串存储被@用户清单 - 新增社交图相关表设计:t_message_mentions、t_social_edges_daily、t_value_rank_social_daily - 增加迁移脚本 20260421_add_mentions_and_social_graph_tables.sql,支持现网平滑升级 - 改造 MessageStorageDB 入库流程:解析 msg_source.atuserlist 并写入 mentioned_user_ids - 更新 value_rank README:补充社交图数据链路、可产出图表及实现说明
This commit is contained in:
@@ -147,7 +147,7 @@ CREATE TABLE IF NOT EXISTS t_value_rank_snapshot (
|
||||
|
||||
> 这个表是关键:支持“涨跌解释”“历史回溯”“趋势展示”。
|
||||
|
||||
## 5.2(可选)社交指标表(V2)
|
||||
## 5.2 社交图数据层(建议直接上)
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS t_value_rank_social_daily (
|
||||
@@ -155,13 +155,77 @@ CREATE TABLE IF NOT EXISTS t_value_rank_social_daily (
|
||||
stat_date DATE NOT NULL,
|
||||
group_id VARCHAR(100) NOT NULL,
|
||||
user_id VARCHAR(100) NOT NULL,
|
||||
mentioned_count INT NOT NULL DEFAULT 0,
|
||||
mention_others_count INT NOT NULL DEFAULT 0,
|
||||
mentioned_count INT NOT NULL DEFAULT 0 COMMENT '被@次数(入度)',
|
||||
mention_others_count INT NOT NULL DEFAULT 0 COMMENT '@他人次数(出度)',
|
||||
unique_interactors INT NOT NULL DEFAULT 0 COMMENT '互动去重人数',
|
||||
interaction_score DECIMAL(10,2) NOT NULL DEFAULT 0 COMMENT '社交影响力分',
|
||||
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uniq_day_group_user (stat_date, group_id, user_id)
|
||||
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uniq_day_group_user (stat_date, group_id, user_id),
|
||||
KEY idx_group_day_score (group_id, stat_date, interaction_score)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
```
|
||||
|
||||
## 5.3 消息表结构化字段(提升提取效率)
|
||||
|
||||
在 `messages` 表新增字段:
|
||||
|
||||
- `raw_payload LONGTEXT`:完整原始消息(已支持)
|
||||
- `mentioned_user_ids LONGTEXT`:该消息里被 @ 的用户 ID 清单(JSON 数组字符串)
|
||||
|
||||
示例值:
|
||||
|
||||
```json
|
||||
["wxid_abc", "wxid_xyz"]
|
||||
```
|
||||
|
||||
> 设计目的:避免每次统计都扫 `raw_payload`,在入库阶段就把最常用的社交特征结构化。
|
||||
|
||||
## 5.4 社交关系明细与边表(用于关系网图)
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS t_message_mentions (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
message_id VARCHAR(32) NOT NULL,
|
||||
group_id VARCHAR(100) NOT NULL,
|
||||
sender_id VARCHAR(100) NOT NULL,
|
||||
mentioned_user_id VARCHAR(100) NOT NULL,
|
||||
stat_date DATE NOT NULL,
|
||||
msg_time DATETIME NOT NULL,
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_message_sender_mentioned (message_id, sender_id, mentioned_user_id),
|
||||
KEY idx_group_date (group_id, stat_date),
|
||||
KEY idx_mentioned_group_date (mentioned_user_id, group_id, stat_date)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS t_social_edges_daily (
|
||||
id BIGINT PRIMARY KEY AUTO_INCREMENT,
|
||||
stat_date DATE NOT NULL,
|
||||
group_id VARCHAR(100) NOT NULL,
|
||||
from_user_id VARCHAR(100) NOT NULL,
|
||||
to_user_id VARCHAR(100) NOT NULL,
|
||||
mention_count INT NOT NULL DEFAULT 0,
|
||||
reply_count INT NOT NULL DEFAULT 0,
|
||||
interaction_score DECIMAL(10,2) NOT NULL DEFAULT 0,
|
||||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uk_day_group_edge (stat_date, group_id, from_user_id, to_user_id),
|
||||
KEY idx_group_day_score (group_id, stat_date, interaction_score)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5.5 社交图可产出图表(周报/日报)
|
||||
|
||||
1. 群社交关系网图(节点=成员,边=互动强度)
|
||||
2. 被@热度榜(Top10)
|
||||
3. 最强搭子榜(双向互动最强的成员对)
|
||||
4. 社交桥梁榜(连接不同圈层的关键成员)
|
||||
5. 个人影响力趋势图(7天/30天)
|
||||
|
||||
> 这些图表都基于 `t_social_edges_daily` + `t_value_rank_social_daily` 即可生成,不需要回扫全量原始消息。
|
||||
|
||||
---
|
||||
|
||||
## 6. 插件交互设计(命令与输出)
|
||||
@@ -262,8 +326,9 @@ plugins/value_rank/
|
||||
|
||||
当你准备上线“被@”指标时,建议:
|
||||
|
||||
1. 在消息入库或消息处理总入口解析 `@` 数据
|
||||
2. 日聚合写入 `t_value_rank_social_daily`
|
||||
1. 在消息入库时同步解析 `@`,并直接写 `messages.mentioned_user_ids`
|
||||
2. 同步写 `t_message_mentions` 明细,方便追溯和反查
|
||||
3. 日聚合写入 `t_social_edges_daily` 与 `t_value_rank_social_daily`
|
||||
3. 新增权重项:
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user