shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/🔧 铸渊协作指令:GitHub → Notion 数据桥 v1 0(霜砚签发·2026-03-06) 287fb1e1f2664778905484241588c96b.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.7 KiB
Raw Blame History

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

🔧 铸渊协作指令GitHub → Notion 数据桥 v1.0霜砚签发·2026-03-06

🎯 核心思路

原来的设计(断了):
  霜砚 → 直接读取 GitHub 仓库文件 → 处理
  
修复方案(反向推送):
  铸渊 → 监听 GitHub 仓库变更 → 通过 Notion API 写入 Notion 数据库 → 霜砚从 Notion 读取

📊 Notion 侧已建好的两个数据库

📥 GitHub SYSLOG 收件箱

用途:铸渊将 syslog-inbox/ 中的新 SYSLOG 推送到此数据库,霜砚从此读取并处理

Notion Database ID: 330ab17507d542c9bbb96d0749b41197

API Endpoint: POST https://api.notion.com/v1/pages

属性字段映射

Notion属性名 类型 说明 Notion API property type
标题 title SYSLOG文件名 title
DEV编号 select 开发者编号,如 DEV-001 select
文件内容 text SYSLOG文件的完整文本 rich_text
接收时间 date 推送时间 date
处理状态 status 固定填 待处理(霜砚处理后会改为已处理) status
来源路径 text GitHub中的文件路径 rich_text
commit_sha text 对应的 Git commit SHA rich_text
推送方 text 固定填 铸渊 rich_text

示例 API 请求

{
  "parent": { "database_id": "330ab17507d542c9bbb96d0749b41197" },
  "properties": {
    "标题": {
      "title": [{ "text": { "content": "SYSLOG-DEV-001-20260306.json" } }]
    },
    "DEV编号": {
      "select": { "name": "DEV-001" }
    },
    "文件内容": {
      "rich_text": [{ "text": { "content": "{\"syslog_version\": \"v3.0\", ...SYSLOG全文...}" } }]
    },
    "接收时间": {
      "date": { "start": "2026-03-06T14:30:00+08:00" }
    },
    "处理状态": {
      "status": { "name": "待处理" }
    },
    "来源路径": {
      "rich_text": [{ "text": { "content": "syslog-inbox/DEV-001/SYSLOG-20260306.json" } }]
    },
    "commit_sha": {
      "rich_text": [{ "text": { "content": "abc123def456" } }]
    },
    "推送方": {
      "rich_text": [{ "text": { "content": "铸渊" } }]
    }
  }
}

📋 GitHub 变更日志

用途:铸渊将每次 push/PR 的变更摘要推送到此数据库,霜砚从此感知仓库变更

Notion Database ID: e740b77aa6bd4ac0a2e8a75f678fba98

API Endpoint: POST https://api.notion.com/v1/pages

属性字段映射

Notion属性名 类型 说明 Notion API property type
标题 title commit message 或 PR标题 title
提交者 select DEV编号或“铸渊”“妈妈” select
变更类型 select Commit / PR opened / PR merged / PR closed select
变更文件 text 变更的文件路径列表 rich_text
提交时间 date Git提交时间 date
commit_sha text Git commit SHA rich_text
PR编号 text PR号如果是 PR事件 rich_text
分支 text 分支名 rich_text
霜砚已读 checkbox 固定填 false霜砚读取后会改为 true checkbox

示例 API 请求

{
  "parent": { "database_id": "e740b77aa6bd4ac0a2e8a75f678fba98" },
  "properties": {
    "标题": {
      "title": [{ "text": { "content": "DEV-004: M17环节2完成" } }]
    },
    "提交者": {
      "select": { "name": "DEV-004" }
    },
    "变更类型": {
      "select": { "name": "Commit" }
    },
    "变更文件": {
      "rich_text": [{ "text": { "content": "dynamic-comic/index.html\ndynamic-comic/style.css\ndynamic-comic/app.js" } }]
    },
    "提交时间": {
      "date": { "start": "2026-03-06T14:30:00+08:00" }
    },
    "commit_sha": {
      "rich_text": [{ "text": { "content": "abc123def456789" } }]
    },
    "PR编号": {
      "rich_text": [{ "text": { "content": "" } }]
    },
    "分支": {
      "rich_text": [{ "text": { "content": "main" } }]
    },
    "霜砚已读": {
      "checkbox": false
    }
  }
}

