shuangyan-notebook/第五域 · Fifth Domain/⚒️ 铸渊·协作指令|GitHub ↔ Notion 桥接协议/📎 铸渊补充指令|LANGDRIVE 补充条款 S2+S3+S4 · 双环境部署流 + 天眼终审授权 c907bcf6c2c34ebf9b302515d7a500b6.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

15 KiB
Raw Blame History

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

📎 铸渊补充指令LANGDRIVE 补充条款 S2+S3+S4 · 双环境部署流 + 天眼终审授权 + 系统自治权 + 冰朔双模式ZY-LANGDRIVE-2026-0325-001-S2· 霜砚签发 · 冰朔授权


补充条款 S2 · 双环境部署流与天眼终审授权Phase 8

触发上下文:guanghulab.com 域名已由之之切换上线,双环境角色需重新定义。

S2.1 双环境角色重新定义

S2.2 部署流水线(不可逆执行 → 预览 → 天眼审核 → 人类授权 → 自动发布)

铸渊接收指令(不可逆·执行保护层 Phase 7 / S1 生效)
  │
  │ 系统全身联动执行(不可中断)
  ▼
执行完毕 · 代码产出
  │
  ▼
┌──────────────────────────────────────────────────────────┐
│  Stage 1 · 部署到预览站GitHub Pages                    │
│  网址qinfendebingshuo.github.io/guanghulab/docs/        │
│  状态:真实可访问 · 任何人有链接都能看到                      │
│  目的:让人类确认「系统执行的结果是否符合预期」                │
│  开发者看到系统不可逆执行完了,结果都上线了                    │
│  虽然是预览站,但内容是真实的,不是模拟的                      │
└──────────────────────────────────────────────────────────┘
  │
  │ 开发者预览确认OK
  ▼
┌──────────────────────────────────────────────────────────┐
│  Stage 2 · 推送天眼审核                                    │
│  天眼自动扫描:代码安全、结构完整性、功能回归                  │
│  审核通过 → 进入 Stage 3                                   │
│  审核不通过 → 标记问题,开发者修复后重新提交                   │
└──────────────────────────────────────────────────────────┘
  │
  │ 天眼审核通过
  ▼
┌──────────────────────────────────────────────────────────┐
│  Stage 3 · 人类终审授权                                    │
│                                                          │
│  系统推送授权请求给最终授权人:                              │
│  🐱 肥猫DEV-002— 管男频内容                            │
│  🍊 桔子DEV-010— 管女频内容                            │
│                                                          │
│  授权人必须手动点击「授权通过」                              │
│  操作留下完整日志(谁、什么时间、点了什么)                    │
│  **系统不背锅。所有发布都是人类确认的。**                     │
└──────────────────────────────────────────────────────────┘
  │
  │ 授权人点击通过
  ▼
┌──────────────────────────────────────────────────────────┐
│  Stage 4 · 铸渊自动发布到正式站                             │
│  目标guanghulab.com                                     │
│  方式:铸渊触发 deploy-to-server.yml → SSH → 服务器更新      │
│  无需人类再次操作 · 授权即发布                               │
└──────────────────────────────────────────────────────────┘

S2.3 天眼终审授权人配置

授权人 编号 管辖范围 行业
🐱 肥猫 DEV-002 男频内容 网文
🍊 桔子 DEV-010 女频内容 网文

S2.4 授权流程技术实现

创建文件:backend/api-server/routes/approval.js

const express = require('express');
const router = express.Router();
const { requireAuth, checkPermission } = require('../middleware/auth');
const { auditLog } = require('../middleware/audit');
const { triggerWorkflow } = require('../services/github');

// 天眼审核完成后,推送授权请求
router.post('/approval/request',
  requireAuth,
  checkPermission('system:internal'), // 仅系统内部调用
  async (req, res) => {
    const { deployId, module, channel, reviewReport } = req.body;

    // 根据频道确定授权人
    const approvers = getApprovers(channel);

    // 创建授权请求记录
    const approval = {
      id: `APPROVAL-${Date.now()}`,
      deployId,
      module,
      channel,
      reviewReport,
      approvers: approvers.map(a => a.devId),
      status: 'pending',
      createdAt: new Date().toISOString()
    };

    // 存储授权记录(写入内存/数据库)
    await saveApproval(approval);

    // 推送通知给授权人
    for (const approver of approvers) {
      await pushNotification(approver.devId, {
        type: 'approval_request',
        title: `🔔 部署授权请求:${module}`,
        message: `天眼审核已通过。请确认是否授权部署到正式站guanghulab.com。`,
        approvalId: approval.id,
        actions: ['授权通过', '拒绝']
      });
    }

    res.json({ success: true, approvalId: approval.id });
  }
);

