index.ts 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import dotenv from 'dotenv';
  2. import path from 'path';
  3. import { fileURLToPath } from 'url';
  4. dotenv.config();
  5. const __dirname = path.dirname(fileURLToPath(import.meta.url));
  6. export const config = {
  7. env: process.env.NODE_ENV || 'development',
  8. version: process.env.npm_package_version || '1.0.0',
  9. port: parseInt(process.env.PORT || '3000', 10),
  10. // 服务监听地址:127.0.0.1 仅本地访问,0.0.0.0 允许局域网访问
  11. host: process.env.HOST || '127.0.0.1',
  12. // 数据库配置
  13. database: {
  14. host: process.env.DB_HOST || 'localhost',
  15. port: parseInt(process.env.DB_PORT || '3306', 10),
  16. username: process.env.DB_USERNAME || 'root',
  17. password: process.env.DB_PASSWORD || '',
  18. database: process.env.DB_DATABASE || 'media_manager',
  19. },
  20. // Redis 配置
  21. redis: {
  22. host: process.env.REDIS_HOST || 'localhost',
  23. port: parseInt(process.env.REDIS_PORT || '6379', 10),
  24. password: process.env.REDIS_PASSWORD || undefined,
  25. db: parseInt(process.env.REDIS_DB || '0', 10),
  26. },
  27. // JWT 配置
  28. jwt: {
  29. secret: process.env.JWT_SECRET || 'your-super-secret-key-change-in-production',
  30. accessExpiresIn: process.env.JWT_ACCESS_EXPIRES_IN || '15m',
  31. refreshExpiresIn: process.env.JWT_REFRESH_EXPIRES_IN || '7d',
  32. },
  33. // CORS 配置
  34. cors: {
  35. origin: process.env.CORS_ORIGIN?.split(',') || ['http://localhost:5173'],
  36. },
  37. // 上传配置
  38. upload: {
  39. path: process.env.UPLOAD_PATH || path.join(__dirname, '../../uploads'),
  40. maxVideoSize: parseInt(process.env.MAX_VIDEO_SIZE || '4096', 10) * 1024 * 1024, // MB to bytes
  41. maxImageSize: parseInt(process.env.MAX_IMAGE_SIZE || '10', 10) * 1024 * 1024,
  42. allowedVideoTypes: ['video/mp4', 'video/quicktime', 'video/x-flv'],
  43. allowedImageTypes: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'],
  44. },
  45. // 加密配置
  46. encryption: {
  47. key: process.env.ENCRYPTION_KEY || 'your-encryption-key-32-chars-long!',
  48. },
  49. // 内部 API 密钥(供 Python 服务调用)
  50. internalApiKey: process.env.INTERNAL_API_KEY || 'internal-api-key-default',
  51. // AI 配置 - 阿里云百炼千问大模型
  52. ai: {
  53. apiKey: process.env.DASHSCOPE_API_KEY || process.env.OPENAI_API_KEY || '',
  54. baseUrl: process.env.DASHSCOPE_BASE_URL || process.env.OPENAI_BASE_URL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
  55. // 默认模型配置
  56. defaultModel: process.env.AI_DEFAULT_MODEL || 'qwen-plus',
  57. // 可用模型列表
  58. models: {
  59. // 商业版模型
  60. chat: process.env.AI_CHAT_MODEL || 'qwen-plus', // 对话模型
  61. fast: process.env.AI_FAST_MODEL || 'qwen-turbo', // 快速模型
  62. reasoning: process.env.AI_REASONING_MODEL || 'qwq-plus', // 推理模型
  63. vision: process.env.AI_VISION_MODEL || 'qwen-vl-plus', // 视觉理解模型
  64. coder: process.env.AI_CODER_MODEL || 'qwen-coder-plus', // 代码模型
  65. embedding: process.env.AI_EMBEDDING_MODEL || 'text-embedding-v3', // 嵌入模型
  66. },
  67. // 请求配置
  68. timeout: parseInt(process.env.AI_TIMEOUT || '60000', 10),
  69. maxRetries: parseInt(process.env.AI_MAX_RETRIES || '3', 10),
  70. },
  71. };