mirror of
https://github.com/router-for-me/Cli-Proxy-API-Management-Center.git
synced 2026-02-03 03:10:50 +08:00
283 lines
6.5 KiB
JavaScript
283 lines
6.5 KiB
JavaScript
/**
|
||
* 常量配置文件
|
||
* 集中管理应用中的所有常量,避免魔法数字和硬编码字符串
|
||
*/
|
||
|
||
// ============================================================
|
||
// 时间相关常量(毫秒)
|
||
// ============================================================
|
||
|
||
/**
|
||
* 配置缓存过期时间(30秒)
|
||
* 用于减少服务器压力,避免频繁请求配置数据
|
||
*/
|
||
export const CACHE_EXPIRY_MS = 30 * 1000;
|
||
|
||
/**
|
||
* 通知显示持续时间(3秒)
|
||
* 成功/错误/信息提示框的自动消失时间
|
||
*/
|
||
export const NOTIFICATION_DURATION_MS = 3 * 1000;
|
||
|
||
/**
|
||
* 状态更新定时器间隔(1秒)
|
||
* 连接状态和系统信息的更新频率
|
||
*/
|
||
export const STATUS_UPDATE_INTERVAL_MS = 1 * 1000;
|
||
|
||
/**
|
||
* 日志刷新延迟(500毫秒)
|
||
* 日志自动刷新的去抖延迟
|
||
*/
|
||
export const LOG_REFRESH_DELAY_MS = 500;
|
||
|
||
/**
|
||
* OAuth 状态轮询间隔(2秒)
|
||
* 检查 OAuth 认证完成状态的轮询频率
|
||
*/
|
||
export const OAUTH_POLL_INTERVAL_MS = 2 * 1000;
|
||
|
||
/**
|
||
* OAuth 最大轮询时间(5分钟)
|
||
* 超过此时间后停止轮询,认为授权超时
|
||
*/
|
||
export const OAUTH_MAX_POLL_DURATION_MS = 5 * 60 * 1000;
|
||
|
||
// ============================================================
|
||
// 数据限制常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* 最大日志显示行数
|
||
* 限制内存占用,避免大量日志导致页面卡顿
|
||
*/
|
||
export const MAX_LOG_LINES = 2000;
|
||
|
||
/**
|
||
* 日志接口获取数量上限
|
||
* 限制后端返回的日志行数,避免一次拉取过多数据
|
||
*/
|
||
export const LOG_FETCH_LIMIT = 2500;
|
||
|
||
/**
|
||
* 认证文件列表默认每页显示数量
|
||
*/
|
||
export const DEFAULT_AUTH_FILES_PAGE_SIZE = 9;
|
||
|
||
/**
|
||
* 认证文件每页最小显示数量
|
||
*/
|
||
export const MIN_AUTH_FILES_PAGE_SIZE = 3;
|
||
|
||
/**
|
||
* 认证文件每页最大显示数量
|
||
*/
|
||
export const MAX_AUTH_FILES_PAGE_SIZE = 60;
|
||
|
||
/**
|
||
* 使用统计图表最大数据点数
|
||
* 超过此数量将进行聚合,提高渲染性能
|
||
*/
|
||
export const MAX_CHART_DATA_POINTS = 100;
|
||
|
||
// ============================================================
|
||
// 网络相关常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* 默认 API 服务器端口
|
||
*/
|
||
export const DEFAULT_API_PORT = 8317;
|
||
|
||
/**
|
||
* 默认 API 基础路径
|
||
*/
|
||
export const DEFAULT_API_BASE = `http://localhost:${DEFAULT_API_PORT}`;
|
||
|
||
/**
|
||
* 管理 API 路径前缀
|
||
*/
|
||
export const MANAGEMENT_API_PREFIX = '/v0/management';
|
||
|
||
/**
|
||
* 请求超时时间(30秒)
|
||
*/
|
||
export const REQUEST_TIMEOUT_MS = 30 * 1000;
|
||
|
||
// ============================================================
|
||
// OAuth 相关常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* OAuth 卡片元素 ID 列表
|
||
* 用于根据主机环境隐藏/显示不同的 OAuth 选项
|
||
*/
|
||
export const OAUTH_CARD_IDS = [
|
||
'codex-oauth-card',
|
||
'anthropic-oauth-card',
|
||
'antigravity-oauth-card',
|
||
'gemini-cli-oauth-card',
|
||
'qwen-oauth-card',
|
||
'iflow-oauth-card'
|
||
];
|
||
|
||
/**
|
||
* OAuth 提供商名称映射
|
||
*/
|
||
export const OAUTH_PROVIDERS = {
|
||
CODEX: 'codex',
|
||
ANTHROPIC: 'anthropic',
|
||
ANTIGRAVITY: 'antigravity',
|
||
GEMINI_CLI: 'gemini-cli',
|
||
QWEN: 'qwen',
|
||
IFLOW: 'iflow'
|
||
};
|
||
|
||
// ============================================================
|
||
// 本地存储键名
|
||
// ============================================================
|
||
|
||
/**
|
||
* 本地存储键名前缀
|
||
*/
|
||
export const STORAGE_PREFIX = 'cliProxyApi_';
|
||
|
||
/**
|
||
* 存储 API 基础地址的键名
|
||
*/
|
||
export const STORAGE_KEY_API_BASE = `${STORAGE_PREFIX}apiBase`;
|
||
|
||
/**
|
||
* 存储管理密钥的键名
|
||
*/
|
||
export const STORAGE_KEY_MANAGEMENT_KEY = `${STORAGE_PREFIX}managementKey`;
|
||
|
||
/**
|
||
* 存储主题偏好的键名
|
||
*/
|
||
export const STORAGE_KEY_THEME = `${STORAGE_PREFIX}theme`;
|
||
|
||
/**
|
||
* 存储语言偏好的键名
|
||
*/
|
||
export const STORAGE_KEY_LANGUAGE = `${STORAGE_PREFIX}language`;
|
||
|
||
/**
|
||
* 存储认证文件页大小的键名
|
||
*/
|
||
export const STORAGE_KEY_AUTH_FILES_PAGE_SIZE = `${STORAGE_PREFIX}authFilesPageSize`;
|
||
|
||
// ============================================================
|
||
// UI 相关常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* 主题选项
|
||
*/
|
||
export const THEMES = {
|
||
LIGHT: 'light',
|
||
DARK: 'dark'
|
||
};
|
||
|
||
/**
|
||
* 支持的语言
|
||
*/
|
||
export const LANGUAGES = {
|
||
ZH_CN: 'zh-CN',
|
||
EN_US: 'en-US'
|
||
};
|
||
|
||
/**
|
||
* 通知类型
|
||
*/
|
||
export const NOTIFICATION_TYPES = {
|
||
SUCCESS: 'success',
|
||
ERROR: 'error',
|
||
INFO: 'info',
|
||
WARNING: 'warning'
|
||
};
|
||
|
||
/**
|
||
* 模态框尺寸
|
||
*/
|
||
export const MODAL_SIZES = {
|
||
SMALL: 'small',
|
||
MEDIUM: 'medium',
|
||
LARGE: 'large'
|
||
};
|
||
|
||
// ============================================================
|
||
// 正则表达式常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* URL 验证正则
|
||
*/
|
||
export const URL_PATTERN = /^https?:\/\/.+/;
|
||
|
||
/**
|
||
* Email 验证正则
|
||
*/
|
||
export const EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||
|
||
/**
|
||
* 端口号验证正则(1-65535)
|
||
*/
|
||
export const PORT_PATTERN = /^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/;
|
||
|
||
// ============================================================
|
||
// 文件类型常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* 支持的认证文件类型
|
||
*/
|
||
export const AUTH_FILE_TYPES = {
|
||
JSON: 'application/json',
|
||
YAML: 'application/x-yaml'
|
||
};
|
||
|
||
/**
|
||
* 认证文件最大大小(10MB)
|
||
*/
|
||
export const MAX_AUTH_FILE_SIZE = 10 * 1024 * 1024;
|
||
|
||
// ============================================================
|
||
// API 端点常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* 常用 API 端点路径
|
||
*/
|
||
export const API_ENDPOINTS = {
|
||
CONFIG: '/config',
|
||
DEBUG: '/debug',
|
||
API_KEYS: '/api-keys',
|
||
PROVIDERS: '/providers',
|
||
AUTH_FILES: '/auth-files',
|
||
LOGS: '/logs',
|
||
USAGE_STATS: '/usage-stats',
|
||
CONNECTION: '/connection',
|
||
CODEX_API_KEY: '/codex-api-key',
|
||
ANTHROPIC_API_KEY: '/anthropic-api-key',
|
||
GEMINI_API_KEY: '/gemini-api-key',
|
||
OPENAI_API_KEY: '/openai-api-key'
|
||
};
|
||
|
||
// ============================================================
|
||
// 错误消息常量
|
||
// ============================================================
|
||
|
||
/**
|
||
* 通用错误消息
|
||
*/
|
||
export const ERROR_MESSAGES = {
|
||
NETWORK_ERROR: '网络连接失败,请检查服务器状态',
|
||
TIMEOUT: '请求超时,请稍后重试',
|
||
UNAUTHORIZED: '未授权,请检查管理密钥',
|
||
NOT_FOUND: '资源不存在',
|
||
SERVER_ERROR: '服务器错误,请联系管理员',
|
||
INVALID_INPUT: '输入数据无效',
|
||
OPERATION_FAILED: '操作失败,请稍后重试'
|
||
};
|