Files
gyxx-flow/docs/dynamic-workflow-config.md
T

83 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 工作流动态配置
## 配置源
商品 ID、ERP 款式编码和各业务飞书目标表现在统一保存在云端 PostgreSQL。
控制台“配置中心 → 款式平台配置”提供查询、新增、编辑、
停用和删除。工作流运行时只读取这些项目表,不再读取旧配置主表
`TtoCb1NuQaDy3NsZWTpc0GIvnph/tblKCjplVAFrRwMC`
目标飞书表仍是工作流的业务输入或输出,例如销量表、主图表、人群画像表和合作达人表;
本次下线的是集中维护这些地址和商品 ID 的旧飞书索引表,不是业务目标表本身。
## 受影响工作流
| 工作流 | 动态读取内容 | 生效入口 |
| --- | --- | --- |
| `content.summary.monthly` | 款式与每周笔记分析/生命进程目标表 | `monthly_summary_all.py`(复用周汇总配置加载器) |
| `content.summary.weekly` | 款式与每周笔记分析/生命进程目标表 | `weekly_summary_all.py` |
| `content.metrics.daily` | 合作达人目标表(自营采集暂缓) | `run_all.py``sync_metrics_to_cmt_notes.py` |
| `content.metrics.backfill` | 合作达人目标表 | `run_all.py` |
| `content.notes_master.daily` | 各款式合作达人及自营笔记表 | `sync_notes_master.py` |
| `product.persona.daily` | 三平台商品 ID 与人群画像目标表 | 三个平台画像采集脚本 |
| `product.daily` | 天猫/京东/抖音商品 ID、ERP 编码、销量目标表 | `orchestrate_daily_collection.py` 及平台采集脚本 |
| `product.style_analysis.interval` | 款式与平台单品分析目标表 | `analyze_style.py` |
| `product.main_image.weekly` | 京东 SPU、天猫款式和主图目标表 | 两个平台主图采集入口 |
| `product.sales_sheet.daily` | 款式与 ERP 编码 | `sync_monthly_sales_sheet.py` |
| `product.erp_all_shop_daily` | 全部款式与 ERP 编码 | `backfill_erp_all_shop_daily.py` |
共 11 个定时工作流依赖这套动态配置。维护脚本 `feishu_comment_batch.py`
`db/sync_sku_master.py` 也已改为读取同一项目数据库,避免从非定时入口绕回旧主表。
`product.alert.daily`、商品导入、万相台广告、视频发布和市场排行使用各自数据库或专用配置,
不依赖旧配置主表,因此不在本次切换范围内。
## 字段归属与数据模型
新模型不再把共享字段重复放在每个平台行:
| 层级 | 字段 | 使用目的 |
| --- | --- | --- |
| 款式 | 款式名、品牌、ERP 款式编码 | 统一业务身份;ERP 日采、月度销量表和款式主数据使用 |
| 款式 | 销量表、主图表 | 商品日报和天猫/京东主图工作流的款式目标表 |
| 款式 | 合作达人表、自营合作达人表 | 内容采集、合作同步和笔记清单使用 |
| 款式 | 每周/每月笔记分析、平台单品分析 | 内容周月报和款式周期分析使用 |
| 平台 | 平台名、商品 ID、启用状态 | 天猫商品 ID、京东 SPU、京东自营 SKU、抖音/PDD 商品 ID |
| 平台 | 本平台人群画像表 | 天猫、京东、抖音画像采集分别写入自己的目标表 |
数据库使用父子表:
- `workflow_dynamic_styles`:一个款式一行,保存 ERP 和共享飞书目标。
- `workflow_dynamic_style_platforms`:一个款式可有多个平台子行,只保存平台商品 ID、平台画像表和启停状态。
-`workflow_dynamic_configs` 保留为原始迁移审计,不再参与运行时读取。
- `erp_codes``item_ids` 使用 PostgreSQL 数组,页面接受中英文逗号或换行并自动去重。
- `destinations` 使用通用 JSONB 目标列表,每项包含 `key``label``url``description``enabled`;六个旧目标字段仍同步保留,保证已有工作流兼容。后续新增分析逻辑只需增加一个稳定的 `key` 和对应飞书表地址。
- 款式带递增 `revision`;整页保存和删除必须提交 `If-Match`,避免并发覆盖。
## 首次迁移
`config/workflow-dynamic-config-seed.json` 是 2026-08-19 从旧 Base 分页导出的只读迁移快照,
共 215 条源记录。项目第一次连接一个空数据库时会:
1. 幂等创建旧迁移审计表、款式父表和平台子表;
2. 在事务和 PostgreSQL advisory lock 内导入 215 条记录;
3. 写入迁移标记 `feishu-style-config-20260819-v1`
4. 运行 v2 归一化迁移:按款式合并共享字段,按平台合并商品 ID;旧表中集中在天猫行的三平台画像地址分别迁入对应平台子行;
5. 写入迁移标记 `workflow-style-platform-config-20260819-v2`,此后不会重复迁移。
服务器必须注入 `GYXX_POSTGRES_DSN`,或完整的 `PG_HOST/PG_PORT/PG_DB/PG_USER/PG_PASSWORD`
没有数据库且没有数据库生成的运行缓存时,相关工作流会明确失败,不会静默回读旧飞书主表。
## 运行时路径
```text
控制台分组 CRUD
workflow_dynamic_styles + workflow_dynamic_style_platforms (PostgreSQL)
├─ 兼容聚合输出 → StyleConfigLoader → 商品经营工作流
└─ 兼容聚合输出 → feishu_mapping → 内容营销工作流 → 各业务飞书目标表
```
`StyleConfigLoader` 只在数据库短暂不可用时使用最近一次数据库成功读取后生成的本地缓存;
`feishu_mapping` 的目标表字段缓存仍保留,用来减少对各业务飞书表的字段查询。