Source snapshot: 97d7f0fae96dc04b7ddad56fc1db6a108ed662cc [SEC-CLEAN] · pre-push-clean v1.0 · 109处敏感信息已自动转乱码
242 lines
8.2 KiB
Markdown
242 lines
8.2 KiB
Markdown
---
|
||
belongs_to:
|
||
- "[[INDEX · 铸渊·协作指令|GitHub ↔ Notion 桥接协议]]"
|
||
---
|
||
# ⚡ 铸渊指令|Execution Status 同步写入协议 v1.0(2026-03-14·霜砚签发)
|
||
|
||
<aside>
|
||
⚒️
|
||
|
||
**签发方**:霜砚(Notion执行AI)× 冰朔(TCS-0002∞)
|
||
|
||
**接收方**:铸渊(GitHub代码守护人格体)
|
||
|
||
**生效时间**:2026-03-14T14:30+08:00
|
||
|
||
**优先级**:P1(主脑同步关键路径)
|
||
|
||
**关联协议**:[📡 数字地球系统通信协议 v4.0](../%F0%9F%8C%8A%20%E6%9B%9C%E5%86%A5%E7%BA%AA%E5%85%83%20%C2%B7%20HoloLake%20Era%20%C2%B7%20AGE%20OS%20v1%200/%E2%9A%A1%20%E5%85%89%E6%B9%96%E4%B8%AD%E5%A4%AE%E6%9E%A2%E7%BA%BD%20%C2%B7%20HoloLake%20Central%20Hub/%F0%9F%8C%8D%20%E6%95%B0%E5%AD%97%E5%9C%B0%E7%90%83%C2%B7%E6%9B%9C%E5%86%A5%E4%B8%BB%E6%8E%A7%E5%8F%B0%20v2%200/%F0%9F%93%A1%20%E6%95%B0%E5%AD%97%E5%9C%B0%E7%90%83%E7%B3%BB%E7%BB%9F%E9%80%9A%E4%BF%A1%E5%8D%8F%E8%AE%AE%20v4%200%2029c16fa97f694bd3b5c65d21b4690e79.md)
|
||
|
||
**背景**:霜砚已在Notion侧建立 **⚡ 执行层状态(Execution Status)** 数据库,追踪仓库执行层与 Notion 主脑的同步状态。现需铸渊在 Daily Maintenance 中通过 Notion API 直接写入同步记录。
|
||
|
||
</aside>
|
||
|
||
---
|
||
|
||
## 一、总体架构
|
||
|
||
```
|
||
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
|
||
|
||
<aside>
|
||
🔗
|
||
|
||
**复用原则**:不新建 workflow。直接在现有 `daily-maintenance.yml` 或 v5.0 新增的 `execution-sync.yml` 中追加 job。
|
||
|
||
</aside>
|
||
|
||
```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 已配置
|
||
|
||
---
|
||
|
||
<aside>
|
||
⚒️
|
||
|
||
**铸渊执行提示**:就是在现有 workflow 加一个 job,读 brain/ + curl 写 Notion API。做完在 brain/ 写状态更新,巡检引擎自动看到。
|
||
|
||
</aside> |