index.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import devConfig from './dev.js';
  2. import prodConfig from './prod.js';
  3. if (!process.env.NODE_ENV)
  4. process.env.NODE_ENV='development';
  5. const runtimeEnv = process.env.NODE_ENV || 'development';
  6. const defaultInternalApiToken = runtimeEnv === 'production' ? '' : 'dev-internal-token';
  7. const toNumber = (value, fallback) => {
  8. const number = Number(value);
  9. return Number.isFinite(number) ? number : fallback;
  10. };
  11. // 公共数据库配置
  12. const commonConfig = {
  13. port: process.env.PORT || 3000,
  14. internalApiToken: process.env.INTERNAL_API_TOKEN || defaultInternalApiToken,
  15. errorLogging: {
  16. appName: process.env.ERROR_LOG_APP_NAME || 'miaoguo_system_server',
  17. captureConsoleError: process.env.ERROR_LOG_CAPTURE_CONSOLE !== 'false',
  18. exitOnFatal: process.env.ERROR_LOG_EXIT_ON_FATAL !== 'false',
  19. fatalExitDelayMs: toNumber(process.env.ERROR_LOG_FATAL_EXIT_DELAY_MS, 1500),
  20. maxPayloadLength: toNumber(process.env.ERROR_LOG_MAX_PAYLOAD_LENGTH, 8000),
  21. maxStackLength: toNumber(process.env.ERROR_LOG_MAX_STACK_LENGTH, 30000)
  22. },
  23. aiGeneration: {
  24. articleProvider: process.env.AI_GENERATION_PROVIDER || 'doubao-deepseek-v4-pro-260425',
  25. articleProviderVersion: process.env.AI_GENERATION_PROVIDER_VERSION || 'zdp4f',
  26. articleProviderContent: process.env.AI_GENERATION_PROVIDER_CONTENT || '字节deepseek_v4pro\n平均30秒生成',
  27. articleProviderBuildSecond: toNumber(process.env.AI_GENERATION_PROVIDER_BUILD_SECOND, 30),
  28. volcesMinIntervalMs: toNumber(process.env.VOLCES_AI_MIN_INTERVAL_MS, 15000),
  29. volcesMaxRetries: toNumber(process.env.VOLCES_AI_MAX_RETRIES, 2),
  30. volcesTimeoutMs: toNumber(process.env.VOLCES_AI_TIMEOUT_MS, 90000)
  31. },
  32. CDNUrl: 'https://cdn.example.com/',
  33. database: {
  34. multipleStatements: true,
  35. connectionLimit: 20,
  36. charset: "UTF8MB4_GENERAL_CI",
  37. decimalNumbers: true
  38. },
  39. session: {
  40. secrets: 'streetsnap'
  41. },
  42. wx:{
  43. appid:"wx46a7b4c420e6d38f",
  44. appsecret:"d55ea733f20ae80741744f8d49c08c4f",
  45. payapisecret:"021RfYHi1gl33A0zzqKi1ro2Ii1RfYHK",
  46. token:"Ki1ro2Ii1RfYHK",
  47. mch_id:1438486602,
  48. shulte_appid:"wxa5e33c61fe37dd01",
  49. shulte_appsecret:"dfd61dd4f503b9380ace12d9fcac8d30",
  50. SpatialIntelligence_appid:"wxaa1a8b48d9853872",
  51. SpatialIntelligence_appsecret:"9b6508fd6c7ab6a6f2cbe7dc0d59a1d8",
  52. pinyin_appid:"wx331e8dd070f01d0e",
  53. pinyin_appsecret:"443c398339e1b3d7a8cd3cc86dde305f",
  54. phonics_appid:"wxb54a6d5aff836ee3",
  55. phonics_appsecret:"436b8e965925d10b06bb9ba21e02fad2",
  56. hanzi_appid:"wx313a8f2c0741efe1",
  57. hanzi_appsecret:"5d5ec8a0a7496206a84f46ad28325650",
  58. parentsHelper_appid:"wx80059777521b897c",
  59. parentsHelper_appsecret:"00c22ae7febdf105820fadb7b0a8d8c4",
  60. yjbdc_appid:"wx80059777521b897c",
  61. yjbdc_appsecret:"00c22ae7febdf105820fadb7b0a8d8c4",
  62. math_appid:"wx1fef080f74481cbd",
  63. math_appsecret:"9bc93761ba8c7a270155ff4b53cc0fda",
  64. mathStar_appid:"wxa5441bbf344692ba",
  65. mathStar_appsecret:"f8f31e40d9947f4b49812544f0aabbd1",
  66. miaoguo_appid:"wx84b3feac6069eec3",
  67. miaoguo_appsecret:"ff7acb13ace612881e2b7ff178b511e9",
  68. web_appid:"wxed722a5486a6ead7",
  69. web_appsecret:"91f0ad9ad20a460c45a234b78a69ec05",
  70. wechatservice_appid:"wxec1a295274084e31",
  71. wechatservice_appsecret:"e9712de2b6c7e78341d04e06dde907bc",
  72. shiZiLiang_appid:"wx39bc498e7fdacb6b",
  73. shiZiLiang_appsecret:"c239948d6b769e281c84da212ecee9eb",
  74. mps_appid:"wx39bc498e7fdacb6b",
  75. mps_appsecret:"c239948d6b769e281c84da212ecee9eb",
  76. },
  77. QCloud:{
  78. SecretId: 'AKIDFI6ewyOLhplRvBozXqunR1SfdMr8nzd3',
  79. SecretKey: 'JQJxNYUCftsdASUGm22mGVUO6f1DCyWq',
  80. },
  81. tencentcloud:{
  82. secretId: "AKIDfBYjhRyLWTCl9KH3oNiplUyFPRK3dCd1",
  83. secretKey: "JTUK0WsBKJ8nIdopfM0TnxwkOsBJ75vp",
  84. },
  85. tencentcloudHunyuan:{
  86. apikey:"sk-OCrTvmGFTxAeRFr7ceco18NOarjWNvledM4yf9gROpBQvxqZ",
  87. },
  88. huoshancloud:{
  89. apikeyCJ:"d276e65d-4c39-49ad-a2e2-5060c30ca9a0",
  90. apikeyHLR:"2b7d737e-6773-4d55-ae77-da8d4e819c96",
  91. },
  92. aliyun:{
  93. apikeyCJ: "sk-12e38cdfe5b1477880e5c99efbd10b48",
  94. apikeyHLR:"sk-b3ea1a818aad4386b7f50133411fb6e8",
  95. },
  96. baiducloud:{
  97. apikey:"bce-v3/ALTAK-rJ28kWUiu2wE7AmSwCA6x/f7e1c801b6a569766add8f8e27223bafae158c32",
  98. },
  99. openroutercloud:{
  100. apikey:"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",
  101. },
  102. xfyun:{
  103. appid: "620d2552", // 讯飞星火APPID
  104. apikey: "a3be608fe7fb367adae0169324faf3aa", // 讯飞星火APIKey
  105. apisecret: "OTEyZTM2OWMxNjBhODdhMzQ3YmQ5Nzkw", // 讯飞星火APISecret
  106. version: "v1" // API版本
  107. },
  108. BufferMemoryTimeSuperLower:1,//缓存时间1秒
  109. BufferMemoryTimeLower:5,//缓存时间5秒
  110. BufferMemoryTimeLow:10,//缓存时间10秒
  111. BufferMemoryTimeLowNormal:30,//缓存时间30秒
  112. BufferMemoryTime:60,//缓存时间60秒
  113. BufferMemoryTime1:120,//缓存时间2分钟
  114. BufferMemoryTime2:300,//缓存时间5分钟
  115. BufferMemoryTimeHigh:3600,//缓存时间1小时
  116. BufferMemoryTimeHigher:86400,//缓存时间1天
  117. BufferMemoryTimeHighBest:604800,//缓存时间7天
  118. NumberOfTrials:5,//口算试用练习次数
  119. MiaoguoGiftDayNumber:20,
  120. MiaoguoGiftStartDate:'2021-03-20',
  121. WXServiceCharge:'0',
  122. IndividualIncomeTax:'0',
  123. AgentMoney:'30.00',
  124. AmbassadorMoney:'15.00',
  125. MaxAphorismID:475,//勤勉接力最大格言数
  126. MaxImageID:1135,//勤勉接力最大图片数
  127. UserAgent:[
  128. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
  129. "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
  130. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
  131. "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
  132. "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
  133. "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
  134. "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
  135. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  136. "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  137. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
  138. "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
  139. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
  140. "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
  141. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
  142. "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
  143. "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
  144. "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
  145. "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
  146. "Mozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0 ",
  147. "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3",
  148. "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5",
  149. "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.14) Gecko/20110218 AlexaToolbar/alxf-2.0 Firefox/3.6.14",
  150. "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15",
  151. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
  152. "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10",
  153. "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8",
  154. "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5",
  155. "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0",
  156. "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
  157. "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)",
  158. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)",
  159. ]
  160. };
  161. const env = runtimeEnv;
  162. const envConfig = env === 'production' ? prodConfig : devConfig;
  163. // 合并配置,环境特定配置会覆盖公共配置
  164. const config = {
  165. ...commonConfig,
  166. ...envConfig,
  167. database: {
  168. ...commonConfig.database,
  169. ...(envConfig.database || {})
  170. }
  171. };
  172. export default config;