--- belongs_to: - "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]" --- # ⚡ 铸渊指令|Execution Status 同步写入协议 v1.0(2026-03-14·霜砚签发) --- ## 一、总体架构 ``` GitHub 仓库(铸渊) ↓ Daily Maintenance (UTC 02:00 / 北京 10:00) ↓ 读取 brain/ 目录最新数据 ↓ 通过 Notion API 写入 Notion Execution Status 数据库(主脑侧) ↓ 巡检引擎定时验证(复用现有 Pipeline) ↓ 异常 → 自动创建工单 ``` **铸渊职责**:在 `daily-maintenance.yml` 或 `execution-sync.yml` 中新增 job,读 `brain/` 数据,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 模板 铸渊直接复制,替换动态值: ```json { "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 ```yaml 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 已配置 ---