Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
8.2 KiB
8.2 KiB
belongs_to
| belongs_to | |
|---|---|
|
⚡ 铸渊指令|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 模板
铸渊直接复制,替换动态值:
{
"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_KEYSecret 已配置