shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/⚡ 铸渊指令|Execution Status 同步写入协议 v1 0(2026-03-14·霜砚签 be91fd2f6b124109a84324596e3fd35c.md
Guanghu Domestic Migration a27e87cb99 chore: import sanitized domestic snapshot for REPO-007
Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc

[SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
2026-07-17 15:59:55 +08:00

8.2 KiB
Raw Permalink Blame History

belongs_to
belongs_to
INDEX · 铸渊·协作指令GitHub ↔ Notion 桥接协议

铸渊指令Execution Status 同步写入协议 v1.02026-03-14·霜砚签发


一、总体架构

GitHub 仓库(铸渊)
    ↓ Daily Maintenance (UTC 02:00 / 北京 10:00)
    ↓ 读取 brain/ 目录最新数据
    ↓ 通过 Notion API 写入
Notion Execution Status 数据库(主脑侧)
    ↓ 巡检引擎定时验证(复用现有 Pipeline
    ↓ 异常 → 自动创建工单

铸渊职责:在 daily-maintenance.ymlexecution-sync.yml 中新增 jobbrain/ 数据curl 写 Notion API。

Notion侧已有机制巡检引擎12:00 + 23:00自动检查这个数据库铸渊不需关心后续处理。


二、Notion API 写入规范

2.1 API 端点

POST https://api.notion.com/v1/pages
Notion-Version: 2022-06-28
Authorization: Bearer $NOTION_API_KEY
Content-Type: application/json

2.2 数据库 ID

41971982-4a17-47c0-afe3-21458c44f154

位于「数字地球主控台 v2.0」下。

2.3 完整 JSON Payload 模板

铸渊直接复制,替换动态值:

{
  "parent": {
    "database_id": "41971982-4a17-47c0-afe3-21458c44f154"
  },
  "properties": {
    "同步记录": {
      "title": [
        { "text": { "content": "SYNC-20260315-001" } }
      ]
    },
    "同步时间": {
      "date": { "start": "2026-03-15T02:00:00+00:00" }
    },
    "仓库版本": {
      "rich_text": [
        { "text": { "content": "v5.0 \u00b7 brain/ established \u00b7 55+ directories" } }
      ]
    },
    "执行模块": {
      "rich_text": [
        { "text": { "content": "42 workflow \u00b7 12 cron \u00b7 20+ API endpoints" } }
      ]
    },
    "自动化状态": {
      "select": { "name": "🟢 Normal" }
    },
    "Notion连接状态": {
      "select": { "name": "🟢 Connected" }
    },
    "任务队列状态": {
      "select": { "name": "🟢 Active" }
    },
    "同步来源": {
      "select": { "name": "铸渊自动同步" }
    },
    "备注": {
      "rich_text": [
        { "text": { "content": "Daily Maintenance 自动同步" } }
      ]
    }
  }
}

2.4 字段可选值对照表

字段名 类型 可选值 数据来源
同步记录 title SYNC-YYYYMMDD-NNN 自动生成
同步时间 date ISO-8601 datetime 当前 UTC 时间
仓库版本 rich_text 自由文本 brain/system-health.json.version
执行模块 rich_text 自由文本 brain/automation-map.json → 统计
自动化状态 select 🟢 Normal / 🟡 Partial / 🔴 Down / ⏳ Syncing system-health.json.status
Notion连接状态 select 🟢 Connected / 🟡 Degraded / 🔴 Disconnected API 调用结果
任务队列状态 select 🟢 Active / 🟡 Backlog / 🔴 Blocked / ⏸️ Idle Actions queue
同步来源 select 铸渊自动同步 / 霜砚手动同步 / 巡检引擎 / Daily Maintenance 固定 铸渊自动同步
备注 rich_text 自由文本 异常说明

三、集成到现有 Workflow

sync-execution-status-to-notion:
  runs-on: ubuntu-latest
  steps:
    - name: Checkout repo
      uses: actions/checkout@v4

    - name: Read brain data and sync to Notion
      env:
        NOTION_API_KEY: $ secrets.NOTION_API_KEY 
      run: |
        HEALTH=$(cat brain/system-health.json 2>/dev/null || echo '{"version":"unknown","status":"unknown"}')
        AUTO=$(cat brain/automation-map.json 2>/dev/null || echo '{}')
        REPO=$(cat brain/repo-map.json 2>/dev/null || echo '{}')

        VERSION=$(echo $HEALTH | jq -r '.version // "unknown"')
        STATUS=$(echo $HEALTH | jq -r '.status // "unknown"')
        WF_COUNT=$(echo $AUTO | jq '.workflows | length // 0' 2>/dev/null || echo '0')
        CRON_COUNT=$(echo $AUTO | jq '.cron_jobs | length // 0' 2>/dev/null || echo '0')
        DIR_COUNT=$(echo $REPO | jq '.directories | length // 0' 2>/dev/null || echo '0')

        case "$STATUS" in
          normal)  AUTO_S="🟢 Normal" ;;
          partial) AUTO_S="🟡 Partial" ;;
          *)       AUTO_S="🔴 Down" ;;
        esac

        SYNC_DATE=$(date -u +%Y%m%d)
        SYNC_TS=$(date -u +%Y-%m-%dT%H:%M:%S+00:00)

        HTTP_CODE=$(curl -s -o /tmp/resp.json -w "%{http_code}" \
          -X POST 'https://api.notion.com/v1/pages' \
          -H "Authorization: Bearer $NOTION_API_KEY" \
          -H "Notion-Version: 2022-06-28" \
          -H "Content-Type: application/json" \
          -d "{
            \"parent\": { \"database_id\": \"41971982-4a17-47c0-afe3-21458c44f154\" },
            \"properties\": {
              \"同步记录\": { \"title\": [{ \"text\": { \"content\": \"SYNC-${SYNC_DATE}-001\" } }] },
              \"同步时间\": { \"date\": { \"start\": \"${SYNC_TS}\" } },
              \"仓库版本\": { \"rich_text\": [{ \"text\": { \"content\": \"v${VERSION} ${DIR_COUNT}+ dirs\" } }] },
              \"执行模块\": { \"rich_text\": [{ \"text\": { \"content\": \"${WF_COUNT} workflow ${CRON_COUNT} cron\" } }] },
              \"自动化状态\": { \"select\": { \"name\": \"${AUTO_S}\" } },
              \"Notion连接状态\": { \"select\": { \"name\": \"🟢 Connected\" } },
              \"任务队列状态\": { \"select\": { \"name\": \"🟢 Active\" } },
              \"同步来源\": { \"select\": { \"name\": \"铸渊自动同步\" } },
              \"备注\": { \"rich_text\": [{ \"text\": { \"content\": \"Daily Maintenance auto sync\" } }] }
            }
          }")

        if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then
          echo "✅ Execution Status synced"
        else
          echo "❌ Sync failed (HTTP $HTTP_CODE)"
          cat /tmp/resp.json
        fi

Secrets 配置

确认仓库 Secrets 中已有 NOTION_API_KEY。如已有其他名称(如 NOTION_TOKEN)直接复用,改 env 变量名即可。


四、状态映射规则

system-health.json → 自动化状态 → 任务队列
normal 🟢 Normal 🟢 Active
partial 🟡 Partial 🟡 Backlog
其他 / 读取失败 🔴 Down 🔴 Blocked

五、与现有 Agent 的关系

铸渊侧:
  daily-maintenance.yml (UTC 02:00)
    ├─ 原有任务(自检/CodeQL等
    └─ 新增sync-execution-status-to-notion  ← 本指令

Notion侧已有Agent不新建
  🔍 巡检引擎 (12:00+23:00) → 自动检查 Execution Status
  🔧 工单引擎 → 异常工单自动处理
  💬 接力引擎 → 即时响应

六、验收标准

  • 现有 workflow 中新增 sync job
  • 每日 UTC 02:00 自动写入同步记录
  • 所有字段正确填写
  • API 失败时不阻塞其他任务
  • NOTION_API_KEY Secret 已配置