本套文档基于代码库静态分析(master 分支,2026-09-03),拆解「数据提取」模块的两条核心链路:规则管理如何把圈选规则变成一次提数任务,以及人群包从创建、生成、去重到推送的完整生命周期。所有节点均标注对应的服务模块、类名与行号。
规则(callout_package_rule)是圈选条件的载体;点击「生成人群包」后,核心服务把规则注入 PickDataConditionBO,经 PickDataManager 排队分流——命中 dataPick.quotaCodes 的数据源(如 user_info)走自建 dw-platform-datapick-service 直连 MySQL 提数,其余走 Azkaban 大数据平台;执行方把结果 CSV 上传 FTP 并回调 /api/package/callback,核心服务据此更新人群包(callout_package_task)的 pullStatus,后续再经去重、切包、推送触达下游。
| 想了解… | 去哪看 |
|---|---|
| 一次提数经过哪些服务 | 总览 · 01 章 · 图 1 |
| 规则的圈选条件长什么样 | 总览 · 02 章 · 图 2/3 |
| 点「生成人群包」之后发生了什么 | 总览 · 03 章 · 图 4 |
| 人群包为什么卡在某个状态 | 总览 · 04 章 · 图 5;详解 · 守护循环与重试 |
| 人群包有哪些创建入口、如何推送 | 总览 · 05 章 · 图 7/8 |
| SQL 是怎么拼出来的、去重怎么做的 | 详解 · 路径 A · 图 11 |
| Azkaban 平台如何被调用 | 详解 · 路径 B · 图 12 |
| 人群包怎么被切成分包、切分条件怎么判定 | 拆包 · 12 章 · 图 15 |
| 精准系统订购的人群怎么按数量切包 | 拆包 · 11 章 · 入口② |
| 推送前大文件怎么拆分片 | 拆包 · 15 章 · 物理拆分 |
| 两个包怎么互相去重、本地去重怎么跑 | 去重 · 17-20 章 · 图 19/20/21 |
| 生成时自动剔除已触达人群是怎么回事 | 去重 · 21 章 · 图 22 |
| 代码里有哪些坑 | 详解 · 09 风险清单 · 拆包 · 16 · 去重 · 23 风险清单 |