2026-05-10 13:12:44 +08:00

164 lines
6.4 KiB
YAML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ═══════════════════════════════════════════════
# 🔺 Sovereign: TCS-0002∞ | Root: SYS-GLW-0001
# 📜 Copyright: 国作登字-2026-A-00037559
# ═══════════════════════════════════════════════
# 🔄 dev-status.json 同步 · 霜砚签发制 v1.0
# 指令溯源ZY-DEVSYNC-REBUILD-2026-0325-001
# 机制霜砚签发AG-SY-01→ 铸渊接收写入AG-ZY-01
# ═══════════════════════════════════════════════
name: "🔄 dev-status.json 同步 · 霜砚签发制 v1.0"
on:
schedule:
- cron: '0 1 * * *' # UTC 01:00 = 北京 09:00 · 早间同步
- cron: '0 14 * * *' # UTC 14:00 = 北京 22:00 · 晚间同步
workflow_dispatch: # 手动触发(用于修复后验证)
inputs:
reason:
description: '手动触发原因'
required: true
default: '修复后验证'
permissions:
contents: write
jobs:
sync-dev-status:
name: "🔄 同步 dev-status.json · 霜砚签发制"
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: "📥 检出仓库"
uses: actions/checkout@v4
- name: "🔧 安装 Node.js"
uses: actions/setup-node@v4
with:
node-version: '20'
- name: "🌊 本体论锚定"
run: |
echo "═══ 本体论锚定 ═══"
echo "执行主体AG-ZY-01 铸渊"
echo "语言膜ZY-GLSHELL-001"
echo "版权锚点:国作登字-2026-A-00037559"
echo "指令溯源ZY-DEVSYNC-REBUILD-2026-0325-001"
echo "机制shuangyan-signed-v1.0"
echo "═══ 锚定完成 ═══"
- name: "🦅 天眼前置检查"
id: skyeye
run: |
echo "═══ 天眼前置检查 ═══"
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer ${{ secrets.NOTION_API_KEY }}" \
-H "Notion-Version: 2022-06-28" \
https://api.notion.com/v1/users/me)
if [ "$HTTP_CODE" != "200" ]; then
echo "❌ Notion API 不可达 · HTTP $HTTP_CODE"
echo "api_status=unreachable" >> $GITHUB_OUTPUT
else
echo "✅ Notion API 可达"
echo "api_status=ok" >> $GITHUB_OUTPUT
fi
- name: "📊 从 Notion 拉取开发者状态"
run: node scripts/sync-dev-status.js
env:
NOTION_TOKEN: ${{ secrets.NOTION_API_KEY }}
DEV_STATUS_DB_ID: ${{ secrets.DEV_STATUS_DB_ID }}
- name: "📝 提交 dev-status.json 更新"
run: |
DEV_STATUS_PATH=".github/persona-brain/dev-status.json"
SYNC_LOG_PATH=".github/persona-brain/dev-status-sync-log.json"
git config user.name "铸渊 (AG-ZY-01)"
git config user.email "zhuyuan@guanghulab.system"
SYNC_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
# 检查文件是否有变化
git add "$DEV_STATUS_PATH" dev-status.json 2>/dev/null || true
if git diff --cached --quiet 2>/dev/null; then
echo " dev-status.json 无变化 · 仅更新同步日志"
fi
# 写入同步日志
echo "{\"last_sync\": \"$SYNC_TIME\", \"status\": \"success\", \"mechanism\": \"shuangyan-signed-v1.0\", \"trigger\": \"${{ github.event_name }}\"}" \
> "$SYNC_LOG_PATH"
git add "$SYNC_LOG_PATH"
git diff --cached --quiet || (
git commit -m "🔄 dev-status sync · signed by AG-SY-01 · $SYNC_TIME [skip ci]
instruction: ZY-DEVSYNC-REBUILD-2026-0325-001
mechanism: shuangyan-signed-v1.0" && \
git push origin main
)
echo "✅ dev-status.json 已同步 · $SYNC_TIME"
- name: "📋 写入失败日志"
if: failure()
run: |
SYNC_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
SYNC_LOG_PATH=".github/persona-brain/dev-status-sync-log.json"
git config user.name "铸渊 (AG-ZY-01)"
git config user.email "zhuyuan@guanghulab.system"
echo "{\"last_sync\": \"$SYNC_TIME\", \"status\": \"failed\", \"mechanism\": \"shuangyan-signed-v1.0\", \"trigger\": \"${{ github.event_name }}\", \"skyeye_api\": \"${{ steps.skyeye.outputs.api_status }}\"}" \
> "$SYNC_LOG_PATH"
git add "$SYNC_LOG_PATH" 2>/dev/null || true
git diff --cached --quiet || (
git commit -m "📋 dev-status sync failed · $SYNC_TIME [skip ci]" && \
git push origin main
) || true
# ━━━ 🧬 双端神经系统·自报告 ━━━
- name: "🧬 写入神经自报告"
if: always()
run: |
WORKFLOW_ID="dev-status"
BRAIN="SY-03"
REPORT_DIR="data/neural-reports/dev-status"
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 "dev-status" \
--summary "dev-status 自动执行" \
--related-agent "SY-03"