// 小程序配置文件 - 对应Fl`utter的app_config.dart function mergeDeep(target = {}, source = {}) { const result = Array.isArray(target) ? target.slice() : Object.assign({}, target); if (!source || typeof source !== 'object') { return result; } Object.keys(source).forEach((key) => { const sourceValue = source[key]; const targetValue = result[key]; if (Array.isArray(sourceValue)) { result[key] = sourceValue.slice(); } else if ( sourceValue && typeof sourceValue === 'object' && !Array.isArray(sourceValue) && targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue) ) { result[key] = mergeDeep(targetValue, sourceValue); } else if (sourceValue !== undefined) { result[key] = sourceValue; } }); return result; } let privateConfig = {}; try { // eslint-disable-next-line global-require, import/no-unresolved privateConfig = require('./config.private.js'); } catch (error) { const message = error && error.message ? String(error.message) : ''; const isMissing = error?.code === 'MODULE_NOT_FOUND' || message.includes('not defined'); if (!isMissing) { console.warn('加载私有配置失败:', error); } else if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') { console.info('未检测到 config.private.js,使用默认配置'); } } const baseConfig = { // 应用信息 appName: "FindMe", appVersion: "1.0.30", // 全局版本检查功能版本 // API配置 - 使用正确的域名 api: { baseUrl: "https://api.faxianwo.me", baseAmapUrl: "https://restapi.amap.com/v3", timeout: 15000 }, // scana配置 scana: { textBusinessId: '2084889082944577806', imageBusinessId: '2084888991278039310', appId: '68ce8147f243650001486434', secretKey: 'd5b263da-99b8-11f0-97a4-fa163e917534' }, // WebSocket配置 - 使用正确的WebSocket路径 websocket: { baseUrl: "wss://api.faxianwo.me", url: "wss://api.faxianwo.me/api/v1/ws", // 🔥 恢复正确的WebSocket路径 heartbeatInterval: 30000, // 30秒 reconnectBaseDelay: 2000, // 重连基础延迟 maxReconnectAttempts: 10 // 最大重连次数 }, // 高德地图配置 // amapKey: '55e1d9a4c6c0f9fa4c75656fe3060641', // amapKey: '9212b693317725fca66ae697ec444fd5', amapKey: '9da0f2a1538b5857dba24ac9aa9f30cc', // amapKey: '97320669caa10f1f8168b0f1aecc2c08', // NIM配置 nim: { appkey: '008ea0d044bd46e5b2281cb5fc3f627b', apiVersion: 'v2', enableV2CloudConversation: true }, // 腾讯云COS配置 - 用于文件存储 cos: { // 存储桶配置 bucket: 'findme-1375214531', region: 'ap-guangzhou', // 临时密钥服务地址 (后端提供) stsUrl: '/api/v1/cos/sts', // 文件检查接口 (检查文件是否已存在) fileCheckUrl: '/api/v1/cos/file/check', // 文件记录保存接口 fileRecordUrl: '/api/v1/cos/file/record', // 是否使用全球加速 useAccelerate: false, // 分块上传配置 sliceSize: 1024 * 1024 * 5, // 5MB 大于此大小使用分块上传 chunkSize: 1024 * 1024 * 1, // 1MB 分块大小 // 文件路径格式: user/{userId}/{fileType}/{timestamp}_{fileName} pathFormat: 'user/{userId}/{fileType}/{timestamp}_{fileName}' }, // 网络超时设置 (保持向后兼容) networkTimeout: { request: 15000, upload: 60000, download: 60000 }, // 位置刷新间隔 locationUpdateInterval: 30000, // 30秒 // 文件大小限制 (小程序有自己的限制,这里作为前端验证) fileSizeLimit: { image: 10 * 1024 * 1024, // 10MB video: 50 * 1024 * 1024, // 50MB audio: 5 * 1024 * 1024, // 5MB file: 50 * 1024 * 1024 // 50MB }, // 支持的文件类型 supportedFileTypes: { image: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp'], video: ['mp4', 'avi', 'wmv', 'mov', '3gp'], audio: ['mp3', 'wav', 'ogg', 'aac', 'm4a'] }, // 缓存设置 cache: { maxAge: 7 * 24 * 60 * 60, // 7天 resourceExpireTime: { image: 4 * 3600, // 4小时 video: 2 * 3600, // 2小时 audio: 2 * 3600, // 2小时 file: 1 * 3600, // 1小时 avatar: 24 * 3600 // 24小时 }, // 版本管理配置 versionManagement: { enableAutoClear: true, // 版本更新时自动清理缓存 periodicClearInterval: 7 * 24 * 60 * 60 * 1000, // 7天定期清理 showUpdateNotification: true // 显示更新通知 } }, // API端点路径 apiPaths: { // 身份验证相关(统一使用user路径) auth: { sendVerifyCode: '/api/v1/user/send-verify-code', login: '/api/v1/user/login', wechatLogin: '/api/v1/user/wechat-login', refresh: '/api/v1/auth/refresh', logout: '/api/v1/user/logout' }, // 用户相关 user: { profile: '/api/v1/user/profile', updateProfile: '/api/v1/user/profile', setting: '/api/v1/user/setting', bindPhone: '/api/v1/user/bind-phone', detectMerge: '/api/v1/user/detect-merge', mergeAccount: '/api/v1/user/merge-account' }, // 位置相关 location: { update: '/api/v1/location/update', getFriends: '/api/v1/location/friends', getStrangers: '/api/v1/location/strangers', privacy: '/api/v1/location/privacy' }, // 聊天相关 - 根据接口文档修正API路径 chat: { conversations: '/api/v1/chat/conversations', history: '/api/v1/chat/history', // 修正:使用正确的历史消息接口 messages: '/api/v1/chat/history', // 保持向后兼容 send: '/api/v1/chat/send', batchRead: '/api/v1/chat/batch-read', // 新增:批量已读 markAllRead: '/api/v1/chat/mark-all-read', // 新增:全部已读 unreadTotal: '/api/v1/chat/unread/total', // 新增:总未读数 settings: '/api/v1/chat/settings', // 新增:聊天设置 backup: '/api/v1/chat/backup', // 新增:备份 restore: '/api/v1/chat/restore', // 新增:恢复 danmaku: '/api/v1/chat/danmaku', // 新增:弹幕 emoji: '/api/v1/chat/emoji/packages', // 新增:表情包 syncPull: '/api/v1/chat/sync/pull', // 新增:同步拉取 syncAck: '/api/v1/chat/sync/ack', // 新增:同步确认 upload: '/api/v1/file/upload' }, // 社交相关 social: { friends: '/api/v1/social/friends', addFriend: '/api/v1/social/friend/add', acceptFriend: '/api/v1/social/friend/handle-request', deleteFriend: '/api/v1/social/friend', search: '/api/v1/social/search', friendRequests: '/api/v1/social/friend/requests', friendRequestsCount: '/api/v1/social/friend/requests/count', groups: '/api/v1/social/groups', groupsCount: '/api/v1/social/groups/count' }, }, // 小程序特有配置 miniprogram: { // 页面路径 pages: { splash: '/pages/splash/splash', login: '/pages/login/login', main: '/pages/main/main', map: '/pages/map/map', friends: '/pages/social/friends/friends', message: '/pages/message/message', profile: '/subpackages/profile/profile/profile' }, // 主题配置 theme: { primaryColor: '#3cc51f', backgroundColor: '#F5F5F5', textColor: '#333333', subTextColor: '#999999' }, // 地图配置 map: { defaultZoom: 16, minZoom: 3, maxZoom: 20, showLocation: true, showScale: true, showCompass: true } }, // 调试配置 debug: { enabled: true, showLog: true, mockData: false } }; module.exports = mergeDeep(baseConfig, privateConfig);