130 lines
4.2 KiB
YAML
130 lines
4.2 KiB
YAML
# ━━━ 铸渊实时仪表盘更新 ━━━
|
||
# 每次系统执行后自动更新仪表盘数据
|
||
# Agent: AG-ZY-094 · update-dashboard.yml
|
||
# Parent: SYS-GLW-0001 · Owner: ICE-0002∞
|
||
|
||
name: 📊 实时仪表盘更新
|
||
|
||
on:
|
||
# 当其他关键工作流完成时触发
|
||
workflow_run:
|
||
workflows:
|
||
- "铸渊 · 每日自检"
|
||
- "🚀 铸渊 CD · 自动部署到 guanghulab.com"
|
||
- "🦅 天眼 · 每日巡检"
|
||
- "🦅 天眼 · 每周全量扫描"
|
||
- "📢 更新系统公告区"
|
||
- "铸渊 · 服务器巡逻"
|
||
- "🧬 铸渊 神经系统 · 每日汇总"
|
||
types: [completed]
|
||
|
||
# 每 6 小时定时更新
|
||
schedule:
|
||
- cron: '0 0 * * *' # 08:00 CST
|
||
- cron: '0 6 * * *' # 14:00 CST
|
||
- cron: '0 12 * * *' # 20:00 CST
|
||
- cron: '0 18 * * *' # 02:00 CST
|
||
|
||
# 手动触发
|
||
workflow_dispatch:
|
||
|
||
permissions:
|
||
contents: write
|
||
|
||
concurrency:
|
||
group: dashboard-update
|
||
cancel-in-progress: true
|
||
|
||
jobs:
|
||
update:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: 📥 Checkout
|
||
uses: actions/checkout@v4
|
||
with:
|
||
token: ${{ secrets.GITHUB_TOKEN }}
|
||
|
||
- name: 🟢 Setup Node.js
|
||
uses: actions/setup-node@v4
|
||
with:
|
||
node-version: '20'
|
||
|
||
- name: 📊 生成仪表盘数据
|
||
id: dashboard
|
||
run: node scripts/generate-dashboard-data.js
|
||
|
||
- name: 📋 同步数据到 GitHub Pages
|
||
run: |
|
||
# 复制最新 system-health.json 到 docs/dashboard/ 供实时仪表盘页面使用
|
||
cp data/system-health.json docs/dashboard/system-health.json
|
||
echo "✅ 数据已同步到 docs/dashboard/"
|
||
|
||
- name: 📤 提交更新
|
||
run: |
|
||
git config user.name "铸渊 (ZhuYuan Bot)"
|
||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||
git add data/system-health.json README.md docs/dashboard/system-health.json
|
||
if git diff --cached --quiet; then
|
||
echo "📋 无变更,跳过提交"
|
||
else
|
||
git commit -m "📊 实时仪表盘更新 $(date -u -d '+8 hours' '+%Y-%m-%d %H:%M') CST [skip ci]"
|
||
for i in 1 2 3; do
|
||
if git push; then
|
||
echo "✅ 仪表盘已更新"
|
||
break
|
||
fi
|
||
echo "⚠️ 推送失败(第 $i 次),重试..."
|
||
git pull --rebase origin main
|
||
if [ $i -eq 3 ]; then
|
||
echo "❌ 推送失败 3 次"
|
||
exit 1
|
||
fi
|
||
done
|
||
fi
|
||
|
||
# ━━━ 🧬 双端神经系统·自报告 ━━━
|
||
- name: "🧬 写入神经自报告"
|
||
if: always()
|
||
run: |
|
||
WORKFLOW_ID="dashboard-update"
|
||
BRAIN="AG-TY-01"
|
||
REPORT_DIR="data/neural-reports/dashboard"
|
||
TIMESTAMP=$(TZ=Asia/Shanghai date +%Y-%m-%d-%H%M)
|
||
STATUS="${{ job.status }}"
|
||
|
||
mkdir -p "$REPORT_DIR"
|
||
|
||
cat > "${REPORT_DIR}/${WORKFLOW_ID}-${TIMESTAMP}.json" << EOF
|
||
{
|
||
"workflow_id": "${WORKFLOW_ID}",
|
||
"run_id": "${{ github.run_id }}",
|
||
"timestamp": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
|
||
"status": "${STATUS}",
|
||
"brain": "${BRAIN}",
|
||
"event": "${{ github.event_name }}",
|
||
"branch": "${{ github.ref_name }}",
|
||
"commit": "${{ github.sha }}"
|
||
}
|
||
EOF
|
||
|
||
git config user.name "zhuyuan-bot"
|
||
git config user.email "zhuyuan@guanghulab.com"
|
||
git add "$REPORT_DIR/"
|
||
git diff --cached --quiet || \
|
||
git commit -m "🧬 ${WORKFLOW_ID} 自报告 · ${TIMESTAMP} [skip ci]"
|
||
git push || echo "⚠️ 自报告push失败(不阻断主流程)"
|
||
|
||
# ━━━ 📡 指令回执·自动同步 ━━━
|
||
- name: "📡 同步回执到 Notion"
|
||
if: always()
|
||
env:
|
||
NOTION_API_KEY: ${{ secrets.NOTION_API_KEY }}
|
||
RECEIPT_DB_ID: ${{ secrets.RECEIPT_DB_ID }}
|
||
run: |
|
||
node scripts/neural/write-receipt-to-notion.js \
|
||
--instruction-id "${{ github.event.inputs.instruction_id || 'AUTO' }}" \
|
||
--status "${{ job.status }}" \
|
||
--workflow "dashboard-update" \
|
||
--summary "dashboard-update 自动执行" \
|
||
--related-agent "AG-TY-01"
|