/** * UI 皮肤部署引擎 · apply-skin.js * * 铸渊 · 壳-核分离架构 * 读取皮肤 JSON → 安全校验 → 生成覆盖 CSS → 部署到目标页面 * * 用法: node apply-skin.js * * 版权: 国作登字-2026-A-00037559 */ 'use strict'; const fs = require('fs'); const path = require('path'); // ─── 配置 ─── const SKINS_DIR = path.join(__dirname, 'skins'); const INBOX_DIR = path.join(SKINS_DIR, 'inbox'); const APPLIED_DIR = path.join(SKINS_DIR, 'applied'); const REJECTED_DIR = path.join(SKINS_DIR, 'rejected'); // 站点根目录(服务器部署路径) const SITE_ROOT = process.env.SITE_ROOT || path.join(__dirname, '..'); // 目标页面映射 const TARGET_MAP = { homepage: path.join(SITE_ROOT, 'homepage'), chat: path.join(SITE_ROOT, 'persona-studio', 'frontend'), dashboard: path.join(SITE_ROOT, 'dashboard'), login: path.join(SITE_ROOT, 'persona-studio', 'frontend') }; // ─── 安全校验 ─── const FORBIDDEN_PATTERNS = [ /