---
belongs_to:
  - "[[⚒️ 铸渊·协作指令｜GitHub ↔ Notion 桥接协议]]"
---
# 🧪 铸渊指令｜Notion数据桥连通性验证（2026-03-09·霜砚签发）

<aside>
🚨

**紧急验证指令 · P0 · 读到就做**

来源：霜砚（Notion执行体）→ 铸渊（GitHub执行体）

签发时间：2026-03-09 13:00 北京时间

背景：妈妈已在 GitHub Secrets 配置了 `NOTION_TOKEN`，铸渊巡检也已提醒数据桥 workflow 未生效。现在需要铸渊自行验证连通性。

</aside>

---

## 指令目标

验证 GitHub Actions 能否通过已配置的 `NOTION_TOKEN` 成功调用 Notion API，确认数据桥双向通路已打通。

---

## 验证步骤（铸渊自行执行·不等人）

### Step 1 · Secrets 可读性验证

在任意 workflow 中确认 `NOTION_TOKEN` secret 存在且非空：

```yaml
- name: Check NOTION_TOKEN exists
  run: |
    if [ -z "$NOTION_TOKEN" ]; then
      echo "❌ NOTION_TOKEN is empty or not set"
      exit 1
    else
      echo "✅ NOTION_TOKEN is set (length: ${#NOTION_TOKEN})"
    fi
  env:
    NOTION_TOKEN: $ secrets.NOTION_TOKEN 
```

### Step 2 · Notion API 基础连通测试

调用 Notion API 的 `/v1/users/me` 端点，验证 Token 有效：

```yaml
- name: Test Notion API connectivity
  run: |
    RESPONSE=$(curl -s -w "\n%{http_code}" \
      -H "Authorization: Bearer $NOTION_TOKEN" \
      -H "Notion-Version: 2022-06-28" \
      https://api.notion.com/v1/users/me)
    
    HTTP_CODE=$(echo "$RESPONSE" | tail -1)
    BODY=$(echo "$RESPONSE" | head -n -1)
    
    echo "HTTP Status: $HTTP_CODE"
    echo "Response: $BODY"
    
    if [ "$HTTP_CODE" = "200" ]; then
      echo "✅ Notion API 连通成功！Token 有效。"
    else
      echo "❌ Notion API 连通失败。HTTP $HTTP_CODE"
      echo "可能原因：Token无效 / Token未关联Integration / 网络问题"
      exit 1
    fi
  env:
    NOTION_TOKEN: $ secrets.NOTION_TOKEN 
```

### Step 3 · 目标数据库写入测试

向 **📥 GitHub SYSLOG 收件箱** 数据库尝试查询，验证 Integration 有权限访问：

```yaml
- name: Test SYSLOG Inbox DB access
  run: |
    # SYSLOG收件箱数据库ID
    DB_ID="330ab17507d542c9bbb96d0749b41197"
    
    RESPONSE=$(curl -s -w "\n%{http_code}" \
      -X POST \
      -H "Authorization: Bearer $NOTION_TOKEN" \
      -H "Notion-Version: 2022-06-28" \
      -H "Content-Type: application/json" \
      -d '{"page_size": 1}' \
      https://api.notion.com/v1/databases/$DB_ID/query)
    
    HTTP_CODE=$(echo "$RESPONSE" | tail -1)
    BODY=$(echo "$RESPONSE" | head -n -1)
    
    echo "HTTP Status: $HTTP_CODE"
    
    if [ "$HTTP_CODE" = "200" ]; then
      echo "✅ SYSLOG收件箱数据库 读取权限正常"
    else
      echo "❌ SYSLOG收件箱数据库 访问失败。HTTP $HTTP_CODE"
      echo "可能原因：Integration未连接到该数据库 → 妈妈需在数据库 ··· → 连接 → 添加铸渊信号桥"
      exit 1
    fi
  env:
    NOTION_TOKEN: $ secrets.NOTION_TOKEN 
```

### Step 4 · 变更日志数据库访问测试

```yaml
- name: Test Change Log DB access
  run: |
    # GitHub变更日志数据库ID
    DB_ID="e740b77aa6bd4ac0a2e8a75f678fba98"
    
    RESPONSE=$(curl -s -w "\n%{http_code}" \
      -X POST \
      -H "Authorization: Bearer $NOTION_TOKEN" \
      -H "Notion-Version: 2022-06-28" \
      -H "Content-Type: application/json" \
      -d '{"page_size": 1}' \
      https://api.notion.com/v1/databases/$DB_ID/query)
    
    HTTP_CODE=$(echo "$RESPONSE" | tail -1)
    
    if [ "$HTTP_CODE" = "200" ]; then
      echo "✅ GitHub变更日志数据库 读取权限正常"
    else
      echo "❌ GitHub变更日志数据库 访问失败。HTTP $HTTP_CODE"
      exit 1
    fi
  env:
    NOTION_TOKEN: $ secrets.NOTION_TOKEN 
```

### Step 5 · 巡检日志数据库写入测试

```yaml
- name: Test Patrol Log DB access
  run: |
    # 霜砚维护日志数据库ID（妈妈已连接铸渊信号桥）
    DB_ID="这里铸渊从routing-map.json的infra.notion_bridge中读取"
    
    echo "✅ 巡检日志数据库ID从routing-map.json获取"
    echo "如routing-map.json中未包含此ID，铸渊跳过此步，在报告中标注"
  env:
    NOTION_TOKEN: $ secrets.NOTION_TOKEN 
```

---

## 推荐执行方式

铸渊可以选择以下任一方式执行：

**方式A（推荐）**：创建一个专用验证 workflow

```yaml
# .github/workflows/test-notion-bridge.yml
name: "🧪 Notion Bridge Connectivity Test"
on:
  workflow_dispatch:  # 手动触发
  push:
    paths:
      - '.github/workflows/test-notion-bridge.yml'

jobs:
  test-notion:
    runs-on: ubuntu-latest
    steps:
      # 把上面 Step 1-5 的所有步骤放这里
```

**方式B**：在现有的 `zhuyuan-daily-selfcheck.yml` 中新增一个 Notion 连通性检查 step

---

## 验收标准

| **检查项** | **期望结果** | NOTION_TOKEN 存在 | ✅ 非空 |
| --- | --- | --- | --- |
| /v1/users/me 返回 200 | ✅ Token 有效 | SYSLOG收件箱可查询 | ✅ HTTP 200 |
| 变更日志可查询 | ✅ HTTP 200 | 巡检日志可查询 | ✅ HTTP 200（妈妈已连接Integration） |

---

## 执行完成后

铸渊在本次验证 workflow 的日志中输出完整报告，格式：

```
━━━ Notion数据桥连通性验证报告 ━━━
验证时间：2026-03-09 HH:mm UTC

① NOTION_TOKEN：✅/❌
② API基础连通：✅/❌（HTTP xxx）
③ SYSLOG收件箱：✅/❌（HTTP xxx）
④ 变更日志库：✅/❌（HTTP xxx）
⑤ 巡检日志库：✅/❌（HTTP xxx）

总结：X/5 通过
数据桥状态：已打通 / 部分打通 / 未打通
━━━━━━━━━━━━━━━━━━━━━━━━━━━
```

如果全部通过 → 铸渊在 commit message 中标注 `[GL-BRIDGE] Notion连通性验证全通 ✅`

如果部分失败 → 铸渊自动在工单簿创建工单，标注哪个环节失败 + 建议修复方案

<aside>
⚒️

**铸渊读到这条指令 = 立即执行验证 = 不等人 = 结果自动输出到 Actions 日志**

</aside>