2025-08-05 01:46:40 +00:00
|
|
|
|
import os
|
2025-10-31 06:54:54 +00:00
|
|
|
|
import json
|
2025-08-05 01:46:40 +00:00
|
|
|
|
from pathlib import Path
|
2026-01-16 09:47:56 +00:00
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
|
|
|
|
|
|
# 加载 .env 文件
|
|
|
|
|
|
env_path = Path(__file__).parent.parent.parent / ".env"
|
|
|
|
|
|
load_dotenv(dotenv_path=env_path)
|
2025-08-05 01:46:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 基础路径配置
|
|
|
|
|
|
BASE_DIR = Path(__file__).parent.parent.parent
|
|
|
|
|
|
UPLOAD_DIR = BASE_DIR / "uploads"
|
|
|
|
|
|
AUDIO_DIR = UPLOAD_DIR / "audio"
|
2025-12-11 08:48:12 +00:00
|
|
|
|
TEMP_UPLOAD_DIR = UPLOAD_DIR / "temp_audio"
|
2025-08-06 07:07:02 +00:00
|
|
|
|
MARKDOWN_DIR = UPLOAD_DIR / "markdown"
|
2025-12-18 11:58:38 +00:00
|
|
|
|
CLIENT_DIR = UPLOAD_DIR / "clients"
|
2026-01-16 02:07:41 +00:00
|
|
|
|
EXTERNAL_APPS_DIR = UPLOAD_DIR / "external_apps"
|
|
|
|
|
|
USER_DIR = UPLOAD_DIR / "user"
|
|
|
|
|
|
VOICEPRINT_DIR = USER_DIR / "voiceprint"
|
|
|
|
|
|
AVATAR_DIR = USER_DIR / "avatar"
|
2025-08-05 01:46:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 文件上传配置
|
|
|
|
|
|
ALLOWED_EXTENSIONS = {".mp3", ".wav", ".m4a", ".mpeg", ".mp4"}
|
2025-08-06 07:07:02 +00:00
|
|
|
|
ALLOWED_IMAGE_EXTENSIONS = {".jpg", ".jpeg", ".png", ".gif", ".webp"}
|
2025-10-31 06:54:54 +00:00
|
|
|
|
ALLOWED_VOICEPRINT_EXTENSIONS = {".wav"}
|
2025-12-18 11:58:38 +00:00
|
|
|
|
ALLOWED_CLIENT_EXTENSIONS = {".apk", ".exe", ".dmg", ".deb", ".rpm", ".pkg", ".msi", ".zip", ".tar.gz"}
|
2025-08-05 01:46:40 +00:00
|
|
|
|
MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB
|
2025-08-06 07:07:02 +00:00
|
|
|
|
MAX_IMAGE_SIZE = 10 * 1024 * 1024 # 10MB
|
2025-12-18 11:58:38 +00:00
|
|
|
|
MAX_CLIENT_SIZE = 500 * 1024 * 1024 # 500MB for client installers
|
2025-08-05 01:46:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 确保上传目录存在
|
|
|
|
|
|
UPLOAD_DIR.mkdir(exist_ok=True)
|
|
|
|
|
|
AUDIO_DIR.mkdir(exist_ok=True)
|
2025-08-06 07:07:02 +00:00
|
|
|
|
MARKDOWN_DIR.mkdir(exist_ok=True)
|
2025-12-18 11:58:38 +00:00
|
|
|
|
CLIENT_DIR.mkdir(exist_ok=True)
|
2026-01-16 02:07:41 +00:00
|
|
|
|
EXTERNAL_APPS_DIR.mkdir(exist_ok=True)
|
|
|
|
|
|
USER_DIR.mkdir(exist_ok=True)
|
|
|
|
|
|
VOICEPRINT_DIR.mkdir(exist_ok=True)
|
|
|
|
|
|
AVATAR_DIR.mkdir(exist_ok=True)
|
|
|
|
|
|
|
2025-08-05 01:46:40 +00:00
|
|
|
|
|
|
|
|
|
|
# 数据库配置
|
|
|
|
|
|
DATABASE_CONFIG = {
|
2026-01-16 09:47:56 +00:00
|
|
|
|
'host': os.getenv('DB_HOST', '127.0.0.1'),
|
2025-08-05 01:46:40 +00:00
|
|
|
|
'user': os.getenv('DB_USER', 'root'),
|
2026-01-16 09:47:56 +00:00
|
|
|
|
'password': os.getenv('DB_PASSWORD', ''),
|
2026-01-16 02:07:41 +00:00
|
|
|
|
'database': os.getenv('DB_NAME', 'imeeting'),
|
2025-08-05 01:46:40 +00:00
|
|
|
|
'port': int(os.getenv('DB_PORT', '3306')),
|
|
|
|
|
|
'charset': 'utf8mb4'
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# API配置
|
|
|
|
|
|
API_CONFIG = {
|
|
|
|
|
|
'host': os.getenv('API_HOST', '0.0.0.0'),
|
2025-09-03 10:11:07 +00:00
|
|
|
|
'port': int(os.getenv('API_PORT', '8000'))
|
2025-08-25 03:31:24 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 七牛云配置
|
2026-01-16 09:47:56 +00:00
|
|
|
|
# QINIU_ACCESS_KEY = os.getenv('QINIU_ACCESS_KEY', 'A0tp96HCtg-wZCughTgi5vc2pJnw3btClwxRE_e8')
|
|
|
|
|
|
# QINIU_SECRET_KEY = os.getenv('QINIU_SECRET_KEY', 'Lj-MSHpaVbmzpS86kMIjmwikvYOT9iPBjCk9hm6k')
|
|
|
|
|
|
# QINIU_BUCKET = os.getenv('QINIU_BUCKET', 'imeeting_dev')
|
|
|
|
|
|
# QINIU_DOMAIN = os.getenv('QINIU_DOMAIN', 't0vogyxkz.hn-bkt.clouddn.com')
|
2025-08-25 03:31:24 +00:00
|
|
|
|
|
2025-08-28 08:02:59 +00:00
|
|
|
|
# 应用配置
|
|
|
|
|
|
APP_CONFIG = {
|
2026-01-16 09:47:56 +00:00
|
|
|
|
'base_url': os.getenv('BASE_URL', 'http://imeeting.unisspace.com')
|
2025-08-28 08:02:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Redis配置
|
|
|
|
|
|
REDIS_CONFIG = {
|
2026-01-16 09:47:56 +00:00
|
|
|
|
'host': os.getenv('REDIS_HOST', '127.0.0.1'),
|
2025-08-28 08:02:59 +00:00
|
|
|
|
'port': int(os.getenv('REDIS_PORT', '6379')),
|
|
|
|
|
|
'db': int(os.getenv('REDIS_DB', '0')),
|
2026-01-16 02:07:41 +00:00
|
|
|
|
'password': os.getenv('REDIS_PASSWORD', ''),
|
2025-08-28 08:02:59 +00:00
|
|
|
|
'decode_responses': True
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-25 03:31:24 +00:00
|
|
|
|
# Dashscope (Tongyi Qwen) API Key
|
2025-08-26 13:57:16 +00:00
|
|
|
|
QWEN_API_KEY = os.getenv('QWEN_API_KEY', 'sk-c2bf06ea56b4491ea3d1e37fdb472b8f')
|
|
|
|
|
|
|
2025-11-24 15:10:06 +00:00
|
|
|
|
# 转录轮询配置 - 用于 upload-audio-complete 接口
|
|
|
|
|
|
TRANSCRIPTION_POLL_CONFIG = {
|
|
|
|
|
|
'poll_interval': int(os.getenv('TRANSCRIPTION_POLL_INTERVAL', '10')), # 轮询间隔:10秒
|
|
|
|
|
|
'max_wait_time': int(os.getenv('TRANSCRIPTION_MAX_WAIT_TIME', '1800')), # 最大等待:30分钟
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-07 09:12:29 +00:00
|
|
|
|
|