const express = require('express');
const { verifySyncToken } = require('../lib/sync-token');

const router = express.Router();

// Mock Hermes 同步端点 — 模拟 Hermes 接收同步请求并回调拉取文件
// 仅在非 production 环境注册
router.post('/sync', async (req, res) => {
  try {
    const { syncToken, filePullBaseUrl, roleId, profileName } = req.body;

    if (!syncToken || !filePullBaseUrl || !roleId) {
      return res.status(400).json({ error: '缺少必要参数' });
    }

    // 验证 sync_token
    const payload = await verifySyncToken(syncToken);
    if (!payload) {
      return res.status(401).json({ error: 'sync_token 无效或已过期' });
    }

    // 验证 roleId 匹配
    if (payload.roleId !== roleId) {
      return res.status(403).json({ error: 'roleId 与 sync_token 不匹配' });
    }

    // 回调拉取 SOUL.md
    const soulResponse = await fetch(`${filePullBaseUrl}/api/hermes/roles/${roleId}/SOUL.md`, {
      headers: { 'X-Sync-Token': syncToken },
    });
    if (!soulResponse.ok) {
      return res.status(500).json({ error: `拉取 SOUL.md 失败: ${soulResponse.status}` });
    }
    const soulMd = await soulResponse.text();

    // 回调拉取 config.yaml
    const configResponse = await fetch(`${filePullBaseUrl}/api/hermes/roles/${roleId}/config.yaml`, {
      headers: { 'X-Sync-Token': syncToken },
    });
    if (!configResponse.ok) {
      return res.status(500).json({ error: `拉取 config.yaml 失败: ${configResponse.status}` });
    }
    const configYaml = await configResponse.text();

    // 模拟创建 profile 和生成二维码
    console.log(`[Mock Hermes] 创建 profile: ${profileName}`);
    console.log(`[Mock Hermes] SOUL.md 长度: ${soulMd.length}`);
    console.log(`[Mock Hermes] config.yaml 长度: ${configYaml.length}`);

    const qrCodeUrl = `https://mock.hermes.local/qr/${roleId}`;
    const profileId = `mock-profile-${roleId}`;

    res.json({
      qrCodeUrl,
      profileId,
      message: 'Profile 创建成功（mock）',
    });
  } catch (err) {
    console.error('[Mock Hermes] 同步失败:', err);
    res.status(500).json({ error: err.message || '同步失败' });
  }
});

module.exports = router;
