feat: consolidate legacy workflows into gyxx-flow

This commit is contained in:
2026-07-28 14:51:15 +08:00
commit c23b62a8c8
374 changed files with 132990 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
# 部署手册
## 环境要求
- Windows 10/11 或 Windows Server,系统时区 `China Standard Time`
- Python 3.12、`uv`、Windows Task Scheduler
- 凭据由环境变量或外部密钥系统提供,不写入源码或清单
## 安装
```powershell
cd D:\gyxx-flow
uv sync --python 3.12 --extra test
$env:GYXX_DATA_ROOT = 'D:\gyxx-flow\var'
.\.venv\Scripts\python.exe -m gyxx_flow doctor --json
.\.venv\Scripts\python.exe -m pytest
```
不再配置任何 `GYXX_LEGACY_*_ROOT`。运行代码和资源随 `gyxx_flow` 包部署,
四个旧项目可以不挂载。商品模块需要独立配置时,可设置 `GYXX_PRODUCT_CONFIG`
该变量只指向新部署的配置文件。
## 生成候选调度计划
```powershell
.\.venv\Scripts\python.exe -m gyxx_flow schedule plan `
--output D:\gyxx-flow\var\schedule-plan\candidate `
--start-date 2026-07-27 `
--python-executable D:\gyxx-flow\.venv\Scripts\python.exe
```
输出包含 21 个 XML、`install.ps1``plan.json``drift.json`。生成计划不会
注册任务。只有生产门禁通过并获得明确授权后,才能人工审阅并逐个使用
`install.ps1 -Apply -WorkflowId <id>`;安装器强制一次只处理一个任务。
## 可迁移部署
复制项目或安装 wheel 后,只需重新设置 `GYXX_DATA_ROOT` 和凭据。禁止在生产任务
命令中出现旧项目盘符、用户目录解释器或旧项目工作目录。
+29
View File
@@ -0,0 +1,29 @@
# 迁移手册
## 当前边界
- 四个旧项目的源码、数据和现有计划任务保持原状。
- 工作流及其业务脚本已复制到 `src/gyxx_flow/modules/*/runtime`,运行时不引用旧项目。
- 21 个定时工作流可生成候选系统任务;默认不应用。
- 所有发现到的本地可执行脚本可通过 `gyxx scripts` 手工 dry-run 或执行。
- 历史数据副本按模块落入新数据根,并保留数量、字节和 SHA-256 对账证据。
## 工程验收
1. 四份 `config/source-manifests/*.json` 的目标文件和 SHA-256 全部通过。
2. 扫描源码、配置和启动器,确认无四个旧项目根目录或 `GYXX_LEGACY_*_ROOT`
3. 在不设置旧项目环境变量的进程中导入目录、列出脚本并 dry-run 21 个工作流。
4. 执行 `uv run pytest``uv run gyxx doctor --json` 和 wheel 构建检查。
5. 只生成调度计划,不注册、不禁用任何系统任务。
## 逐任务生产切换
1. 轮换历史明文凭据,并将新凭据放入外部密钥系统或环境变量。
2. 对目标 workflow 做 dry-run 和 shadow 对账。
3. 审核 run journal、artifact manifest、effect ledger 和 outbox。
4. 取得负责人明确授权,只安装一个新任务并禁用对应旧任务;旧任务不删除。
5. 日任务连续观察 7 天,周任务观察 2 个周期,月任务完成指定历史月回放。
6. 数据库、飞书、文件产物和通知对账通过后,才迁移下一任务。
推荐顺序:`shop_intelligence``supply_chain``content_marketing`
`product_commerce`
+29
View File
@@ -0,0 +1,29 @@
# 日常运维手册
## 常用命令
```powershell
gyxx list --json
gyxx scripts list --json
gyxx doctor --json
gyxx acceptance status --json
gyxx run shop.metrics.weekly --date 2026-07-27
gyxx backfill shop.metrics.weekly --from 2026-07-21 --to 2026-07-27
gyxx scripts run shop_intelligence:runners/run_shop.py --date 2026-07-27
```
`run``backfill``scripts run` 默认 dry-run。`--execute` 才启动本地迁入脚本;
Task Scheduler 使用 `--scheduled`,按 Asia/Shanghai 当日执行。
## 数据与证据
- `var/runs/.../<run_id>/run.json`:步骤、尝试、退出码和 trace
- `var/state/ops/run-index/`:按 run_id/workflow/date/status 查询
- `var/state/ops/effects/`:生产 Sink 幂等回执
- `var/state/ops/outbox/messages/`:外部写入消息
- `var/logs/``var/data/evidence/`:日志和截图证据
- `var/state/profiles/`:浏览器 Profile
- `var/state/locks/`:工作流、Profile 和共享资源锁
effect 为 `ambiguous` 或长时间 `in_progress` 时,先人工核对外部系统;不要删除回执
或强制重跑。手工脚本执行同样会产生统一 run journal 和 effect 记录。
+17
View File
@@ -0,0 +1,17 @@
# 回滚手册
## 单任务回滚
1. 记录失败的新任务名、workflow ID、run_id 和业务日期。
2. 禁用对应 `\GYXX\<workflow-id>`,保留任务定义和运行证据。
3. 重新启用原计划任务,核对触发时间、账号和旧工作目录仍与基线一致。
4. 检查 `state/ops/effects``in_progress``ambiguous` 必须先做外部对账。
5. 检查 outbox;已 `sent` 的消息不得重发,`failed` 只能以同一幂等键 replay。
6. 记录回滚结果和恢复时间,保留新旧日志。
## 原则
- 一次只切换或回滚一个 workflow。
- 旧任务只禁用/启用,不删除;旧项目在全部观察期完成前保持只读可回滚。
- 不删除新系统数据、run journal、effect receipt 或 outbox 消息。
- 未完成对账时,不允许用直接运行脚本绕过 effect ledger。