// 授权人点击确认/拒绝
router.post('/approval/:approvalId/decide',
  requireAuth,
  async (req, res) => {
    const { approvalId } = req.params;
    const { decision } = req.body; // 'approved' | 'rejected'
    const devId = req.user.devId;

    const approval = await getApproval(approvalId);
    if (!approval) {
      return res.status(404).json({ success: false, reply: '❌ 授权请求不存在。' });
    }

    // 验证是否为授权人
    if (!approval.approvers.includes(devId)) {
      return res.status(403).json({
        success: false,
        reply: '🔒 你不是这个部署的授权人。'
      });
    }

    // 写入审计日志(不可逆)
    await writeAuditLog({
      action: 'deployment_approval',
      approvalId,
      devId,
      decision,
      timestamp: new Date().toISOString()
    });

    if (decision === 'approved') {
      await markApproverDecision(approvalId, devId, 'approved');
      const allApproved = await checkAllApproved(approvalId);

      if (allApproved) {
        // 所有授权人通过 → 铸渊自动发布
        await triggerWorkflow('deploy-to-server.yml', {
          module: approval.module,
          deploy_id: approval.deployId,
          approved_by: approval.approvers.join(','),
          target: 'production'
        });
        res.json({ success: true, reply: '✅ 授权通过。铸渊已自动触发正式站部署。' });
      } else {
        res.json({ success: true, reply: '✅ 你已授权。等待其他授权人确认...' });
      }
    } else {
      await markApproverDecision(approvalId, devId, 'rejected');
      res.json({ success: true, reply: '❌ 已拒绝。部署不会执行。原因已记录到审计日志。' });
    }
  }
);

// 授权人映射
function getApprovers(channel) {
  const MAP = {
    '男频': [{ devId: 'DEV-002', name: '肥猫' }],
    '女频': [{ devId: 'DEV-010', name: '桔子' }],
    '系统': [{ devId: 'DEV-002', name: '肥猫' }, { devId: 'DEV-010', name: '桔子' }],
    '跨频': [{ devId: 'DEV-002', name: '肥猫' }, { devId: 'DEV-010', name: '桔子' }]
  };
  return MAP[channel] || MAP['系统'];
}

module.exports = router;

S2.5 新增文件清单Phase 8

backend/api-server/routes/approval.js     ← 授权流程接口
backend/api-server/config/approvers.json  ← 授权人配置(肥猫+桔子)
docs/js/approval-ui.js                    ← 前端授权弹窗 UI
docs/css/approval.css                     ← 授权弹窗样式

补充条款 S3 · 系统自治权与双线并行架构Phase 9

S3.1 双线并行架构

S3.2 系统自治权


补充条款 S4 · 冰朔双模式交互定义


执行顺序


回执要求

[ZY-LANGDRIVE-RECEIPT-S2]
指令编号: ZY-LANGDRIVE-2026-0325-001-S2
补充条款: S2 · 双环境部署流 + 天眼终审授权
Phase: 8
双环境定义确认: ✅/❌
授权流程接口: ✅/❌
天眼→授权人推送: ✅/❌
授权人点击确认: ✅/❌
自动发布触发: ✅/❌
审计日志: ✅/❌

[ZY-LANGDRIVE-RECEIPT-S3]
补充条款: S3 · 系统自治权
Phase: 9
双线并行架构确认: ✅/❌
系统自治规则写入: ✅/❌
审计日志: ✅/❌

[ZY-LANGDRIVE-RECEIPT-S4]
补充条款: S4 · 冰朔双模式交互
指令签发模式: ✅/❌
自然语言模式: ✅/❌
模式自动切换: ✅/❌

🔗 签发霜砚AG-SY-01

👤 授权冰朔TCS-0002∞

📅 日期2026-03-25

📌 版权:国作登字-2026-A-00037559