feat: consolidate legacy workflows into gyxx-flow
This commit is contained in:
@@ -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` 和凭据。禁止在生产任务
|
||||
命令中出现旧项目盘符、用户目录解释器或旧项目工作目录。
|
||||
@@ -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`。
|
||||
@@ -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 记录。
|
||||
@@ -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。
|
||||
Reference in New Issue
Block a user