// Hermes Server 入口 — 接收 EternalAI 同步请求，创建 profile，生成二维码

require('dotenv').config();
const express = require('express');
const cors = require('cors');
const path = require('path');

const { ensureDirs } = require('./src/lib/profile-store');

const app = express();
const PORT = process.env.PORT || 3002;

// 确保数据目录存在
ensureDirs();

// 中间件
// P2 修复：CORS 限制为已知来源
const allowedOrigins = process.env.ALLOWED_ORIGINS;
if (allowedOrigins) {
  app.use(cors({ origin: allowedOrigins.split(',').map((o) => o.trim()) }));
} else {
  // 非生产环境默认允许所有来源，生产环境需配置 ALLOWED_ORIGINS
  app.use(cors());
}
app.use(express.json({ limit: '1mb' }));
app.use(express.urlencoded({ extended: true, limit: '1mb' }));

// P1 修复：trust proxy 仅信任 loopback（Nginx 反向代理场景）
// 生产环境应配置为具体代理 IP，如 app.set('trust proxy', '10.0.0.1')
app.set('trust proxy', 'loopback');

// 路由
app.use('/api', require('./src/routes/health'));
app.use('/api', require('./src/routes/sync'));
app.use('/api/profiles', require('./src/routes/profiles'));
app.use('/api/bind', require('./src/routes/bind'));

// 二维码图片静态服务
const QRCODES_DIR = path.join(__dirname, 'data', 'qrcodes');
app.use('/api/qrcodes', express.static(QRCODES_DIR, {
  setHeaders: (res) => {
    res.type('image/png');
    res.set('Cache-Control', 'public, max-age=86400');
  },
}));

// 根路径 — 简单信息页
app.get('/', (req, res) => {
  res.json({
    service: 'hermes-server',
    status: 'running',
    endpoints: {
      sync: 'POST /api/sync',
      profiles: 'GET /api/profiles',
      bind: 'GET /api/bind/:profileId',
      health: 'GET /api/health',
    },
  });
});

// 404
app.use((req, res) => {
  res.status(404).json({ error: '接口不存在' });
});

// 错误处理
app.use((err, req, res, next) => {
  console.error('[Hermes Server] 未捕获错误:', err);
  res.status(500).json({ error: '服务器内部错误' });
});

app.listen(PORT, '0.0.0.0', () => {
  console.log(`Hermes Server running on http://0.0.0.0:${PORT}`);
  console.log(`HERMES_BASE_URL: ${process.env.HERMES_BASE_URL || `http://localhost:${PORT}`}`);
  console.log(`ETERNALAI_BASE_URL: ${process.env.ETERNALAI_BASE_URL || '⚠️ 未配置'}`);
  console.log(`SYNC_SECRET: ${process.env.SYNC_SECRET ? '已配置' : '⚠️ 未配置'}`);
  console.log(`HERMES_ADMIN_TOKEN: ${process.env.HERMES_ADMIN_TOKEN ? '已配置' : '⚠️ 使用默认值'}`);
  console.log(`NODE_ENV: ${process.env.NODE_ENV || 'development'}`);
});
