chore: [workflow] 提交工作区代码

This commit is contained in:
wangyunlong committed 2026-09-30 10:46:15 +08:00
1 parent 2ff588a65d
commit 01f3d7aaf7
131 files changed
+24306 -1320

No files matched your search

+630 -34
View File
@@ -10,7 +10,7 @@
{
"id": "collect_collaborators",
"name": "采集合作达人指标",
"description": "按每日范围并行抓取合作达人在 B站、小红书蒲公英和星图的曝光等指标,星图未命中的任务再用抖店达人广场补采;05:00 仅补 01:00 未完成的任务。",
"description": "按每日范围并行抓取合作达人在 B站、小红书蒲公英和星图的曝光等指标,星图未命中的任务再用抖店达人广场补采;05:00 仅补 01:00 未完成的任务。",
"data_flow": {
"sources": [
{
@@ -19,7 +19,7 @@
},
{
"system": "内容平台",
"label": "B站、小红书蒲公英与星图/抖店补采指标"
"label": "B站、小红书蒲公英与星图/抖店补采指标"
}
],
"processing": [
@@ -39,6 +39,57 @@
],
"replay_policy": "repeatable"
},
{
"id": "sync",
"name": "同步合作达人曝光指标入库",
"description": "只汇总合作达人本轮曝光结果,按记录映射更新或补建 PostgreSQL 内容笔记数据。",
"data_flow": {
"sources": [
{
"system": "本地采集产物",
"label": "合作达人内容指标结果"
},
{
"system": "飞书映射",
"label": "合作达人内容记录对应关系"
}
],
"processing": [
"读取合作达人各平台曝光指标",
"按内容记录身份更新已有数据或补建缺失记录"
],
"destinations": [
{
"system": "PostgreSQL",
"label": "合作达人笔记与曝光指标"
}
]
},
"entry": "data/tools/sync_metrics_to_cmt_notes.py",
"args": [
"--scope",
"collaborators"
],
"depends_on": [
"collect_collaborators"
],
"run_after_failure": true,
"replay_policy": "repeatable"
}
]
},
"provenance": {
"source_project": "content",
"task_name": "YingxiaoYunying_DailyRun"
},
"note": "每日 01:00、05:00 采集合作达人内容指标并同步入库;自营内容指标由独立的 content.metrics.self_operated.daily 工作流负责。"
},
{
"id": "content.metrics.self_operated.daily",
"module": "content_marketing",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "refresh_self_mapping",
"name": "刷新自营款式映射",
@@ -61,16 +112,12 @@
]
},
"entry": "data/tools/refresh_self_mapping.py",
"depends_on": [
"collect_collaborators"
],
"run_after_failure": true,
"replay_policy": "repeatable"
},
{
"id": "collect_self_bilibili",
"name": "采集自营 B站指标",
"description": "读取自营映射中的 B站笔记链接,通过公开 API 获取播放量和发布时间并回填对应飞书表。",
"description": "读取自营映射中的 B站笔记链接,通过公开 API 获取标题、UP主、时长、发布时间与播放/点赞/投币/收藏/分享/弹幕全量指标,回填对应飞书表并产出全量视频指标 artifact。",
"data_flow": {
"sources": [
{
@@ -83,7 +130,8 @@
}
],
"processing": [
"按映射定位自营笔记并读取公开指标"
"按映射定位自营笔记并读取公开指标",
"按 BV 号聚合全量视频指标 artifact"
],
"destinations": [
{
@@ -92,7 +140,7 @@
},
{
"system": "本地采集产物",
"label": "B站自营指标结果"
"label": "B站自营指标结果与全量视频 artifact"
}
]
},
@@ -106,7 +154,7 @@
{
"id": "collect_self_douyin",
"name": "采集自营抖音指标",
"description": "使用蝉妈妈新账号登录态导出自营抖音视频数据,解析曝光指标并回填飞书自营表。",
"description": "使用蝉妈妈新账号登录态导出自营抖音视频数据,解析视频链接、标题、发布时间、曝光、点赞、评论、转发等全量指标,并回填飞书自营曝光表。",
"data_flow": {
"sources": [
{
@@ -119,7 +167,8 @@
}
],
"processing": [
"导出自营视频数据并解析曝光指标"
"导出自营视频数据并解析全量视频指标",
"按发布时间槽位回填飞书曝光"
],
"destinations": [
{
@@ -140,45 +189,116 @@
"replay_policy": "repeatable"
},
{
"id": "sync",
"name": "同步合作与自营曝光指标入库",
"description": "汇总本轮合作达人及自营曝光结果,按记录映射更新或补建 PostgreSQL 内容笔记数据。",
"id": "collect_self_xiaohongshu",
"name": "采集自营小红书笔记指标",
"description": "复用 ARK 隔离登录态(失效时短信验证码需人工完成)进入小红书笔记管理后台,采集商品笔记与普通笔记两个页签的全部展示列(笔记信息、阅读数、点赞数、引流次数、支付金额与订单数等),产出全量笔记指标 artifact。",
"data_flow": {
"sources": [
{
"system": "本轮采集产物",
"label": "合作达人及自营内容指标"
"system": "小红书 ARK",
"label": "已登录的笔记管理后台(商品笔记/普通笔记)"
},
{
"system": "本地映射",
"label": "内容记录对应关系"
"system": "本地配置",
"label": "自营小红书账号与登录手机号"
}
],
"processing": [
"合并各平台指标并匹配内容记录",
"更新已有记录或补建缺失记录"
"按页签逐页抓取并按表头解析全部展示列",
"按笔记身份去重产出全量指标 artifact"
],
"destinations": [
{
"system": "本地采集产物",
"label": "小红书自营笔记全量指标 artifact"
}
]
},
"entry": "self_xhs_scraper.py",
"depends_on": [
"collect_self_douyin"
],
"run_after_failure": true,
"replay_policy": "repeatable"
},
{
"id": "sync",
"name": "同步自营曝光指标入库",
"description": "只汇总自营内容曝光结果,按自营记录映射更新或补建 PostgreSQL 内容笔记数据。",
"data_flow": {
"sources": [
{
"system": "本地采集产物",
"label": "自营内容指标结果"
},
{
"system": "飞书映射",
"label": "自营内容记录对应关系"
}
],
"processing": [
"读取自营 B站和抖音曝光指标",
"按自营内容记录身份更新已有数据或补建缺失记录"
],
"destinations": [
{
"system": "PostgreSQL",
"label": "内容笔记与曝光指标"
"label": "自营笔记与曝光指标"
}
]
},
"entry": "data/tools/sync_metrics_to_cmt_notes.py",
"args": [
"--scope",
"self-operated"
],
"depends_on": [
"collect_self_douyin"
],
"replay_policy": "repeatable",
"run_after_failure": true
"run_after_failure": true,
"replay_policy": "repeatable"
},
{
"id": "sync_self_video_metrics",
"name": "同步自营内容指标入库",
"description": "按平台解析自营内容指标(抖音蝉妈妈导出、B站公开 API artifact、小红书 ARK artifact),映射内部账号别名后按账号+内容+业务日期幂等写入 PostgreSQL cmt_self_video_metrics(含 page_metrics 原始列快照)。",
"data_flow": {
"sources": [
{
"system": "本地采集产物",
"label": "蝉妈妈自营抖音视频导出与 B站/小红书全量指标 artifact"
},
{
"system": "本地配置",
"label": "自营账号别名映射"
}
],
"processing": [
"按平台解析来源产物的全量内容指标",
"按账号+内容+业务日期幂等 upsert"
],
"destinations": [
{
"system": "PostgreSQL",
"label": "自营内容每日指标(抖音/B站/小红书)"
}
]
},
"entry": "data/tools/sync_self_video_metrics.py",
"depends_on": [
"sync",
"collect_self_xiaohongshu"
],
"run_after_failure": true,
"replay_policy": "repeatable"
}
]
},
"provenance": {
"source_project": "content",
"task_name": "YingxiaoYunying_DailyRun"
"task_name": "YingxiaoYunying_SelfOperated_DailyRun"
},
"note": "每日 01:00 执行合作达人及自营 B站、蝉妈妈采集,05:00 按 01:00 产生的未完成清单补采;账号切换期间仅暂停自营采集步骤,不移除自营链;两次均完成后同步曝光指标入库。"
"note": "每日 01:00、05:00 刷新自营映射并采集自营 B站、蝉妈妈、小红书 ARK 数据;飞书曝光回填保持不变,另将三平台全量内容指标(视频/笔记链接、标题、发布时间、曝光/阅读、点赞、评论、转发等)按日快照入库,失败时仍保留后续链路与入库汇总步骤。"
},
{
"id": "content.metrics.backfill",
@@ -189,7 +309,7 @@
{
"id": "collect_collaborators",
"name": "补采合作达人指标",
"description": "按每日范围并行补采合作达人在 B站、小红书蒲公英和星图的曝光等指标,星图未命中的任务再用抖店达人广场补采。",
"description": "按每日范围并行补采合作达人在 B站、小红书蒲公英和星图的曝光等指标,星图未命中的任务再用抖店达人广场补采。",
"data_flow": {
"sources": [
{
@@ -198,7 +318,7 @@
},
{
"system": "内容平台",
"label": "B站、小红书蒲公英与星图/抖店补采指标"
"label": "B站、小红书蒲公英与星图/抖店补采指标"
}
],
"processing": [
@@ -245,7 +365,11 @@
"depends_on": [
"collect_collaborators"
],
"run_after_failure": true
"run_after_failure": true,
"args": [
"--scope",
"collaborators"
]
}
]
},
@@ -938,6 +1062,438 @@
},
"note": "每天采集计划日期前两天;品牌失败仍继续商品,任一步失败则工作流失败。"
},
{
"id": "shop.jd_customer_service.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "customer_messages",
"name": "采集京东客服聊天记录",
"description": "按控制台选择的业务日期打开京东客服聊天记录,切换消息视图,滚动加载全部顾客并逐个读取会话消息;全部顾客完成后才结束并幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "京东客服后台",
"label": "单日聊天记录消息视图"
}
],
"processing": [
"将开始和结束时间设置为业务日 00:00:00 至 23:59:59",
"滚动加载消息视图中的全部顾客并逐个点击读取会话",
"按会话标识和消息身份规范化,校验顾客覆盖完整后幂等入库"
],
"destinations": [
{
"system": "本地原始产物",
"label": "京东客服单日原始响应"
},
{
"system": "PostgreSQL",
"label": "京东客服会话与消息表"
}
]
},
"entry": "collectors/jd_customer_service_messages.py",
"args": [
"--date",
"{business_date}",
"--range-days",
"30",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "京东客服消息日采集"
},
"note": "默认关闭自动调度,控制台可按业务日期手动运行;单日必须完成消息视图中的全部顾客,失败时保留已完成进度并可安全重试。"
},
{
"id": "shop.douyin_customer_service.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "customer_messages",
"name": "采集抖音客服历史会话消息",
"description": "复用抖音账号 vault 的 Cookie 跳过登录(指纹隐藏模式),打开飞鸽历史会话,按控制台选择的业务日期设置开始/结束日期,接待类型勾选纯人工客服接待与智能客服转人工接待,逐条点击查看会话读取聊天消息,解析抽屉右侧咨询订单面板的商品/订单并与会话绑定,全部幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "抖音飞鸽客服后台",
"label": "历史会话筛选列表与会话明细"
},
{
"system": "抖音账号状态",
"label": "douyin-shop 账号 Cookie 与 Profile"
}
],
"processing": [
"将开始和结束日期设置为业务日期,接待类型勾选纯人工客服接待与智能客服转人工接待",
"按分页逐条点击查看会话,滚动加载抽屉内的完整聊天消息",
"按会话 ID 和消息身份规范化,解析咨询订单面板绑定商品/订单,校验会话覆盖完整后幂等入库"
],
"destinations": [
{
"system": "本地原始产物",
"label": "抖音客服单日会话行原始数据"
},
{
"system": "PostgreSQL",
"label": "抖音客服会话与消息表"
}
]
},
"entry": "collectors/dy_customer_service_messages.py",
"args": [
"--date",
"{business_date}",
"--range-days",
"30",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "抖音客服消息日采集"
},
"note": "每月 1 日凌晨自动采集近 30 天;控制台支持自定义日期范围;单日必须完成筛选结果中的全部会话,失败时保留已完成进度并可安全重试。"
},
{
"id": "shop.tmall_customer_service.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "customer_messages",
"name": "采集天猫客服聊天记录",
"description": "复用光影行星旗舰店:龙虾仔账号 vault 的 Cookie,使用 Scrapling 隐藏指纹浏览器打开千牛聊天记录查询页;按控制台选择日期范围,每次按不超过 31 天拆分查询,逐个会话读取消息并幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "天猫千牛客服后台",
"label": "聊天记录查询列表与会话消息"
},
{
"system": "天猫账号状态",
"label": "tmall-shop 账号 vault Cookie 与独立 Profile"
}
],
"processing": [
"限制查询范围为最近三个月,并拆分为每次最多 31 天的日期窗口",
"滚动加载查询结果中的全部会话,逐个选中并读取消息时间、发送人、文本及媒体链接",
"按账号、顾客、会话和消息指纹规范化;保存每个查询窗口的原始产物并幂等写入 PostgreSQL"
],
"destinations": [
{
"system": "本地原始产物",
"label": "天猫客服会话与消息 JSON"
},
{
"system": "PostgreSQL",
"label": "天猫客服会话与消息表"
}
]
},
"entry": "collectors/tmall_customer_service_messages.py",
"args": [
"--start-date",
"{business_date}",
"--end-date",
"{business_date}",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "天猫客服聊天记录采集"
},
"note": "控制台可选择最近三个月内的开始和结束日期;每次平台查询不超过 31 天,按窗口顺序采集。默认不自动调度,失败窗口保留已完成数据,可安全重试。"
},
{
"id": "shop.tmall_negative_reviews.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "negative_reviews",
"name": "采集天猫差评及商品信息",
"description": "复用 tmall-shop 账号 vault Cookie,使用 Scrapling 隐藏指纹浏览器打开千牛评价管理;先设置控制台选择的评价时间范围并固定情感分类为负面评价(emotion=13),再点击搜索;分页采集评论文字、图片、主评 ID、评价时间和商品名称,不读取或保存订单号,核对总数后幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "天猫千牛评价管理",
"label": "负面评价列表"
},
{
"system": "天猫账号状态",
"label": "tmall-shop vault Cookie 与隔离 Profile"
}
],
"processing": [
"将控制台选定的起止日期设置为评价时间,并选择负面评价后再搜索;日期不留空,避免页面执行全日期查询",
"分页读取评价文字、图片链接、主评 ID、评价时间和关联商品名称,不采集订单号",
"核对页面总数和评价 ID 覆盖完整后,按账号及主评 ID 幂等写入 PostgreSQL"
],
"destinations": [
{
"system": "本地原始产物",
"label": "天猫差评范围采集 JSON"
},
{
"system": "PostgreSQL",
"label": "天猫差评及商品信息表"
}
]
},
"entry": "collectors/tmall_negative_reviews.py",
"args": [
"--start-date",
"{business_date}",
"--end-date",
"{business_date}",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "天猫差评范围采集"
},
"note": "控制台选择实际评价时间范围;页面不选择评价时间会查询所有日期,因此工作流会先填入日期并固定筛选负面评价后再搜索。默认不自动调度。"
},
{
"id": "shop.dy_negative_reviews.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "negative_reviews",
"name": "采集抖音差评及商品信息",
"description": "复用抖音账号 vault 的 Cookie(指纹隐藏模式),打开抖店评价管理-评价明细,筛选差评并把评价时间设置为控制台选择的业务日,逐页读取评价文字、图片、评价状态与商品名称/商品ID/规格,全部页面完成后幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "抖店评价管理后台",
"label": "差评评价列表"
}
],
"processing": [
"点击评价等级「差评」并把评价时间设置为业务日 00:00:00-23:59:59",
"按分页完整读取评价文字、图片与商品信息",
"按账号、业务日期和评价(订单)ID 校验完整后幂等入库"
],
"destinations": [
{
"system": "本地原始产物",
"label": "抖音差评单日原始数据"
},
{
"system": "PostgreSQL",
"label": "抖音差评及商品信息表"
}
]
},
"entry": "collectors/dy_negative_reviews.py",
"args": [
"--date",
"{business_date}",
"--range-days",
"30",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "抖音差评日采集"
},
"note": "每月 1 日凌晨自动采集近 30 天(含当天);控制台支持自定义日期范围,范围按业务日逐日采集;评价历史仅保留近 30 天,超出范围按 0 条成功;相同账号和日期重复执行按评价(订单)ID 幂等。"
},
{
"id": "shop.douyin_after_sales_quality.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "after_sales_quality",
"name": "采集抖音品质原因售后单",
"description": "复用抖音账号 vault 的 Cookie 跳过登录(Scrapling 隐藏指纹模式),打开售后工作台,通过更多筛选把申请原因固定为商品品质原因,可按控制台自定义申请时间范围(不设置时间则为页面默认最近6个月全量查询),逐条点击查看详情,在新页签读取协商记录的退货原因、退款说明、凭证信息和交易信息的商品名称、商品ID、商家编码,按申请时间归属业务日后幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "抖音售后工作台",
"label": "品质原因售后列表与售后详情协商记录"
},
{
"system": "抖音账号状态",
"label": "douyin-shop 账号 Cookie 与 Profile"
}
],
"processing": [
"展开更多筛选并将申请原因固定为商品品质原因,可设置申请时间开始/结束日期",
"按分页逐条点击查看详情,在新页签展开协商记录并读取退货原因、退款说明、凭证信息与商品信息",
"按申请时间的上海日期归属业务日,以账号和售后编号幂等入库,协商记录按条目序号幂等保存"
],
"destinations": [
{
"system": "本地原始产物",
"label": "抖音品退售后单原始数据"
},
{
"system": "PostgreSQL",
"label": "抖音品质原因售后单与协商记录表"
}
]
},
"entry": "collectors/dy_after_sales_quality.py",
"args": [
"--date",
"{business_date}",
"--range-days",
"30",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "抖音品退售后单采集"
},
"note": "每月 1 日凌晨自动采集近 30 天;控制台支持自定义日期范围;不设置申请时间时按页面默认查询最近6个月做全量采集。每条售后单按申请时间归属业务日,重复执行按账号和售后编号幂等更新,失败时保留已完成进度并可安全重试。"
},
{
"id": "shop.jd_negative_reviews.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "negative_reviews",
"name": "采集京东差评及商品信息",
"description": "按控制台选择的京东店铺和业务日期打开商品评价管理,选择差评并分页读取评价内容、评价时间、订单号、商品名称、SKU 和图片;全部页面完成后幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "京东商品评价后台",
"label": "差评评价列表"
}
],
"processing": [
"设置业务日 00:00:00 至 23:59:59 并选择差评",
"按分页完整读取评价与商品信息",
"按账号、业务日期和评价 ID 校验完整后幂等入库"
],
"destinations": [
{
"system": "本地原始产物",
"label": "京东差评单日原始响应"
},
{
"system": "PostgreSQL",
"label": "京东差评及商品信息表"
}
]
},
"entry": "collectors/jd_negative_reviews.py",
"args": [
"--date",
"{business_date}",
"--range-days",
"30",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "京东差评日采集"
},
"note": "每月 1 日凌晨自动采集近 30 天(含当天);控制台支持按店铺选择日期范围,范围按业务日逐日采集;相同账号、店铺和日期重复执行按评价 ID 幂等。"
},
{
"id": "shop.jd_after_sales_issues.daily",
"module": "shop_intelligence",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "after_sales_issues",
"name": "采集京东品退异常问题",
"description": "按控制台选择的日期范围打开京东商智售后分析,筛选商品出现异常并查看全部服务单明细;点击下载数据,读取全部分页,只保留用户原声不是未知的服务单及商品名称、SKU 等信息,按服务单申请日期归属业务日后幂等写入 PostgreSQL。",
"data_flow": {
"sources": [
{
"system": "京东商智",
"label": "售后分析异常服务单明细"
}
],
"processing": [
"将售后分析时间设置为控制台提交的自定义日期范围;商智单次最多 31 天时按连续区间查询",
"筛选售后原因商品出现异常并读取全部服务单明细分页",
"过滤用户原声为未知或空的记录,按服务单申请日期归属业务日,并以账号、业务日和服务单 ID 幂等入库;范围完成后清理同账号范围内申请时间落在范围外的历史残留"
],
"destinations": [
{
"system": "本地原始产物",
"label": "京东品退日期范围明细及下载审计"
},
{
"system": "PostgreSQL",
"label": "京东品退异常服务单表"
}
]
},
"entry": "collectors/jd_after_sales_issues.py",
"args": [
"--date",
"{business_date}",
"--range-days",
"30",
"--headless"
],
"timeout_seconds": 14400,
"replay_policy": "idempotent"
}
]
},
"provenance": {
"source_project": "shop",
"task_name": "京东品退问题日采集"
},
"note": "每月 1 日凌晨自动采集近 30 天(含当天);控制台固定使用研发旗舰账号并支持直接提交日期范围。一次范围运行会在商智最多 31 天限制下按连续区间查询,完成后按服务单申请日期写入业务日并清理范围外申请时间的历史残留;相同账号、业务日和服务单 ID 重复执行按幂等更新。"
},
{
"id": "shop.douyin_price_appeal",
"module": "shop_intelligence",
@@ -986,7 +1542,7 @@
"source_project": "shop",
"task_name": "douyin-price-appeal-daily"
},
"note": "每天 08:00、16:00、22:00 自动执行;仍可在控制台手动执行。每个时点都会重新扫描,已申诉商品不会再次出现可申诉入口;安全预演不访问抖音也不提交申诉。"
"note": "每小时自动执行;仍可在控制台手动执行。每个时点都会重新扫描,已申诉商品不会再次出现可申诉入口;安全预演不访问抖音也不提交申诉。"
},
{
"id": "product.persona.daily",
@@ -1138,6 +1694,46 @@
"task_name": "ProductCollectorSalesAlert"
}
},
{
"id": "product.online_stock_alert.daily",
"module": "product_commerce",
"trigger": "scheduled",
"execution": {
"steps": [
{
"id": "query_filter_notify",
"name": "查询线上商品并发送低库存预警",
"description": "使用企业数据交互商品列表接口查询线上渠道全部商品;库存低于 3 时,将 SKU、商品名称和库存汇总发送给配置的飞书接收人。",
"replay_policy": "idempotent",
"data_flow": {
"sources": [
{
"system": "企业数据交互接口",
"label": "线上渠道商品与当前库存"
}
],
"processing": [
"以 channel=0、keyword=空查询商品列表",
"筛选 total_stock 小于 3 的 SKU",
"按飞书消息幂等键去重并分段组织预警"
],
"destinations": [
{
"system": "飞书",
"label": "低库存 SKU、商品名称与库存预警",
"condition": "存在库存低于 3 的 SKU"
}
]
},
"entry": "online_stock_alert.py"
}
]
},
"provenance": {
"source_project": "data-hub",
"task_name": "OnlineItemStockAlert"
}
},
{
"id": "product.ecommerce_costs.daily",
"module": "product_commerce",
@@ -2222,7 +2818,7 @@
{
"id": "collect_analyze_publish",
"name": "采集并发布三平台市场排行",
"description": "并行采集天猫、京东和抖音市场排行,汇总平台结果并发送飞书报告链接。",
"description": "并行采集天猫、京东和抖音市场排行,按月份写入品牌行军图数据库并复用已有人工分类。",
"data_flow": {
"sources": [
{
@@ -2236,8 +2832,8 @@
],
"processing": [
"并行采集三平台排行",
"汇总平台结果并生成市场分析",
"归档报告并准备通知"
"按月份覆盖榜单快照并复用商品的风格、使用场景和品类",
"归档数据库结果并记录平台完成状态"
],
"destinations": [
{
@@ -2245,8 +2841,8 @@
"label": "三平台市场排行结果"
},
{
"system": "飞书",
"label": "市场排行报告链接与通知"
"system": "PostgreSQL / 品牌行军图",
"label": "market_product 与 fact_market_product_snapshot 月度快照"
}
]
},