/**
 * ═══════════════════════════════════════════════════════════
 * ZY-MIRROR-AGENT · 镜鉴 Agent · 数据源配置
 * ═══════════════════════════════════════════════════════════
 *
 * 第三方书库数据源注册表
 * 当前接入：番茄小说（FQWeb API） + 七猫小说（7mao-downloader API）
 *
 * 守护: 铸渊 · ICE-GL-ZY001
 * 版权: 国作登字-2026-A-00037559
 * ═══════════════════════════════════════════════════════════
 */

'use strict';

const path = require('path');

/**
 * 镜面 Agent 全局配置
 */
const MIRROR_CONFIG = {
  // Agent 身份
  agent_id: 'ZY-MIRROR-AGENT',
  agent_name: '镜鉴',
  version: '1.0.0',

  // 定时执行间隔（毫秒）— 默认每 6 小时扫描一次
  scan_interval_ms: 6 * 60 * 60 * 1000,

  // 数据目录
  data_dir: process.env.ZY_MIRROR_DATA_DIR || path.join(__dirname, 'data'),
  snapshot_dir: path.join(process.env.ZY_MIRROR_DATA_DIR || path.join(__dirname, 'data'), 'snapshots'),
  ticket_dir: path.join(process.env.ZY_MIRROR_DATA_DIR || path.join(__dirname, 'data'), 'tickets'),
  memory_dir: path.join(process.env.ZY_MIRROR_DATA_DIR || path.join(__dirname, 'data'), 'memory'),

  // LLM 评估模型配置
  llm: {
    // 优先使用 DeepSeek（国内部署友好），回退到 Claude
    primary: {
      provider: 'deepseek',
      model: 'deepseek-chat',
      api_url: process.env.ZY_DEEPSEEK_API_URL || 'https://api.deepseek.com/v1/chat/completions',
      api_key: process.env.ZY_DEEPSEEK_API_KEY || ''
    },
    fallback: {
      provider: 'claude',
      model: 'claude-sonnet-4-20250514',
      api_url: process.env.ZY_CLAUDE_API_URL || 'https://api.anthropic.com/v1/messages',
      api_key: process.env.ZY_CLAUDE_API_KEY || ''
    }
  },

  // 工单编号前缀
  ticket_prefix: 'MIRROR',

  // 边界：Agent 只能修改这些路径
  allowed_paths: [
    '/opt/zhiku/data/index/',
    '/opt/zhiku/data/books/',
    '/opt/zhiku/data/mirror-agent/'
  ],

  // 边界：Agent 绝不能触碰的路径
  forbidden_paths: [
    '/opt/zhiku/server/',
    '/etc/nginx/',
    '/root/',
    '~/.ssh/'
  ]
};

/**
 * 第三方书库数据源注册表
 *
 * 每个数据源定义：
 *   id          — 唯一标识
 *   name        — 中文名称
 *   type        — 数据源类型 (api / github_release / static)
 *   search_url  — 搜索接口 URL 模板（{query} 和 {page} 为占位符）
 *   detail_url  — 书籍详情接口 URL 模板（{book_id} 为占位符）
 *   version_url — 版本/更新检查 URL（用于 diff 快照）
 *   github_repo — GitHub 仓库地址（用于跟踪上游更新）
 *   enabled     — 是否启用
 *   notes       — 说明
 */
const DATA_SOURCES = [
  {
    id: 'fanqie-fqweb',
    name: '番茄小说 · FQWeb',
    type: 'api',
    search_url: '{base_url}/search?query={query}&page={page}',
    detail_url: '{base_url}/info?bookId={book_id}',
    chapter_url: '{base_url}/content?bookId={book_id}&itemId={chapter_id}',
    catalog_url: '{base_url}/catalog?bookId={book_id}',
    version_url: '{base_url}/version',
    base_url: process.env.ZY_FANQIE_API_URL || 'http://127.0.0.1:9999',
    github_repo: 'https://github.com/benefit77/FanQieWeb',
    deploy_notes: 'Kotlin JAR 服务 · 默认端口 9999 · 需 JDK 17+',
    enabled: true,
    priority: 2,
    notes: '番茄小说外部Web服务 · 有内置直连(fanqie-direct)作为fallback'
  },
  {
    id: 'fanqie-direct',
    name: '番茄小说 · 内置直连',
    type: 'builtin',
    base_url: 'https://fanqienovel.com',
    deploy_notes: '内置Node.js适配器 · 直连番茄Web API · 无需外部服务',
    enabled: true,
    priority: 1,
    notes: '番茄小说内置直连适配器 · 搜索/目录/章节/下载全链路'
  },
  {
    id: 'fanqie-api-server',
    name: '番茄小说 · API Server (Flask)',
    type: 'api',
    search_url: '{base_url}/search?keyword={query}',
    detail_url: '{base_url}/book/{book_id}',
    chapter_url: '{base_url}/chapter/{chapter_id}',
    catalog_url: '{base_url}/catalog/{book_id}',
    base_url: process.env.ZY_FANQIE_FLASK_URL || 'http://127.0.0.1:5000',
    github_repo: 'https://github.com/huijian222/fanqienovel-API-server',
    deploy_notes: 'Python Flask · pip install · 默认端口 5000',
    enabled: false,
    priority: 3,
    notes: '番茄小说 Flask API 服务 · 备用源'
  },
  {
    id: 'qimao-direct',
    name: '七猫小说 · 内置直连',
    type: 'builtin',
    base_url: 'https://www.qimao.com',
    deploy_notes: '内置Node.js适配器 · 直连七猫Web API/网页抓取 · 无需外部服务 · 支持AES解密',
    enabled: true,
    priority: 1,
    notes: '七猫小说内置直连适配器 · 多策略(API+网页抓取) · 铸渊哨兵自动维护'
  },
  {
    id: 'qimao-downloader',
    name: '七猫小说 · SwiftCat Downloader',
    type: 'api',
    search_url: '{base_url}/search?keyword={query}',
    detail_url: '{base_url}/book/{book_id}',
    chapter_url: '{base_url}/chapter/{book_id}/{chapter_id}',
    catalog_url: '{base_url}/catalog/{book_id}',
    base_url: process.env.ZY_QIMAO_API_URL || 'http://127.0.0.1:7700',
    github_repo: 'https://github.com/shing-yu/7mao-novel-downloader',
    github_repo_new: 'https://github.com/shing-yu/swiftcat-downloader',
    deploy_notes: 'Python · pip install · 或 Flutter 桌面版',
    enabled: false,
    priority: 3,
    notes: '七猫小说外部下载器 · 已有内置直连(qimao-direct)替代 · 禁用'
  },
  {
    id: 'biquge-direct',
    name: '笔趣阁聚合 · 内置直连',
    type: 'builtin',
    base_url: 'https://69shu.buzs.cc',
    deploy_notes: '内置Node.js适配器 · 聚合多个免费小说站 · 海外IP友好',
    enabled: true,
    priority: 1,
    notes: '笔趣阁/69书吧聚合直连 · 海外IP可达 · 免费小说源'
  }
];

/**
 * 获取所有启用的数据源
 */
function getEnabledSources() {
  return DATA_SOURCES.filter(s => s.enabled).sort((a, b) => a.priority - b.priority);
}

/**
 * 根据 ID 获取数据源
 */
function getSourceById(id) {
  return DATA_SOURCES.find(s => s.id === id) || null;
}

module.exports = {
  MIRROR_CONFIG,
  DATA_SOURCES,
  getEnabledSources,
  getSourceById
};
