feat: complete production workflow migration
This commit is contained in:
+58
@@ -0,0 +1,58 @@
|
||||
---
|
||||
name: purchase-confirmation-workflow
|
||||
description: 触发采购确认通知工作流 (purchase-confirmation)
|
||||
triggers:
|
||||
- manual: 用户要求"执行/触发 purchase-confirmation"
|
||||
- scheduled: 通过 cron 定时触发
|
||||
---
|
||||
|
||||
# Purchase Confirmation Workflow
|
||||
|
||||
Trigger the `purchase-confirmation` (采购确认通知工作流) from the `${GYXX_PROJECT_ROOT}` orchestrator.
|
||||
|
||||
## ⚠️ Important Execution Notes
|
||||
|
||||
- **执行时间长**:此工作流包含浏览器自动化(Chrome CDP),采集脚本执行时间约 **5-15 分钟**,请耐心等待,**不要**超时后随意清理锁和进程
|
||||
- **不要主动终止**:看到超时不要清理锁/杀进程,工作流可能仍在正常执行
|
||||
- **判断完成**:检查 `shared-data/purchase-confirmation/` 目录中是否有 CSV 文件(如 `采购确认通知汇总_YYYYMMDD_HHMMSS.csv`)
|
||||
|
||||
## Workflow Command
|
||||
|
||||
```bash
|
||||
cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run purchase-confirmation
|
||||
```
|
||||
|
||||
工作流通过 Hermes MCP 网关执行,包含采集端和分析端两个阶段。
|
||||
|
||||
## 创建定时任务
|
||||
|
||||
```python
|
||||
cronjob(action='create',
|
||||
prompt='执行 purchase-confirmation 工作流。运行命令:cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run purchase-confirmation',
|
||||
schedule='0 9 * * *', # 每天早上9点
|
||||
name='purchase-confirmation-daily')
|
||||
```
|
||||
|
||||
## 通知规则(关键)
|
||||
|
||||
⚠️ **采集端通知规则**:采集端 Hermes 只通知运营,不通知业务目标用户。
|
||||
- 采集端通知对象:运营(飞书 OpenID `ou_7ad5fc8012e2f741afc5346e05ffd447`)
|
||||
- 业务最终通知:由分析端 Hermes 负责
|
||||
- 通知方式:通过当前会话直接响应(不调用 send_message/yuanbao 派)
|
||||
|
||||
当用户请求"只通知我(不要通知业务目标用户)"时:
|
||||
1. 直接在当前会话中以文本形式输出报告
|
||||
2. 说明通知范围:仅运营,业务目标用户由分析端 Hermes 负责
|
||||
|
||||
## 工作流配置参考
|
||||
|
||||
- **工作流名称**:purchase-confirmation
|
||||
- **显示名称**:采购确认通知工作流
|
||||
- **采集脚本**:`${GYXX_PROJECT_ROOT}/orchestrator/scripts/collect_confirmation.ps1`
|
||||
- **输出文件**:`采购确认通知汇总_*.csv`(xlsx 格式)
|
||||
- **通知目标**(业务用户):
|
||||
- `ou_7ad5fc8012e2f741afc5346e05ffd447`
|
||||
- `ou_339c1d396b397c97b08e1bf377963d40`
|
||||
- `ou_54141d75b24d22ddc8c1c4d66e00b6e9`
|
||||
- **采集端绑定应用**:`cli_aa8c4fb4c4f81cd3`
|
||||
- **分析端绑定应用**:`cli_aa8c4fc918b85cce`
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
---
|
||||
name: purchase-order-update-workflow
|
||||
description: 触发采购单日期更新工作流 (purchase-order-update)
|
||||
category: workflow
|
||||
triggers:
|
||||
- manual: 用户要求"执行/触发 purchase-order-update"
|
||||
- scheduled: 通过 cron 定时触发
|
||||
---
|
||||
|
||||
# Purchase Order Update Workflow
|
||||
|
||||
Trigger the `purchase-order-update`(采购单日期更新工作流)from the `${GYXX_PROJECT_ROOT}` orchestrator.
|
||||
|
||||
## Workflow Command
|
||||
|
||||
```bash
|
||||
cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run purchase-order-update
|
||||
```
|
||||
|
||||
## 工作流配置(来源 bytecode 反向提取)
|
||||
|
||||
| 字段 | 值 |
|
||||
|------|-----|
|
||||
| **工作流名称** | purchase-order-update |
|
||||
| **显示名称** | 采购单日期更新工作流 |
|
||||
| **采集脚本** | `collect_purchase_order_update.ps1` |
|
||||
| **输出文件** | `update_result.json` |
|
||||
| **分析端通知方式** | `plugin:feishu.im.send_message` |
|
||||
| **采集端绑定应用** | `cli_aa8c4fb4c4f81cd3` |
|
||||
| **分析端绑定应用** | `cli_aa8c4fc918b85cce` |
|
||||
|
||||
## ⚠️ config.py 源文件已丢失
|
||||
|
||||
此工作流配置从 bytecode 反向提取,如需修改通知目标,需先重建 `config.py`。
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
---
|
||||
name: replenishment-alert-workflow
|
||||
description: 触发库存预警通知工作流 (replenishment-alert)
|
||||
triggers:
|
||||
- manual: 用户要求"执行/触发 replenishment-alert"
|
||||
- scheduled: 通过 cron 定时触发
|
||||
---
|
||||
|
||||
# Replenishment Alert Workflow
|
||||
|
||||
Trigger the `replenishment-alert` (库存预警通知工作流) from the `${GYXX_PROJECT_ROOT}` orchestrator.
|
||||
|
||||
## Trigger Conditions
|
||||
|
||||
- **手动触发**:用户明确要求"执行/触发 replenishment-alert"
|
||||
- **定时触发**:通过 cron 任务定期运行
|
||||
|
||||
## Workflow Command
|
||||
|
||||
```bash
|
||||
cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run replenishment-alert
|
||||
```
|
||||
|
||||
工作流通过 Hermes MCP 网关执行,包含采集端和分析端两个阶段。
|
||||
|
||||
## 已知问题
|
||||
|
||||
⚠️ **通知重复问题**:如需修复,从 `config.py` 的 `notification_targets.threshold_alert` 中移除 analyzer owner。但注意:`config.py` 源文件已丢失(仅 pyc 缓存),修改前需先重建配置。
|
||||
|
||||
⚠️ **config.py 源文件已丢失**:仅存 `__pycache__/config.cpython-311.pyc`,如需修改通知目标,需从 bytecode 反向提取常量后再重建文件。
|
||||
|
||||
## 工作流配置参考
|
||||
|
||||
- **工作流名称**:replenishment-alert
|
||||
- **显示名称**:库存预警通知工作流
|
||||
- **采集脚本**:`${GYXX_PROJECT_ROOT}/orchestrator/scripts/collect_replenishment.ps1`
|
||||
- **输出文件**:`threshold_alert_data.json`
|
||||
- **通知目标**(业务用户,仅 `threshold_alert`,来源 bytecode const[53]):
|
||||
- `ou_b76e4cbdb24fe28cebd45ad091b60224`(黄坤平)
|
||||
- **采集端绑定应用**:`cli_aa8c4fb4c4f81cd3`
|
||||
- **分析端绑定应用**:`cli_aa8c4fc918b85cce`
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
name: replenishment-workflow
|
||||
description: 触发补货建议工作流 (replenishment)
|
||||
triggers:
|
||||
- manual: 用户要求"执行/触发 replenishment"
|
||||
- scheduled: 通过 cron 定时触发
|
||||
---
|
||||
|
||||
# Replenishment Workflow
|
||||
|
||||
Trigger the `replenishment` (补货建议工作流) from the `${GYXX_PROJECT_ROOT}` orchestrator.
|
||||
|
||||
## ⚠️ Important Execution Notes
|
||||
|
||||
- **执行时间长**:此工作流包含浏览器自动化(Chrome CDP),采集脚本执行时间约 **5-15 分钟**,请耐心等待
|
||||
- **判断完成**:检查 `shared-data/replenishment/` 目录中是否有 `pending_insert.json` 和 `notify_data.json`
|
||||
- **后台执行**:建议使用 `background=true` + `notify_on_complete=true` 执行,避免超时
|
||||
|
||||
## Workflow Command
|
||||
|
||||
```bash
|
||||
cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run replenishment
|
||||
```
|
||||
|
||||
## 创建定时任务
|
||||
|
||||
```python
|
||||
cronjob(action='create',
|
||||
prompt='执行 replenishment 工作流。运行命令:cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run replenishment',
|
||||
schedule='0 9 * * *', # 每天早上9点
|
||||
name='replenishment-daily')
|
||||
```
|
||||
|
||||
## 通知目标(分析端)
|
||||
|
||||
仅通知运营(`ou_7ad5fc8012e2f741afc5346e05ffd447`)。不通知黄坤平,不通知审单群。
|
||||
|
||||
## 工作流配置参考
|
||||
|
||||
- **工作流名称**:replenishment
|
||||
- **显示名称**:补货建议工作流
|
||||
- **采集脚本**:`${GYXX_PROJECT_ROOT}/orchestrator/scripts/collect_replenishment.ps1`
|
||||
- **输出文件**:`pending_insert.json`, `notify_data.json`
|
||||
- **多维表**:应用 `cli_aa8c4fc918b85cce` 需对多维表 `Th0jbMHHQa7a8Lse3CicfSMBnxb` 有写入权限
|
||||
- **采集端绑定应用**:`cli_aa8c4fb4c4f81cd3`
|
||||
- **分析端绑定应用**:`cli_aa8c4fc918b85cce`
|
||||
|
||||
## 已知问题
|
||||
|
||||
⚠️ **多维表写入权限**:如遇以下错误,需在飞书开放平台为应用 `cli_aa8c4fc918b85cce` 开启多维表写入权限:
|
||||
- `91403 Forbidden` — 无权限访问多维表
|
||||
- `99992402 field validation failed` — 字段验证失败(常见于 app 无写入权限或字段类型不匹配)
|
||||
|
||||
写入失败**不影响通知发送**(符合 HARD RULES),但待处理数据需手动补充。
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
name: workflow-trigger-only
|
||||
description: 工作流触发原则:只执行既有命令,不自主生成代码修改流程
|
||||
triggers:
|
||||
- manual: 用户要求将某个操作原则沉淀为 skill 时创建
|
||||
---
|
||||
|
||||
# Workflow Trigger Only
|
||||
|
||||
## 核心原则
|
||||
|
||||
**只触发既有工作流,不自主生成或修改流程代码。**
|
||||
|
||||
## 执行方式
|
||||
|
||||
```
|
||||
cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run <工作流名>
|
||||
```
|
||||
|
||||
支持的 `<工作流名>`:
|
||||
- `replenishment-alert` — 库存预警通知
|
||||
- `purchase-confirmation` — 采购确认通知
|
||||
- `replenishment` — 补货建议
|
||||
|
||||
## 规则
|
||||
|
||||
1. **只运行既有命令** — 使用 `run.py mcp-run` 触发,不写 Python 脚本绕过后续流程
|
||||
2. **不自主修改流程代码** — 不修改 `mcp_workflow.py`、通知脚本、采集脚本等,除非用户明确要求
|
||||
3. **不自主生成新代码** — 不创建新脚本自行完成通知/写表等操作
|
||||
4. **编排逻辑由既有代码决定** — 采集→分析→通知的分段流程和通知对象由 `mcp_workflow.py` 和分析端 Hermes 控制
|
||||
|
||||
## 例外:手动转发心跳/执行报告
|
||||
|
||||
"只触发既有命令"规则**仅适用于 orchestrator 工作流执行**。当用户要求将某个工作流的心跳/执行报告**手动转发**给运营时:
|
||||
|
||||
1. 构造心跳消息内容(包含工作流 ID、运行 ID、状态、错误信息等)
|
||||
2. 通过飞书采集端应用(`cli_aa8c4fb4c4f81cd3`)将报告以 **Feishu DM** 形式发送给运营(`ou_8ee224968aa26a74c7d30ba27fed5eeb`)
|
||||
3. **不**通知业务目标用户,不走 yuanbao group
|
||||
4. 使用 `feishu` skill 中的 temp 脚本模式发送(写临时脚本 → terminal 运行 → 删除),或直接 reply 让 gateway 转发
|
||||
|
||||
> 注意:**自动心跳已由 `orchestrator/mcp_workflow.py` 用 Schema 2.0 interactive card 发送**(target 同样是 `ou_8ee224968aa26a74c7d30ba27fed5eeb`),本例外仅适用于**人工额外转发**场景(比如重发、转发给第三方等),不要重复发送已自动发出的心跳。
|
||||
|
||||
这是人工操作员在对话中转发报告的合法场景,与 orchestrator 自动执行工作流是两回事。
|
||||
|
||||
## 触发命令参考
|
||||
|
||||
| 工作流 | 命令 |
|
||||
|--------|------|
|
||||
| 库存预警通知 | `cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run replenishment-alert` |
|
||||
| 采购确认通知 | `cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run purchase-confirmation` |
|
||||
| 补货建议 | `cd ${GYXX_PROJECT_ROOT} && .venv/Scripts/python.exe run.py mcp-run replenishment` |
|
||||
|
||||
## 为什么这样做
|
||||
|
||||
- 工作流的编排逻辑(采集、分析、通知分段执行)由 `mcp_workflow.py` 控制
|
||||
- 通知对象由 `config.py` 和分析端 prompt 决定,不应在触发层硬编码
|
||||
- 自主生成代码容易出错且难以追踪
|
||||
Reference in New Issue
Block a user