imetting_backend/app/core/config.py

107 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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')
# 转录轮询配置 - 用于 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分钟
}
# 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
}
#首页TimeLine每页数量
TIMELINE_PAGESIZE=10