Use AgentStage scheduled updater

This commit is contained in:
liuji
2026-10-10 14:55:04 +08:00
parent c80aeefcf9
commit a184be0187
5 changed files with 34 additions and 47 deletions
+13 -8
View File
@@ -1,14 +1,22 @@
# TTSHOP 同步脚本
`sync.py` 使用 Python 标准库和 `requests` 读取公开 Google Sheets 工作簿,并把所有工作表合并成一个 UTF-8 HTML 表格,固定写入 `data/merged.html`。工作表名称和顺序来自 XLSX 导出,单元格使用公开 gviz 接口返回的显示值。
TTSHOP 的代码仓库地址为 `git.ops.roasbloom.site`,报告目录地址为 `ops.roasbloom.site/<仓库名>/`;本仓库对应的报告目录为 `ops.roasbloom.site/ttshop/`。
`sync.py` 使用 Python 标准库和 `requests` 读取公开 Google Sheets 工作簿,并把所有工作表合并成一个 UTF-8 HTML 表格,固定写入 `data/merged.html`。生成的 `data/merged.html` 供 Google Sheets 的 `IMPORTHTML` 使用,不改成 `index.html` 或 `data.json`。工作表名称和顺序来自 XLSX 导出,单元格使用公开 gviz 接口返回的显示值。
合并规则:每张表第一行是标题;列按首次出现顺序取并集;源表已有的 `LinkName` 会改名为 `LinkName_Source`、`LinkName_Source_2` 等并保留;脚本最后追加生成的 `LinkName` 列。HTML 文本会进行转义。内容没有变化时不产生 Git 提交,变化时只提交 `data/merged.html` 并推送到 `main`。
## AgentStage 自动更新
AgentStage 服务器会自动执行仓库根目录的 `update.sh`,不使用 Gitea Actions workflow。`update.sh` 会进入脚本所在目录并使用 `python3` 执行 `sync.py`;脚本失败时会以非零状态退出。
`schedule.conf` 是一个表示间隔小时数的数字:默认值为 `1`(每小时一次),本仓库设置为 `24`,表示每天刷新一次。服务器执行更新后,报告可从 `ops.roasbloom.site/<仓库名>/` 访问。
## 本地运行
```sh
python -m pip install -r requirements.txt
python sync.py
python3 -m pip install -r requirements.txt
./update.sh
```
脚本默认使用固定工作簿 ID `1DPbdVsX3SG_kgDXs2j34mDAgplRSfcAWKKG9yqalFmw`、仓库 `ttshop`、分支 `main` 和输出路径 `data/merged.html`。本地运行需要当前目录是该仓库,并且 Git 已配置可推送的 `origin`;不要把凭据写入 remote URL。
@@ -16,10 +24,7 @@ python sync.py
## 环境变量
- `GIT_CREDENTIAL_SECRET`:可选的 Git 密码/token。脚本通过临时 `GIT_ASKPASS` 使用,不写入 URL、日志或提交文件。
- `GITEA_OWNER`:Git askpass 的用户名提示值;workflow 从仓库变量注入。
- `GITEA_BASE_URL`:Gitea 地址,作为 workflow 配置保留;实际推送使用 checkout 提供的 `origin`。
- `GITEA_OWNER`:Git askpass 的用户名提示值。
- `SYNC_FAILURE_WEBHOOK_URL`:可选的失败通知 URL。失败时最多发送一次简短通知,通知失败不会覆盖原始异常。
## Gitea Actions
`.gitea/workflows/sync.yml` 每天执行一次 `0 19 * * *`(按 UTC 解释时为 Asia/Shanghai 次日 03:00),也支持手动触发。workflow 只安装 `requirements.txt` 中的 `requests` 并运行 `python sync.py`,不依赖包 CLI、测试 extras、runner、scheduler 或报告系统。
AgentStage 运行不需要 Gitea Actions、Google OAuth 或 Google 服务账号。请勿把 token、密码或其他密钥写入脚本、仓库 URL、提交文件或日志;本地密钥和临时文件应被 `.gitignore` 规则忽略,避免进入提交。