// Profile 管理 API — 查看、下载 profile 文件（供 Hermes Agent 和管理员使用）

const express = require('express');
const { adminAuthMiddleware } = require('../middleware/admin-auth');
const { listProfiles, getProfileMeta, getProfileFile, deleteProfile } = require('../lib/profile-store');

const router = express.Router();

// 获取所有 profile 列表（需管理员认证）
router.get('/', adminAuthMiddleware, (req, res) => {
  try {
    const profiles = listProfiles();
    res.json({ profiles, total: profiles.length });
  } catch (err) {
    console.error('获取 profile 列表失败:', err);
    res.status(500).json({ error: '服务器错误' });
  }
});

// 获取 profile 详情（需管理员认证）
router.get('/:profileId', adminAuthMiddleware, (req, res) => {
  try {
    const meta = getProfileMeta(req.params.profileId);
    if (!meta) {
      return res.status(404).json({ error: 'Profile 不存在' });
    }
    res.json({ profile: meta });
  } catch (err) {
    console.error('获取 profile 详情失败:', err);
    res.status(500).json({ error: '服务器错误' });
  }
});

// 下载 SOUL.md（供 Hermes Agent 使用，限制本机访问）
router.get('/:profileId/SOUL.md', (req, res) => {
  try {
    // P2 修复：限制本机访问
    const clientIp = (req.socket.remoteAddress || '').replace(/^::ffff:/, '');
    if (clientIp !== '127.0.0.1' && clientIp !== '::1' && clientIp !== '') {
      return res.status(403).json({ error: '仅限本机访问' });
    }
    const content = getProfileFile(req.params.profileId, 'SOUL.md');
    if (content === null) {
      return res.status(404).json({ error: 'Profile 或 SOUL.md 不存在' });
    }
    // P3 修复：使用语义正确的 Content-Type
    res.type('text/markdown').send(content);
  } catch (err) {
    console.error('获取 SOUL.md 失败:', err);
    res.status(500).json({ error: '服务器错误' });
  }
});

// 下载 config.yaml（供 Hermes Agent 使用，限制本机访问）
router.get('/:profileId/config.yaml', (req, res) => {
  try {
    // P2 修复：限制本机访问
    const clientIp = (req.socket.remoteAddress || '').replace(/^::ffff:/, '');
    if (clientIp !== '127.0.0.1' && clientIp !== '::1' && clientIp !== '') {
      return res.status(403).json({ error: '仅限本机访问' });
    }
    const content = getProfileFile(req.params.profileId, 'config.yaml');
    if (content === null) {
      return res.status(404).json({ error: 'Profile 或 config.yaml 不存在' });
    }
    // P3 修复：使用语义正确的 Content-Type
    res.type('text/yaml').send(content);
  } catch (err) {
    console.error('获取 config.yaml 失败:', err);
    res.status(500).json({ error: '服务器错误' });
  }
});

// 删除 profile（需管理员认证）
router.delete('/:profileId', adminAuthMiddleware, (req, res) => {
  try {
    const deleted = deleteProfile(req.params.profileId);
    if (!deleted) {
      return res.status(404).json({ error: 'Profile 不存在' });
    }
    res.json({ message: 'Profile 已删除' });
  } catch (err) {
    console.error('删除 profile 失败:', err);
    res.status(500).json({ error: '服务器错误' });
  }
});

module.exports = router;
