import os import json from pathlib import Path # 基础路径配置 BASE_DIR = Path(__file__).parent.parent.parent UPLOAD_DIR = BASE_DIR / "uploads" AUDIO_DIR = UPLOAD_DIR / "audio" MARKDOWN_DIR = UPLOAD_DIR / "markdown" VOICEPRINT_DIR = UPLOAD_DIR / "voiceprint" # 文件上传配置 ALLOWED_EXTENSIONS = {".mp3", ".wav", ".m4a", ".mpeg", ".mp4"} ALLOWED_IMAGE_EXTENSIONS = {".jpg", ".jpeg", ".png", ".gif", ".webp"} ALLOWED_VOICEPRINT_EXTENSIONS = {".wav"} MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB MAX_IMAGE_SIZE = 10 * 1024 * 1024 # 10MB # 确保上传目录存在 UPLOAD_DIR.mkdir(exist_ok=True) AUDIO_DIR.mkdir(exist_ok=True) MARKDOWN_DIR.mkdir(exist_ok=True) VOICEPRINT_DIR.mkdir(exist_ok=True) # 数据库配置 DATABASE_CONFIG = { 'host': os.getenv('DB_HOST', '10.100.51.161'), 'user': os.getenv('DB_USER', 'root'), 'password': os.getenv('DB_PASSWORD', 'sagacity'), 'database': os.getenv('DB_NAME', 'imeeting_dev'), 'port': int(os.getenv('DB_PORT', '3306')), 'charset': 'utf8mb4' } # API配置 API_CONFIG = { 'host': os.getenv('API_HOST', '0.0.0.0'), 'port': int(os.getenv('API_PORT', '8000')) } # 七牛云配置 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') QINIU_DOMAIN = os.getenv('QINIU_DOMAIN', 't0vogyxkz.hn-bkt.clouddn.com') # 应用配置 APP_CONFIG = { 'base_url': os.getenv('BASE_URL', 'http://dev.imeeting.unisspace.com') } # Redis配置 REDIS_CONFIG = { 'host': os.getenv('REDIS_HOST', '10.100.51.161'), 'port': int(os.getenv('REDIS_PORT', '6379')), 'db': int(os.getenv('REDIS_DB', '0')), 'password': os.getenv('REDIS_PASSWORD', None), 'decode_responses': True } # Dashscope (Tongyi Qwen) API Key QWEN_API_KEY = os.getenv('QWEN_API_KEY', 'sk-c2bf06ea56b4491ea3d1e37fdb472b8f') # LLM配置 - 阿里Qwen3大模型 LLM_CONFIG = { 'model_name': os.getenv('LLM_MODEL_NAME', 'qwen-plus'), 'time_out': int(os.getenv('LLM_TIMEOUT', '120')), 'temperature': float(os.getenv('LLM_TEMPERATURE', '0.7')), 'top_p': float(os.getenv('LLM_TOP_P', '0.9')), 'system_prompt': """你是一个专业的会议记录分析助手。请根据提供的会议转录内容,生成简洁明了的会议总结。 总结应该包括以下几个部分: 1. 会议概述 - 简要说明会议的主要目的和背景 2. 主要讨论点 - 列出会议中讨论的重要话题和内容 3. 决策事项 - 明确记录会议中做出的决定和结论 4. 待办事项 - 列出需要后续跟进的任务和责任人 5. 关键信息 - 其他重要的信息点 要求: - 保持客观中性,不添加个人观点 - 使用简洁的中文表达 - 按重要性排序各项内容 - 如果某个部分没有相关内容,可以说明"无相关内容" - 总字数控制在500字以内""" } # 密码重置配置 DEFAULT_RESET_PASSWORD = os.getenv('DEFAULT_RESET_PASSWORD', '111111') # 加载系统配置文件 # 默认声纹配置 VOICEPRINT_CONFIG = { "template_text": "我正在进行声纹采集,这段语音将用于身份识别和验证。\n\n声纹技术能够准确识别每个人独特的声音特征。", "duration_seconds": 12, "sample_rate": 16000, "channels": 1 }