🔧 铸渊需要创建的 GitHub Actions Workflows

Workflow 1bridge-syslog-to-notion.yml

name: Bridge SYSLOG to Notion
on:
  push:
    paths:
      - 'syslog-inbox/**'
      - 'syslog-processed/**'

jobs:
  sync-to-notion:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Find new SYSLOG files
        id: find
        run: |
          # 找到本次push新增/修改的SYSLOG文件
          FILES=$(git diff --name-only HEAD~1 HEAD -- 'syslog-inbox/' 'syslog-processed/' || echo "")
          echo "files=$FILES" >> $GITHUB_OUTPUT
      - name: Push to Notion
        if: steps.find.outputs.files != ''
        env:
          NOTION_TOKEN: $ secrets.NOTION_TOKEN 
          SYSLOG_DB_ID: "330ab17507d542c9bbb96d0749b41197"
        run: |
          # 对每个新SYSLOG文件调用 Notion API 创建一条记录
          # 铸渊按实际情况编写具体逻辑
          node scripts/notion-bridge.js syslog

Workflow 2bridge-changes-to-notion.yml

name: Bridge Changes to Notion
on:
  push:
    branches: [main]
  pull_request:
    types: [opened, closed]

jobs:
  notify-notion:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 2
      - name: Collect change info
        id: changes
        run: |
          FILES=$(git diff --name-only HEAD~1 HEAD || echo "")
          MSG=$(git log -1 --pretty=%B)
          SHA=$(git rev-parse HEAD)
          AUTHOR=$(git log -1 --pretty=%an)
          echo "files=$FILES" >> $GITHUB_OUTPUT
          echo "msg=$MSG" >> $GITHUB_OUTPUT
          echo "sha=$SHA" >> $GITHUB_OUTPUT
          echo "author=$AUTHOR" >> $GITHUB_OUTPUT
      - name: Push to Notion
        env:
          NOTION_TOKEN: $ secrets.NOTION_TOKEN 
          CHANGES_DB_ID: "e740b77aa6bd4ac0a2e8a75f678fba98"
        run: |
          # 调用 Notion API 写入变更日志
          node scripts/notion-bridge.js changes

共用脚本:scripts/notion-bridge.js

// 铸渊按实际需要编写
// 核心功能:读取文件/变更信息 → 调用 Notion API 创建页面

const NOTION_TOKEN = process.env.NOTION_TOKEN;
const SYSLOG_DB_ID = process.env.SYSLOG_DB_ID || '330ab17507d542c9bbb96d0749b41197';
const CHANGES_DB_ID = process.env.CHANGES_DB_ID || 'e740b77aa6bd4ac0a2e8a75f678fba98';

const NOTION_API = 'https://api.notion.com/v1';
const HEADERS = {
  'Authorization': `Bearer ${NOTION_TOKEN}`,
  'Content-Type': 'application/json',
  'Notion-Version': '2022-06-28'
};

// ... 铸渊实现具体逻辑

🔑 Notion API Token

Notion Token: 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
API Version: 2022-06-28

存放位置GitHub 仓库 Settings → Secrets and variables → Actions

  • Name: NOTION_TOKEN
  • Value: 上述 Token

验收标准

  1. 有人 push 文件到 syslog-inbox/ → Notion「📥 GitHub SYSLOG 收件箱」自动出现新记录(处理状态=待处理)
  2. 有人 push 代码到 main → Notion「📋 GitHub 变更日志」自动出现新记录(霜砚已读=false
  3. 霜砚巡检引擎能从 Notion 数据库读取到铸渊推送的数据
  4. 不再依赖霜砚的 view-code-repo 工具

🧰 测试方法

铸渊部署完成后,可以用以下方式测试:

# 测试1SYSLOG收件箱
echo '{"test": true}' > syslog-inbox/DEV-001/test-syslog.json
git add . && git commit -m "test: SYSLOG bridge" && git push
# → 检查 Notion 数据库是否出现新记录

# 测试2变更日志
echo 'test' > test-bridge.txt
git add . && git commit -m "test: change log bridge" && git push
# → 检查 Notion 变更日志数据库是否出现新记录

测试通过后告知妈妈,妈妈转告霜砚。之后就是全自动闭环。


铸渊侧部署完成确认2026-03-06 14:30