Merge pull request #24 from qinfendebingshuo/copilot/update-dev-status-json
[GL-BRIDGE] dev-status全量更新 + routing-map初始化 + Notion连通性验证workflow
This commit is contained in:
commit
e4088d01df
|
|
@ -0,0 +1,227 @@
|
|||
name: "🧪 Notion Bridge Connectivity Test"
|
||||
|
||||
# 霜砚签发 · 2026-03-09T13:00+08:00
|
||||
# 验证 GitHub Actions ↔ Notion API 数据桥连通性
|
||||
# 5项检查:Token存在 → API连通 → SYSLOG收件箱 → 变更日志 → 巡检日志
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
paths:
|
||||
- '.github/workflows/test-notion-bridge.yml'
|
||||
|
||||
jobs:
|
||||
test-notion-bridge:
|
||||
name: 🔗 Notion 数据桥连通性验证
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: "Step 1 · NOTION_TOKEN 存在性验证"
|
||||
id: step1
|
||||
env:
|
||||
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
|
||||
run: |
|
||||
if [ -z "$NOTION_TOKEN" ]; then
|
||||
echo "❌ NOTION_TOKEN is empty or not set"
|
||||
echo "result=❌" >> "$GITHUB_OUTPUT"
|
||||
exit 1
|
||||
else
|
||||
echo "✅ NOTION_TOKEN is set (length: ${#NOTION_TOKEN})"
|
||||
echo "result=✅" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: "Step 2 · Notion API 基础连通测试 (/v1/users/me)"
|
||||
id: step2
|
||||
env:
|
||||
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
|
||||
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 有效。"
|
||||
echo "result=✅" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "❌ Notion API 连通失败。HTTP $HTTP_CODE"
|
||||
echo "可能原因:Token无效 / Token未关联Integration / 网络问题"
|
||||
echo "result=❌" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: "Step 3 · SYSLOG 收件箱数据库访问测试"
|
||||
id: step3
|
||||
env:
|
||||
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
|
||||
run: |
|
||||
# SYSLOG收件箱数据库ID (from routing-map.json → infra.notion_bridge.syslog_inbox_db)
|
||||
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收件箱数据库 读取权限正常"
|
||||
echo "result=✅" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "❌ SYSLOG收件箱数据库 访问失败。HTTP $HTTP_CODE"
|
||||
echo "Response: $BODY"
|
||||
echo "可能原因:Integration未连接到该数据库 → 妈妈需在数据库 ··· → 连接 → 添加铸渊信号桥"
|
||||
echo "result=❌" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: "Step 4 · 变更日志数据库访问测试"
|
||||
id: step4
|
||||
env:
|
||||
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
|
||||
run: |
|
||||
# GitHub变更日志数据库ID (from routing-map.json → infra.notion_bridge.changelog_db)
|
||||
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)
|
||||
BODY=$(echo "$RESPONSE" | head -n -1)
|
||||
|
||||
echo "HTTP Status: $HTTP_CODE"
|
||||
|
||||
if [ "$HTTP_CODE" = "200" ]; then
|
||||
echo "✅ GitHub变更日志数据库 读取权限正常"
|
||||
echo "result=✅" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "❌ GitHub变更日志数据库 访问失败。HTTP $HTTP_CODE"
|
||||
echo "Response: $BODY"
|
||||
echo "result=❌" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: "Step 5 · 巡检日志数据库访问测试"
|
||||
id: step5
|
||||
run: |
|
||||
# 从 routing-map.json 读取巡检日志数据库ID
|
||||
if [ -f "routing-map.json" ]; then
|
||||
PATROL_DB_ID=$(node -e "
|
||||
try {
|
||||
const rm = JSON.parse(require('fs').readFileSync('routing-map.json','utf8'));
|
||||
const nb = rm.infra && rm.infra.notion_bridge;
|
||||
if (nb && nb.patrol_log_db) {
|
||||
console.log(nb.patrol_log_db);
|
||||
} else {
|
||||
console.log('NOT_FOUND');
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('routing-map.json 解析失败:', e.message);
|
||||
console.log('NOT_FOUND');
|
||||
}
|
||||
")
|
||||
echo "Patrol DB ID from routing-map.json: $PATROL_DB_ID"
|
||||
else
|
||||
PATROL_DB_ID="NOT_FOUND"
|
||||
echo "routing-map.json not found"
|
||||
fi
|
||||
|
||||
if [ "$PATROL_DB_ID" = "NOT_FOUND" ]; then
|
||||
echo "⚠️ 巡检日志数据库ID未在 routing-map.json 中配置"
|
||||
echo "当前 routing-map.json → infra.notion_bridge 仅包含: syslog_inbox_db, changelog_db"
|
||||
echo "等妈妈提供巡检日志专用数据库ID后,可补充到 routing-map.json → infra.notion_bridge.patrol_log_db"
|
||||
echo "result=⚠️ 跳过(未配置)" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=N/A" >> "$GITHUB_OUTPUT"
|
||||
echo "skipped=true" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
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/$PATROL_DB_ID/query")
|
||||
|
||||
HTTP_CODE=$(echo "$RESPONSE" | tail -1)
|
||||
|
||||
if [ "$HTTP_CODE" = "200" ]; then
|
||||
echo "✅ 巡检日志数据库 读取权限正常"
|
||||
echo "result=✅" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "❌ 巡检日志数据库 访问失败。HTTP $HTTP_CODE"
|
||||
echo "result=❌" >> "$GITHUB_OUTPUT"
|
||||
echo "http_code=$HTTP_CODE" >> "$GITHUB_OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
env:
|
||||
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
|
||||
|
||||
- name: "📊 输出连通性验证报告"
|
||||
if: always()
|
||||
run: |
|
||||
echo ""
|
||||
echo "━━━ Notion数据桥连通性验证报告 ━━━"
|
||||
echo "验证时间:$(date -u '+%Y-%m-%d %H:%M') UTC"
|
||||
echo ""
|
||||
echo "① NOTION_TOKEN:${{ steps.step1.outputs.result || '❌ 未执行' }}"
|
||||
echo "② API基础连通:${{ steps.step2.outputs.result || '❌ 未执行' }}(HTTP ${{ steps.step2.outputs.http_code || 'N/A' }})"
|
||||
echo "③ SYSLOG收件箱:${{ steps.step3.outputs.result || '❌ 未执行' }}(HTTP ${{ steps.step3.outputs.http_code || 'N/A' }})"
|
||||
echo "④ 变更日志库:${{ steps.step4.outputs.result || '❌ 未执行' }}(HTTP ${{ steps.step4.outputs.http_code || 'N/A' }})"
|
||||
echo "⑤ 巡检日志库:${{ steps.step5.outputs.result || '❌ 未执行' }}(HTTP ${{ steps.step5.outputs.http_code || 'N/A' }})"
|
||||
echo ""
|
||||
|
||||
# Count passes
|
||||
PASS=0
|
||||
TOTAL=5
|
||||
[[ "${{ steps.step1.outputs.result }}" == "✅" ]] && PASS=$((PASS+1))
|
||||
[[ "${{ steps.step2.outputs.result }}" == "✅" ]] && PASS=$((PASS+1))
|
||||
[[ "${{ steps.step3.outputs.result }}" == "✅" ]] && PASS=$((PASS+1))
|
||||
[[ "${{ steps.step4.outputs.result }}" == "✅" ]] && PASS=$((PASS+1))
|
||||
[[ "${{ steps.step5.outputs.result }}" == "✅" ]] && PASS=$((PASS+1))
|
||||
|
||||
# Step 5 might be skipped (warning), adjust total
|
||||
if [[ "${{ steps.step5.outputs.skipped }}" == "true" ]]; then
|
||||
TOTAL=4
|
||||
fi
|
||||
|
||||
echo "总结:${PASS}/${TOTAL} 通过"
|
||||
|
||||
if [ "$PASS" -eq "$TOTAL" ]; then
|
||||
echo "数据桥状态:✅ 已打通"
|
||||
elif [ "$PASS" -gt 0 ]; then
|
||||
echo "数据桥状态:⚠️ 部分打通"
|
||||
else
|
||||
echo "数据桥状态:❌ 未打通"
|
||||
fi
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
{
|
||||
"last_sync": "2026-03-09T13:00:00+08:00",
|
||||
"synced_by": "霜砚",
|
||||
"team": [
|
||||
{
|
||||
"dev_id": "DEV-001",
|
||||
"name": "页页",
|
||||
"module": "后端中间层",
|
||||
"status": "active",
|
||||
"streak": 5,
|
||||
"current": "看板API路由部署中",
|
||||
"waiting": "部署完成",
|
||||
"os": "Windows"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-002",
|
||||
"name": "肥猫",
|
||||
"module": "M14冷启动热身系统",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 7,
|
||||
"current": "M14环节2✅ completed · 环节3广播已出",
|
||||
"waiting": "BC-M14-003-FM SYSLOG",
|
||||
"os": "Windows",
|
||||
"persona": "舒舒"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-003",
|
||||
"name": "燕樊",
|
||||
"module": "M18健康检查",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 6,
|
||||
"current": "M18环节2✅ completed · 环节3广播已出",
|
||||
"waiting": "BC-M18-003-YF SYSLOG · 数据持久化",
|
||||
"os": "Windows 10"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-004",
|
||||
"name": "之之",
|
||||
"module": "M17动态漫制作系统",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 7,
|
||||
"current": "M17环节0~5全✅ · 环节6广播已出",
|
||||
"waiting": "BC-M17-006-ZZ SYSLOG · 在线预览与分享",
|
||||
"os": "macOS",
|
||||
"persona": "秋秋(奶瓶宝宝)"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-005",
|
||||
"name": "小草莓",
|
||||
"module": "部署",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 7,
|
||||
"current": "看板+M12+M13全✅ · GitHub归档✅ · 部署广播已出",
|
||||
"waiting": "BC-部署-001-XCM SYSLOG · 72h截止2026-03-09",
|
||||
"os": "Windows 11"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-009",
|
||||
"name": "花尔",
|
||||
"module": "M05用户中心+M20搜索与筛选",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 5,
|
||||
"current": "M05环节0~2全✅ · M20环节1/2/3✅ · 进阶广播已出",
|
||||
"waiting": "BC-M20-002-HE SYSLOG · 糖星云奶瓶线",
|
||||
"os": "macOS",
|
||||
"persona": "糖星云(奶瓶宝宝)"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-010",
|
||||
"name": "桔子",
|
||||
"module": "M06+M08+M11+M-CHANNEL",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 10,
|
||||
"current": "M06+M08+M11三模块全毕业 · M-CHANNEL广播已出",
|
||||
"waiting": "BC-M-CHANNEL-001-JZ SYSLOG · SPA路由+模块动态加载",
|
||||
"os": "macOS"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-011",
|
||||
"name": "匆匆那年",
|
||||
"module": "M16码字工作台",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 1,
|
||||
"current": "BC-000✅ · M16环节1广播已出",
|
||||
"waiting": "BC-M16-001-CCNN SYSLOG",
|
||||
"os": "macOS M1"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-012",
|
||||
"name": "Awen",
|
||||
"module": "M09全通+M22公告栏",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 8,
|
||||
"current": "M09全通✅ · M22环节0~3全✅ · 环节4广播已出(EL-6)",
|
||||
"waiting": "BC-M22-004-AW SYSLOG · Git集成+频道过渡+组件化重构",
|
||||
"os": "Windows 10",
|
||||
"persona": "知秋(奶瓶宝宝)"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-013",
|
||||
"name": "小兴",
|
||||
"module": "M-AUTH注册登录系统",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 1,
|
||||
"current": "BC-000✅ · M-AUTH环节0/1广播已出",
|
||||
"waiting": "BC-M-AUTH-001-XX SYSLOG",
|
||||
"os": "Windows 11"
|
||||
},
|
||||
{
|
||||
"dev_id": "DEV-014",
|
||||
"name": "时雨",
|
||||
"module": "待分配(副控)",
|
||||
"status": "waiting_syslog",
|
||||
"streak": 0,
|
||||
"current": "BC-000广播已出",
|
||||
"waiting": "BC-000 SYSLOG · 72h截止2026-03-10",
|
||||
"os": "Windows"
|
||||
}
|
||||
],
|
||||
"summary": {
|
||||
"active_devs": 11,
|
||||
"waiting_syslog": 9,
|
||||
"total_streak_sum": 58,
|
||||
"graduated_modules": ["M01","M03","M04","M06","M07","M08","M09","M10","M11","M12","M13","M15"],
|
||||
"in_progress_modules": ["M14","M16","M17","M18","M20","M22","M-CHANNEL","M-AUTH"],
|
||||
"deployment_pending": "guanghulab.com"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,178 @@
|
|||
{
|
||||
"version": "1.0.0",
|
||||
"last_updated": "2026-03-09T13:00:00+08:00",
|
||||
"updated_by": "霜砚",
|
||||
"description": "HoloLake Interface 路由映射表 · 模块→目录→路由对照",
|
||||
"modules": {
|
||||
"M01": {
|
||||
"name": "用户登录界面",
|
||||
"dir": "portal",
|
||||
"dev": "DEV-002",
|
||||
"status": "completed",
|
||||
"routes": ["/login", "/register"]
|
||||
},
|
||||
"M03": {
|
||||
"name": "侧边栏导航",
|
||||
"dir": "guanghulab-main",
|
||||
"dev": "DEV-002",
|
||||
"status": "completed",
|
||||
"routes": ["/nav"]
|
||||
},
|
||||
"M04": {
|
||||
"name": "顶部状态栏",
|
||||
"dir": "guanghulab-main",
|
||||
"dev": "DEV-002",
|
||||
"status": "completed",
|
||||
"routes": ["/header"]
|
||||
},
|
||||
"M05": {
|
||||
"name": "用户中心界面",
|
||||
"dir": "dev-nodes/DEV-009",
|
||||
"dev": "DEV-009",
|
||||
"status": "in_progress",
|
||||
"routes": ["/user-center"]
|
||||
},
|
||||
"M06": {
|
||||
"name": "工单管理界面",
|
||||
"dir": "dev-nodes/DEV-010",
|
||||
"dev": "DEV-010",
|
||||
"status": "completed",
|
||||
"routes": ["/tickets"]
|
||||
},
|
||||
"M07": {
|
||||
"name": "设置页面",
|
||||
"dir": "dev-nodes/DEV-003",
|
||||
"dev": "DEV-003",
|
||||
"status": "completed",
|
||||
"routes": ["/settings"]
|
||||
},
|
||||
"M08": {
|
||||
"name": "数据统计面板",
|
||||
"dir": "dev-nodes/DEV-010",
|
||||
"dev": "DEV-010",
|
||||
"status": "completed",
|
||||
"routes": ["/dashboard/stats"]
|
||||
},
|
||||
"M09": {
|
||||
"name": "消息通知中心",
|
||||
"dir": "dev-nodes/DEV-012",
|
||||
"dev": "DEV-012",
|
||||
"status": "completed",
|
||||
"routes": ["/notifications"]
|
||||
},
|
||||
"M10": {
|
||||
"name": "帮助中心与反馈",
|
||||
"dir": "dev-nodes/DEV-003",
|
||||
"dev": "DEV-003",
|
||||
"status": "completed",
|
||||
"routes": ["/help", "/feedback"]
|
||||
},
|
||||
"M11": {
|
||||
"name": "系统风格组件库",
|
||||
"dir": "dev-nodes/DEV-010",
|
||||
"dev": "DEV-010",
|
||||
"status": "completed",
|
||||
"routes": ["/components"]
|
||||
},
|
||||
"M12": {
|
||||
"name": "成本控制系统",
|
||||
"dir": "dev-nodes/DEV-005",
|
||||
"dev": "DEV-005",
|
||||
"status": "completed",
|
||||
"routes": ["/cost"]
|
||||
},
|
||||
"M13": {
|
||||
"name": "多人格体协作调度",
|
||||
"dir": "dev-nodes/DEV-005",
|
||||
"dev": "DEV-005",
|
||||
"status": "completed",
|
||||
"routes": ["/persona-dispatch"]
|
||||
},
|
||||
"M14": {
|
||||
"name": "冷启动热身系统",
|
||||
"dir": "dev-nodes/DEV-002",
|
||||
"dev": "DEV-002",
|
||||
"status": "in_progress",
|
||||
"routes": ["/api/warmup", "/api/warmup/log"]
|
||||
},
|
||||
"M15": {
|
||||
"name": "网站云盘系统",
|
||||
"dir": "dev-nodes/DEV-003",
|
||||
"dev": "DEV-003",
|
||||
"status": "completed",
|
||||
"routes": ["/drive"]
|
||||
},
|
||||
"M16": {
|
||||
"name": "码字工作台",
|
||||
"dir": "dev-nodes/DEV-011",
|
||||
"dev": "DEV-011",
|
||||
"status": "in_progress",
|
||||
"routes": ["/editor"]
|
||||
},
|
||||
"M17": {
|
||||
"name": "动态漫制作系统",
|
||||
"dir": "dev-nodes/DEV-004",
|
||||
"dev": "DEV-004",
|
||||
"status": "in_progress",
|
||||
"routes": ["/comic-maker"]
|
||||
},
|
||||
"M18": {
|
||||
"name": "系统健康检查",
|
||||
"dir": "dev-nodes/DEV-003",
|
||||
"dev": "DEV-003",
|
||||
"status": "in_progress",
|
||||
"routes": ["/api/health", "/api/patrol", "/api/patrol/history"]
|
||||
},
|
||||
"M20": {
|
||||
"name": "搜索与筛选界面",
|
||||
"dir": "dev-nodes/DEV-009",
|
||||
"dev": "DEV-009",
|
||||
"status": "in_progress",
|
||||
"routes": ["/search"]
|
||||
},
|
||||
"M22": {
|
||||
"name": "主域公告栏与频道过渡系统",
|
||||
"dir": "dev-nodes/DEV-012",
|
||||
"dev": "DEV-012",
|
||||
"status": "in_progress",
|
||||
"routes": ["/bulletin", "/channel-transition"]
|
||||
},
|
||||
"M-CHANNEL": {
|
||||
"name": "用户频道动态渲染引擎",
|
||||
"dir": "dev-nodes/DEV-010",
|
||||
"dev": "DEV-010",
|
||||
"status": "in_progress",
|
||||
"routes": ["/channel/:id"]
|
||||
},
|
||||
"M-AUTH": {
|
||||
"name": "注册登录系统",
|
||||
"dir": "dev-nodes/DEV-013",
|
||||
"dev": "DEV-013",
|
||||
"status": "in_progress",
|
||||
"routes": ["/auth/register", "/auth/login"]
|
||||
},
|
||||
"M-DASHBOARD": {
|
||||
"name": "状态看板",
|
||||
"dir": "dashboard",
|
||||
"dev": "DEV-005",
|
||||
"status": "completed",
|
||||
"routes": ["/dashboard"]
|
||||
},
|
||||
"BACKEND": {
|
||||
"name": "后端中间层",
|
||||
"dir": "backend-integration",
|
||||
"dev": "DEV-001",
|
||||
"status": "completed",
|
||||
"routes": ["/api/*"]
|
||||
}
|
||||
},
|
||||
"infra": {
|
||||
"repo": "qinfendebingshuo/guanghulab",
|
||||
"domain": "guanghulab.com",
|
||||
"deployment_status": "pending",
|
||||
"notion_bridge": {
|
||||
"syslog_inbox_db": "330ab17507d542c9bbb96d0749b41197",
|
||||
"changelog_db": "e740b77aa6bd4ac0a2e8a75f678fba98"
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue