import devConfig from './dev.js'; import prodConfig from './prod.js'; if (!process.env.NODE_ENV) process.env.NODE_ENV='development'; const runtimeEnv = process.env.NODE_ENV || 'development'; const defaultInternalApiToken = runtimeEnv === 'production' ? '' : 'dev-internal-token'; const toNumber = (value, fallback) => { const number = Number(value); return Number.isFinite(number) ? number : fallback; }; // 公共数据库配置 const commonConfig = { port: process.env.PORT || 3000, internalApiToken: process.env.INTERNAL_API_TOKEN || defaultInternalApiToken, errorLogging: { appName: process.env.ERROR_LOG_APP_NAME || 'miaoguo_system_server', captureConsoleError: process.env.ERROR_LOG_CAPTURE_CONSOLE !== 'false', exitOnFatal: process.env.ERROR_LOG_EXIT_ON_FATAL !== 'false', fatalExitDelayMs: toNumber(process.env.ERROR_LOG_FATAL_EXIT_DELAY_MS, 1500), maxPayloadLength: toNumber(process.env.ERROR_LOG_MAX_PAYLOAD_LENGTH, 8000), maxStackLength: toNumber(process.env.ERROR_LOG_MAX_STACK_LENGTH, 30000) }, aiGeneration: { articleProvider: process.env.AI_GENERATION_PROVIDER || 'doubao-deepseek-v4-pro-260425', articleProviderVersion: process.env.AI_GENERATION_PROVIDER_VERSION || 'zdp4f', articleProviderContent: process.env.AI_GENERATION_PROVIDER_CONTENT || '字节deepseek_v4pro\n平均30秒生成', articleProviderBuildSecond: toNumber(process.env.AI_GENERATION_PROVIDER_BUILD_SECOND, 30), volcesMinIntervalMs: toNumber(process.env.VOLCES_AI_MIN_INTERVAL_MS, 15000), volcesMaxRetries: toNumber(process.env.VOLCES_AI_MAX_RETRIES, 2), volcesTimeoutMs: toNumber(process.env.VOLCES_AI_TIMEOUT_MS, 90000) }, CDNUrl: 'https://cdn.example.com/', database: { multipleStatements: true, connectionLimit: 20, charset: "UTF8MB4_GENERAL_CI", decimalNumbers: true }, session: { secrets: 'streetsnap' }, wx:{ appid:"wx46a7b4c420e6d38f", appsecret:"d55ea733f20ae80741744f8d49c08c4f", payapisecret:"021RfYHi1gl33A0zzqKi1ro2Ii1RfYHK", token:"Ki1ro2Ii1RfYHK", mch_id:1438486602, shulte_appid:"wxa5e33c61fe37dd01", shulte_appsecret:"dfd61dd4f503b9380ace12d9fcac8d30", SpatialIntelligence_appid:"wxaa1a8b48d9853872", SpatialIntelligence_appsecret:"9b6508fd6c7ab6a6f2cbe7dc0d59a1d8", pinyin_appid:"wx331e8dd070f01d0e", pinyin_appsecret:"443c398339e1b3d7a8cd3cc86dde305f", phonics_appid:"wxb54a6d5aff836ee3", phonics_appsecret:"436b8e965925d10b06bb9ba21e02fad2", hanzi_appid:"wx313a8f2c0741efe1", hanzi_appsecret:"5d5ec8a0a7496206a84f46ad28325650", parentsHelper_appid:"wx80059777521b897c", parentsHelper_appsecret:"00c22ae7febdf105820fadb7b0a8d8c4", yjbdc_appid:"wx80059777521b897c", yjbdc_appsecret:"00c22ae7febdf105820fadb7b0a8d8c4", math_appid:"wx1fef080f74481cbd", math_appsecret:"9bc93761ba8c7a270155ff4b53cc0fda", mathStar_appid:"wxa5441bbf344692ba", mathStar_appsecret:"f8f31e40d9947f4b49812544f0aabbd1", miaoguo_appid:"wx84b3feac6069eec3", miaoguo_appsecret:"ff7acb13ace612881e2b7ff178b511e9", web_appid:"wxed722a5486a6ead7", web_appsecret:"91f0ad9ad20a460c45a234b78a69ec05", wechatservice_appid:"wxec1a295274084e31", wechatservice_appsecret:"e9712de2b6c7e78341d04e06dde907bc", shiZiLiang_appid:"wx39bc498e7fdacb6b", shiZiLiang_appsecret:"c239948d6b769e281c84da212ecee9eb", mps_appid:"wx39bc498e7fdacb6b", mps_appsecret:"c239948d6b769e281c84da212ecee9eb", }, QCloud:{ SecretId: 'AKIDFI6ewyOLhplRvBozXqunR1SfdMr8nzd3', SecretKey: 'JQJxNYUCftsdASUGm22mGVUO6f1DCyWq', }, tencentcloud:{ secretId: "AKIDfBYjhRyLWTCl9KH3oNiplUyFPRK3dCd1", secretKey: "JTUK0WsBKJ8nIdopfM0TnxwkOsBJ75vp", }, tencentcloudHunyuan:{ apikey:"sk-OCrTvmGFTxAeRFr7ceco18NOarjWNvledM4yf9gROpBQvxqZ", }, huoshancloud:{ apikeyCJ:"d276e65d-4c39-49ad-a2e2-5060c30ca9a0", apikeyHLR:"2b7d737e-6773-4d55-ae77-da8d4e819c96", }, aliyun:{ apikeyCJ: "sk-12e38cdfe5b1477880e5c99efbd10b48", apikeyHLR:"sk-b3ea1a818aad4386b7f50133411fb6e8", }, baiducloud:{ apikey:"bce-v3/ALTAK-rJ28kWUiu2wE7AmSwCA6x/f7e1c801b6a569766add8f8e27223bafae158c32", }, openroutercloud:{ apikey:"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", }, xfyun:{ appid: "620d2552", // 讯飞星火APPID apikey: "a3be608fe7fb367adae0169324faf3aa", // 讯飞星火APIKey apisecret: "OTEyZTM2OWMxNjBhODdhMzQ3YmQ5Nzkw", // 讯飞星火APISecret version: "v1" // API版本 }, BufferMemoryTimeSuperLower:1,//缓存时间1秒 BufferMemoryTimeLower:5,//缓存时间5秒 BufferMemoryTimeLow:10,//缓存时间10秒 BufferMemoryTimeLowNormal:30,//缓存时间30秒 BufferMemoryTime:60,//缓存时间60秒 BufferMemoryTime1:120,//缓存时间2分钟 BufferMemoryTime2:300,//缓存时间5分钟 BufferMemoryTimeHigh:3600,//缓存时间1小时 BufferMemoryTimeHigher:86400,//缓存时间1天 BufferMemoryTimeHighBest:604800,//缓存时间7天 NumberOfTrials:5,//口算试用练习次数 MiaoguoGiftDayNumber:20, MiaoguoGiftStartDate:'2021-03-20', WXServiceCharge:'0', IndividualIncomeTax:'0', AgentMoney:'30.00', AmbassadorMoney:'15.00', MaxAphorismID:475,//勤勉接力最大格言数 MaxImageID:1135,//勤勉接力最大图片数 UserAgent:[ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1", "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5", "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", "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", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24", "Mozilla/5.0 (Macintosh; U; Mac OS X Mach-O; en-US; rv:2.0a) Gecko/20040614 Firefox/3.0.0 ", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.5", "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", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1", "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", "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", "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", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", ] }; const env = runtimeEnv; const envConfig = env === 'production' ? prodConfig : devConfig; // 合并配置,环境特定配置会覆盖公共配置 const config = { ...commonConfig, ...envConfig, database: { ...commonConfig.database, ...(envConfig.database || {}) } }; export default config;