feat: 完成情绪博物馆项目重构和功能增强 - 新增日记评论和帖子功能 - 重构前端架构,优化用户体验 - 完善WebSocket通信机制 - 更新项目文档和部署配置

This commit is contained in:
2025-07-27 10:05:59 +08:00
parent 6903ac1c0d
commit cc886cd4d5
126 changed files with 21179 additions and 15734 deletions
+155
View File
@@ -0,0 +1,155 @@
/**
* 环境配置
* 根据不同环境加载对应的配置文件
*/
// 环境类型
export type EnvType = 'local' | 'dev' | 'test' | 'prod'
// 环境配置接口
export interface EnvConfig {
// 环境名称
name: string
// API基础URL
apiBaseUrl: string
// WebSocket URL
wsBaseUrl: string
// 文件上传URL
uploadUrl: string
// 是否开启调试模式
debug: boolean
// 是否开启mock
mock: boolean
// 应用标题
appTitle: string
// 应用版本
appVersion: string
}
// 获取当前环境
export const getCurrentEnv = (): EnvType => {
// 从环境变量获取,默认为local
const env = import.meta.env.VITE_APP_ENV as EnvType
return env || 'local'
}
// 获取环境配置
export const getEnvConfig = (): EnvConfig => {
const env = getCurrentEnv()
// 调试信息:打印所有环境变量
console.log('当前环境:', env)
console.log('所有环境变量:', import.meta.env)
// 优先使用环境变量,如果没有则使用默认值
const apiBaseUrl = import.meta.env.VITE_API_BASE_URL
const wsBaseUrl = import.meta.env.VITE_WS_BASE_URL
const uploadUrl = import.meta.env.VITE_UPLOAD_URL
const debug = import.meta.env.VITE_DEBUG === 'true'
const mock = import.meta.env.VITE_MOCK === 'true'
const appTitle = import.meta.env.VITE_APP_TITLE
const appVersion = import.meta.env.VITE_APP_VERSION || '1.0.0'
console.log('环境变量解析结果:', {
apiBaseUrl,
wsBaseUrl,
uploadUrl,
debug,
mock,
appTitle,
appVersion
})
// 如果环境变量存在,直接使用
if (apiBaseUrl) {
return {
name: getEnvironmentName(env),
apiBaseUrl,
wsBaseUrl: wsBaseUrl || apiBaseUrl.replace('http', 'ws').replace('/api', ''),
uploadUrl: uploadUrl || `${apiBaseUrl}/upload`,
debug,
mock,
appTitle: appTitle || `情绪博物馆 - ${getEnvironmentName(env)}`,
appVersion
}
}
// 如果没有环境变量,使用默认配置
switch (env) {
case 'local':
return {
name: '本地环境',
apiBaseUrl: 'http://localhost:19089/api',
wsBaseUrl: 'ws://localhost:19089/api',
uploadUrl: 'http://localhost:19089/api/upload',
debug: true,
mock: false,
appTitle: '情绪博物馆 - 本地',
appVersion: '1.0.0'
}
case 'dev':
return {
name: '开发环境',
apiBaseUrl: 'http://localhost:19089/api',
wsBaseUrl: 'ws://localhost:19089/api',
uploadUrl: 'http://localhost:19089/api/upload',
debug: true,
mock: false,
appTitle: '情绪博物馆 - 开发',
appVersion: '1.0.0'
}
case 'test':
return {
name: '测试环境',
apiBaseUrl: 'http://test.emotion-museum.com/api',
wsBaseUrl: 'ws://test.emotion-museum.com',
uploadUrl: 'http://test.emotion-museum.com/api/upload',
debug: false,
mock: false,
appTitle: '情绪博物馆 - 测试',
appVersion: '1.0.0'
}
case 'prod':
return {
name: '生产环境',
apiBaseUrl: 'https://api.emotion-museum.com/api',
wsBaseUrl: 'wss://api.emotion-museum.com',
uploadUrl: 'https://api.emotion-museum.com/api/upload',
debug: false,
mock: false,
appTitle: '情绪博物馆',
appVersion: '1.0.0'
}
default:
throw new Error(`未知的环境类型: ${env}`)
}
}
// 获取环境名称
const getEnvironmentName = (env: EnvType): string => {
switch (env) {
case 'local': return '本地环境'
case 'dev': return '开发环境'
case 'test': return '测试环境'
case 'prod': return '生产环境'
default: return '未知环境'
}
}
// 导出当前环境配置
export const envConfig = getEnvConfig()
// 导出常用配置
export const {
apiBaseUrl,
wsBaseUrl,
uploadUrl,
debug,
mock,
appTitle,
appVersion
} = envConfig