57 lines
2.1 KiB
YAML
57 lines
2.1 KiB
YAML
# ═══════════════════════════════════════════════
|
|
# 🔺 Sovereign: TCS-0002∞ | Root: SYS-GLW-0001
|
|
# 📜 Copyright: 国作登字-2026-A-00037559
|
|
# ═══════════════════════════════════════════════
|
|
# 🧠 Grid-DB 缓冲层批处理(铸渊核心大脑唤醒)
|
|
# 每天 21:30 CST 统一将 staging 数据写入 grid-db
|
|
# 也支持 repository_dispatch 手动紧急触发
|
|
|
|
name: "🧠 Grid-DB Buffer Flush"
|
|
|
|
on:
|
|
schedule:
|
|
- cron: '30 13 * * *' # 21:30 CST — 收集完成后 30 分钟
|
|
repository_dispatch:
|
|
types: [grid-db-flush] # 紧急情况可手动触发
|
|
workflow_dispatch: # 允许手动触发
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
flush:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: "🔍 Check staging"
|
|
id: check
|
|
run: |
|
|
if [ -z "$(find buffer/staging/ -name 'batch-*.json' 2>/dev/null)" ]; then
|
|
echo "empty=true" >> $GITHUB_OUTPUT
|
|
echo "📭 No batch files in staging, skipping flush"
|
|
else
|
|
echo "empty=false" >> $GITHUB_OUTPUT
|
|
echo "📬 Found batch files to flush"
|
|
find buffer/staging/ -name 'batch-*.json' | head -20
|
|
fi
|
|
|
|
- name: "🧠 Run flusher"
|
|
if: steps.check.outputs.empty == 'false'
|
|
run: node buffer/scripts/flusher.js
|
|
|
|
- name: "💾 Single commit to grid-db"
|
|
if: steps.check.outputs.empty == 'false'
|
|
run: |
|
|
git config user.name "铸渊 · Grid-DB Core"
|
|
git config user.email "zy-core@guanghu.system"
|
|
git add grid-db/ buffer/processed/ buffer/staging/
|
|
FLUSH_DATE=$(TZ='Asia/Shanghai' date '+%Y%m%d')
|
|
MSG_COUNT=$(find buffer/processed/ -name '*.json' 2>/dev/null | wc -l)
|
|
git diff --cached --quiet || git commit -m "[grid-db-flush] batch ${FLUSH_DATE} · ${MSG_COUNT} messages [skip ci]"
|
|
git push
|
|
|
|
- name: "📊 Quota report"
|
|
if: always()
|
|
run: node buffer/scripts/quota-calculator.js
|