{"repo": "666wow666/cloupolice", "files": {"src/backend/config/index.js": {"f6e935a8a17740ea7ef795cf515d9c9910e41c2b": {"t": 1785746676.8927863, "n": 5071, "h": "fb00f83d8b3c74bd", "c": "const config = {\n port: process.env.PORT || 5000,\n \n defaultModel: process.env.DEFAULT_MODEL || 'qianwen',\n \n // 工作流1和工作流2独立模型配置\n workflow1Model: process.env.WORKFLOW1_MODEL || process.env.DEFAULT_MODEL || 'qianwen',\n workflow2Model: process.env.WORKFLOW2_MODEL || process.env.DEFAULT_MODEL || 'qianwen',\n\n // 是否启用终端模型选择\n // true: 启动时在终端选择模型\n // false: 直接使用默认模型\n enableTerminalSelection: process.env.ENABLE_TERMINAL_SELECTION === 'true',\n\n glm: {\n apiKey: process.env.GLM_API_KEY,\n baseURL: process.env.GLM_BASE_URL || 'https://open.bigmodel.cn/api/paas/v4',\n model: process.env.GLM_MODEL || 'glm-4-flash',\n workflow1Model: process.env.GLM_WORKFLOW1_MODEL || process.env.GLM_MODEL || 'glm-4-flash',\n workflow2Model: process.env.GLM_WORKFLOW2_MODEL || process.env.GLM_MODEL || 'glm-4-flash'\n },\n\n deepseek: {\n apiKey: process.env.DEEPSEEK_API_KEY,\n baseURL: process.env.DEEPSEEK_BASE_URL || 'https://api.deepseek.com/v1',\n model: process.env.DEEPSEEK_MODEL || 'deepseek-chat',\n workflow1Model: process.env.DEEPSEEK_WORKFLOW1_MODEL || process.env.DEEPSEEK_MODEL || 'deepseek-chat',\n workflow2Model: process.env.DEEPSEEK_WORKFLOW2_MODEL || process.env.DEEPSEEK_MODEL || 'deepseek-chat'\n },\n\n doubao: {\n apiKey: process.env.DOUBAO_API_KEY,\n baseURL: process.env.DOUBAO_BASE_URL || 'https://ark.cn-beijing.volces.com/api/v3',\n model: process.env.DOUBAO_MODEL || 'doubao-pro-32k',\n workflow1Model: process.env.DOUBAO_WORKFLOW1_MODEL || process.env.DOUBAO_MODEL || 'doubao-pro-32k',\n workflow2Model: process.env.DOUBAO_WORKFLOW2_MODEL || process.env.DOUBAO_MODEL || 'doubao-pro-32k'\n },\n\n kimi: {\n apiKey: process.env.KIMI_API_KEY,\n baseURL: process.env.KIMI_BASE_URL || 'https://api.moonshot.cn/v1',\n model: process.env.KIMI_MODEL || 'moonshot-v1-8k',\n workflow1Model: process.env.KIMI_WORKFLOW1_MODEL || process.env.KIMI_MODEL || 'moonshot-v1-8k',\n workflow2Model: process.env.KIMI_WORKFLOW2_MODEL || process.env.KIMI_MODEL || 'moonshot-v1-8k'\n },\n\n qianwen: {\n apiKey: process.env.QIANWEN_API_KEY,\n baseURL: process.env.QIANWEN_BASE_URL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n model: process.env.QIANWEN_MODEL || 'qwen3.5-32b',\n workflow1Model: process.env.QIANWEN_WORKFLOW1_MODEL || process.env.QIANWEN_MODEL || 'qwen3.5-32b',\n workflow2Model: process.env.QIANWEN_WORKFLOW2_MODEL || process.env.QIANWEN_MODEL || 'qwen3.5-32b'\n },\n\n ernie: {\n apiKey: process.env.ERNIE_API_KEY,\n secretKey: process.env.ERNIE_SECRET_KEY,\n baseURL: process.env.ERNIE_BASE_URL || 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat',\n model: process.env.ERNIE_MODEL || 'ernie-4.0-turbo',\n workflow1Model: process.env.ERNIE_WORKFLOW1_MODEL || process.env.ERNIE_MODEL || 'ernie-4.0-turbo',\n workflow2Model: process.env.ERNIE_WORKFLOW2_MODEL || process.env.ERNIE_MODEL || 'ernie-4.0-turbo'\n },\n\n nvidia: {\n apiKey: process.env.NVIDIA_API_KEY,\n baseURL: process.env.NVIDIA_BASE_URL || 'https://integrate.api.nvidia.com/v1',\n model: process.env.NVIDIA_MODEL || 'deepseek-ai/deepseek-v4-flash',\n workflow1Model: process.env.NVIDIA_WORKFLOW1_MODEL || process.env.NVIDIA_MODEL || 'deepseek-ai/deepseek-v4-flash',\n workflow2Model: process.env.NVIDIA_WORKFLOW2_MODEL || process.env.NVIDIA_MODEL || 'deepseek-ai/deepseek-v4-flash'\n },\n\n xfyun: {\n appId: process.env.XFYUN_APPID,\n apiKey: process.env.XFYUN_API_KEY\n },\n\n auth: {\n password: process.env.AUTH_PASSWORD\n }\n};\n\nfunction validateConfig() {\n const errors = [];\n const warnings = [];\n \n const configuredModels = [];\n if (config.glm.apiKey) configuredModels.push('GLM');\n if (config.deepseek.apiKey) configuredModels.push('DeepSeek');\n if (config.doubao.apiKey) configuredModels.push('豆包');\n if (config.kimi.apiKey) configuredModels.push('Kimi');\n if (config.qianwen.apiKey) configuredModels.push('千问');\n if (config.ernie.apiKey && config.ernie.secretKey) configuredModels.push('文心一言');\n if (config.nvidia.apiKey) configuredModels.push('NVIDIA');\n\n if (configuredModels.length === 0) {\n errors.push('❌ 未配置任何AI模型API密钥,请至少配置一个模型');\n } else {\n console.log(`✓ 已配置的AI模型: ${configuredModels.join(', ')}`);\n }\n\n if (!config.xfyun.appId) {\n warnings.push('⚠️ 缺少 XFYUN_APPID 环境变量(讯飞应用ID)');\n }\n \n if (!config.xfyun.apiKey) {\n warnings.push('⚠️ 缺少 XFYUN_API_KEY 环境变量(讯飞API密钥)');\n }\n \n if (errors.length === 0 && warnings.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n \n return { errors, warnings };\n}\n\nfunction printConfigValidation() {\n const { errors, warnings } = validateConfig();\n \n if (errors.length > 0) {\n console.warn('\\n=== 配置错误 ===');\n errors.forEach(e => console.warn(e));\n console.warn('================\\n');\n }\n \n if (warnings.length > 0) {\n console.warn('\\n=== 配置警告 ===');\n warnings.forEach(w => console.warn(w));\n console.warn('================\\n');\n }\n \n if (errors.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n}\n\nmodule.exports = {\n config,\n validateConfig,\n printConfigValidation\n};"}, "79bbb9842ce72c87b9f48500390b3956403221f3": {"t": 1785766756.8191838, "n": 5071, "h": "fb00f83d8b3c74bd", "c": "const config = {\n port: process.env.PORT || 5000,\n \n defaultModel: process.env.DEFAULT_MODEL || 'qianwen',\n \n // 工作流1和工作流2独立模型配置\n workflow1Model: process.env.WORKFLOW1_MODEL || process.env.DEFAULT_MODEL || 'qianwen',\n workflow2Model: process.env.WORKFLOW2_MODEL || process.env.DEFAULT_MODEL || 'qianwen',\n\n // 是否启用终端模型选择\n // true: 启动时在终端选择模型\n // false: 直接使用默认模型\n enableTerminalSelection: process.env.ENABLE_TERMINAL_SELECTION === 'true',\n\n glm: {\n apiKey: process.env.GLM_API_KEY,\n baseURL: process.env.GLM_BASE_URL || 'https://open.bigmodel.cn/api/paas/v4',\n model: process.env.GLM_MODEL || 'glm-4-flash',\n workflow1Model: process.env.GLM_WORKFLOW1_MODEL || process.env.GLM_MODEL || 'glm-4-flash',\n workflow2Model: process.env.GLM_WORKFLOW2_MODEL || process.env.GLM_MODEL || 'glm-4-flash'\n },\n\n deepseek: {\n apiKey: process.env.DEEPSEEK_API_KEY,\n baseURL: process.env.DEEPSEEK_BASE_URL || 'https://api.deepseek.com/v1',\n model: process.env.DEEPSEEK_MODEL || 'deepseek-chat',\n workflow1Model: process.env.DEEPSEEK_WORKFLOW1_MODEL || process.env.DEEPSEEK_MODEL || 'deepseek-chat',\n workflow2Model: process.env.DEEPSEEK_WORKFLOW2_MODEL || process.env.DEEPSEEK_MODEL || 'deepseek-chat'\n },\n\n doubao: {\n apiKey: process.env.DOUBAO_API_KEY,\n baseURL: process.env.DOUBAO_BASE_URL || 'https://ark.cn-beijing.volces.com/api/v3',\n model: process.env.DOUBAO_MODEL || 'doubao-pro-32k',\n workflow1Model: process.env.DOUBAO_WORKFLOW1_MODEL || process.env.DOUBAO_MODEL || 'doubao-pro-32k',\n workflow2Model: process.env.DOUBAO_WORKFLOW2_MODEL || process.env.DOUBAO_MODEL || 'doubao-pro-32k'\n },\n\n kimi: {\n apiKey: process.env.KIMI_API_KEY,\n baseURL: process.env.KIMI_BASE_URL || 'https://api.moonshot.cn/v1',\n model: process.env.KIMI_MODEL || 'moonshot-v1-8k',\n workflow1Model: process.env.KIMI_WORKFLOW1_MODEL || process.env.KIMI_MODEL || 'moonshot-v1-8k',\n workflow2Model: process.env.KIMI_WORKFLOW2_MODEL || process.env.KIMI_MODEL || 'moonshot-v1-8k'\n },\n\n qianwen: {\n apiKey: process.env.QIANWEN_API_KEY,\n baseURL: process.env.QIANWEN_BASE_URL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n model: process.env.QIANWEN_MODEL || 'qwen3.5-32b',\n workflow1Model: process.env.QIANWEN_WORKFLOW1_MODEL || process.env.QIANWEN_MODEL || 'qwen3.5-32b',\n workflow2Model: process.env.QIANWEN_WORKFLOW2_MODEL || process.env.QIANWEN_MODEL || 'qwen3.5-32b'\n },\n\n ernie: {\n apiKey: process.env.ERNIE_API_KEY,\n secretKey: process.env.ERNIE_SECRET_KEY,\n baseURL: process.env.ERNIE_BASE_URL || 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat',\n model: process.env.ERNIE_MODEL || 'ernie-4.0-turbo',\n workflow1Model: process.env.ERNIE_WORKFLOW1_MODEL || process.env.ERNIE_MODEL || 'ernie-4.0-turbo',\n workflow2Model: process.env.ERNIE_WORKFLOW2_MODEL || process.env.ERNIE_MODEL || 'ernie-4.0-turbo'\n },\n\n nvidia: {\n apiKey: process.env.NVIDIA_API_KEY,\n baseURL: process.env.NVIDIA_BASE_URL || 'https://integrate.api.nvidia.com/v1',\n model: process.env.NVIDIA_MODEL || 'deepseek-ai/deepseek-v4-flash',\n workflow1Model: process.env.NVIDIA_WORKFLOW1_MODEL || process.env.NVIDIA_MODEL || 'deepseek-ai/deepseek-v4-flash',\n workflow2Model: process.env.NVIDIA_WORKFLOW2_MODEL || process.env.NVIDIA_MODEL || 'deepseek-ai/deepseek-v4-flash'\n },\n\n xfyun: {\n appId: process.env.XFYUN_APPID,\n apiKey: process.env.XFYUN_API_KEY\n },\n\n auth: {\n password: process.env.AUTH_PASSWORD\n }\n};\n\nfunction validateConfig() {\n const errors = [];\n const warnings = [];\n \n const configuredModels = [];\n if (config.glm.apiKey) configuredModels.push('GLM');\n if (config.deepseek.apiKey) configuredModels.push('DeepSeek');\n if (config.doubao.apiKey) configuredModels.push('豆包');\n if (config.kimi.apiKey) configuredModels.push('Kimi');\n if (config.qianwen.apiKey) configuredModels.push('千问');\n if (config.ernie.apiKey && config.ernie.secretKey) configuredModels.push('文心一言');\n if (config.nvidia.apiKey) configuredModels.push('NVIDIA');\n\n if (configuredModels.length === 0) {\n errors.push('❌ 未配置任何AI模型API密钥,请至少配置一个模型');\n } else {\n console.log(`✓ 已配置的AI模型: ${configuredModels.join(', ')}`);\n }\n\n if (!config.xfyun.appId) {\n warnings.push('⚠️ 缺少 XFYUN_APPID 环境变量(讯飞应用ID)');\n }\n \n if (!config.xfyun.apiKey) {\n warnings.push('⚠️ 缺少 XFYUN_API_KEY 环境变量(讯飞API密钥)');\n }\n \n if (errors.length === 0 && warnings.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n \n return { errors, warnings };\n}\n\nfunction printConfigValidation() {\n const { errors, warnings } = validateConfig();\n \n if (errors.length > 0) {\n console.warn('\\n=== 配置错误 ===');\n errors.forEach(e => console.warn(e));\n console.warn('================\\n');\n }\n \n if (warnings.length > 0) {\n console.warn('\\n=== 配置警告 ===');\n warnings.forEach(w => console.warn(w));\n console.warn('================\\n');\n }\n \n if (errors.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n}\n\nmodule.exports = {\n config,\n validateConfig,\n printConfigValidation\n};"}, "2826d380573224af3ffc86352fcdf858fb3376be": {"t": 1785766758.1244001, "n": 3407, "h": "acc35f12e5a585b9", "c": "const config = {\n port: process.env.PORT || 5000,\n \n defaultModel: process.env.DEFAULT_MODEL || 'qianwen',\n\n // 是否启用终端模型选择\n // true: 启动时在终端选择模型\n // false: 直接使用默认模型\n enableTerminalSelection: process.env.ENABLE_TERMINAL_SELECTION === 'true',\n\n glm: {\n apiKey: process.env.GLM_API_KEY,\n baseURL: process.env.GLM_BASE_URL || 'https://open.bigmodel.cn/api/paas/v4',\n model: process.env.GLM_MODEL || 'glm-4-flash'\n },\n\n deepseek: {\n apiKey: process.env.DEEPSEEK_API_KEY,\n baseURL: process.env.DEEPSEEK_BASE_URL || 'https://api.deepseek.com/v1',\n model: process.env.DEEPSEEK_MODEL || 'deepseek-chat'\n },\n\n doubao: {\n apiKey: process.env.DOUBAO_API_KEY,\n baseURL: process.env.DOUBAO_BASE_URL || 'https://ark.cn-beijing.volces.com/api/v3',\n model: process.env.DOUBAO_MODEL || 'doubao-pro-32k'\n },\n\n kimi: {\n apiKey: process.env.KIMI_API_KEY,\n baseURL: process.env.KIMI_BASE_URL || 'https://api.moonshot.cn/v1',\n model: process.env.KIMI_MODEL || 'moonshot-v1-8k'\n },\n\n qianwen: {\n apiKey: process.env.QIANWEN_API_KEY,\n baseURL: process.env.QIANWEN_BASE_URL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n model: process.env.QIANWEN_MODEL || 'qwen3.5-32b'\n },\n\n ernie: {\n apiKey: process.env.ERNIE_API_KEY,\n secretKey: process.env.ERNIE_SECRET_KEY,\n baseURL: process.env.ERNIE_BASE_URL || 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat',\n model: process.env.ERNIE_MODEL || 'ernie-4.0-turbo'\n },\n\n nvidia: {\n apiKey: process.env.NVIDIA_API_KEY,\n baseURL: process.env.NVIDIA_BASE_URL || 'https://integrate.api.nvidia.com/v1',\n model: process.env.NVIDIA_MODEL || 'deepseek-ai/deepseek-v4-flash'\n },\n\n xfyun: {\n appId: process.env.XFYUN_APPID,\n apiKey: process.env.XFYUN_API_KEY\n },\n\n auth: {\n password: process.env.AUTH_PASSWORD\n }\n};\n\nfunction validateConfig() {\n const errors = [];\n const warnings = [];\n \n const configuredModels = [];\n if (config.glm.apiKey) configuredModels.push('GLM');\n if (config.deepseek.apiKey) configuredModels.push('DeepSeek');\n if (config.doubao.apiKey) configuredModels.push('豆包');\n if (config.kimi.apiKey) configuredModels.push('Kimi');\n if (config.qianwen.apiKey) configuredModels.push('千问');\n if (config.ernie.apiKey && config.ernie.secretKey) configuredModels.push('文心一言');\n if (config.nvidia.apiKey) configuredModels.push('NVIDIA');\n\n if (configuredModels.length === 0) {\n errors.push('❌ 未配置任何AI模型API密钥,请至少配置一个模型');\n } else {\n console.log(`✓ 已配置的AI模型: ${configuredModels.join(', ')}`);\n }\n\n if (!config.xfyun.appId) {\n warnings.push('⚠️ 缺少 XFYUN_APPID 环境变量(讯飞应用ID)');\n }\n \n if (!config.xfyun.apiKey) {\n warnings.push('⚠️ 缺少 XFYUN_API_KEY 环境变量(讯飞API密钥)');\n }\n \n if (errors.length === 0 && warnings.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n \n return { errors, warnings };\n}\n\nfunction printConfigValidation() {\n const { errors, warnings } = validateConfig();\n \n if (errors.length > 0) {\n console.warn('\\n=== 配置错误 ===');\n errors.forEach(e => console.warn(e));\n console.warn('================\\n');\n }\n \n if (warnings.length > 0) {\n console.warn('\\n=== 配置警告 ===');\n warnings.forEach(w => console.warn(w));\n console.warn('================\\n');\n }\n \n if (errors.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n}\n\nmodule.exports = {\n config,\n validateConfig,\n printConfigValidation\n};"}, "d94f3e7a0c610f19cd7be9069c4daae7b19bbd43": {"t": 1785766759.4174657, "n": 1689, "h": "9036aee7422b58b0", "c": "/**\n * 后端配置管理模块\n * 集中管理所有环境变量和配置项,提供配置校验功能\n */\n\n/**\n * 应用配置对象\n * 包含服务端口和AI服务相关配置\n */\nconst config = {\n port: process.env.PORT || 5000,\n \n glm: {\n apiKey: process.env.GLM_API_KEY,\n baseURL: process.env.GLM_BASE_URL || 'https://open.bigmodel.cn/api/paas/v4',\n model: process.env.GLM_MODEL || 'glm-4-flash'\n },\n \n xfyun: {\n appId: process.env.XFYUN_APPID,\n apiKey: process.env.XFYUN_API_KEY\n },\n \n auth: {\n password: process.env.AUTH_PASSWORD\n }\n};\n\n/**\n * 校验配置项的有效性\n * 检查必需的配置项是否已正确设置\n * @returns {Object} - 返回错误列表和警告列表\n */\nfunction validateConfig() {\n const errors = [];\n const warnings = [];\n \n if (!config.glm.apiKey) {\n errors.push('❌ 缺少 GLM_API_KEY 环境变量(智谱AI密钥)');\n }\n \n if (!config.xfyun.appId) {\n warnings.push('⚠️ 缺少 XFYUN_APPID 环境变量(讯飞应用ID)');\n }\n \n if (!config.xfyun.apiKey) {\n warnings.push('⚠️ 缺少 XFYUN_API_KEY 环境变量(讯飞API密钥)');\n }\n \n if (!config.auth.password) {\n warnings.push('⚠️ 缺少 AUTH_PASSWORD 环境变量(认证密码)');\n }\n \n if (errors.length === 0 && warnings.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n \n return { errors, warnings };\n}\n\n/**\n * 打印配置校验结果\n * 在控制台输出配置错误和警告信息\n */\nfunction printConfigValidation() {\n const { errors, warnings } = validateConfig();\n \n if (errors.length > 0) {\n console.warn('\\n=== 配置错误 ===');\n errors.forEach(e => console.warn(e));\n console.warn('================\\n');\n }\n \n if (warnings.length > 0) {\n console.warn('\\n=== 配置警告 ===');\n warnings.forEach(w => console.warn(w));\n console.warn('================\\n');\n }\n \n if (errors.length === 0) {\n console.log('✓ 所有配置项校验通过');\n }\n}\n\nmodule.exports = {\n config,\n validateConfig,\n printConfigValidation\n};\n"}}}}