Files
FilesReadSystem/backend/app/config.py
KiriAky 107 8e1ddb8aff ```
feat(config): 添加RAG/Embedding配置选项

- 新增EMBEDDING_MODEL配置项,默认值为"all-MiniLM-L6-v2"
- 用于支持RAG服务的嵌入模型配置

feat(database): 增强MySQL数据库初始化功能

- 实现数据库自动创建功能,若数据库不存在则自动创建
- 使用临时连接在不指定数据库的情况下执行CREATE DATABASE语句
- 支持utf8mb4字符集和排序规则设置

refactor(excel): 优化Excel表创建逻辑

- 将表创建方式从ORM模型改为原生SQL语句
- 提高异步操作的兼容性
- 增加自动时间戳字段(created_at, updated_at)

feat(rag): 增强RAG服务嵌入模型错误处理

- 添加嵌入模型加载异常处理机制
- 当配置的模型加载失败时自动回退到默认模型
- 改进日志记录,提供更详细的初始化信息
```
2026-04-02 02:42:03 +08:00

72 lines
2.3 KiB
Python

from pydantic_settings import BaseSettings, SettingsConfigDict
from pathlib import Path
class Settings(BaseSettings):
# 应用基础配置
APP_NAME: str = "FilesReadSystem"
DEBUG: bool = True
API_V1_STR: str = "/api/v1"
# ==================== 数据库配置 ====================
# MongoDB 配置 (非结构化数据存储)
MONGODB_URL: str = "mongodb://localhost:27017"
MONGODB_DB_NAME: str = "document_system"
# MySQL 配置 (结构化数据存储)
MYSQL_HOST: str = "localhost"
MYSQL_PORT: int = 3306
MYSQL_USER: str = "root"
MYSQL_PASSWORD: str = ""
MYSQL_DATABASE: str = "document_system"
MYSQL_CHARSET: str = "utf8mb4"
# Redis 配置 (缓存/任务队列)
REDIS_URL: str = "redis://localhost:6379/0"
# ==================== AI 相关配置 ====================
LLM_API_KEY: str = ""
LLM_BASE_URL: str = "https://api.minimax.chat"
LLM_MODEL_NAME: str = "MiniMax-Text-01"
# ==================== RAG/Embedding 配置 ====================
EMBEDDING_MODEL: str = "all-MiniLM-L6-v2"
# ==================== Supabase 配置 ====================
SUPABASE_URL: str = ""
SUPABASE_ANON_KEY: str = ""
SUPABASE_SERVICE_KEY: str = ""
# ==================== 文件路径配置 ====================
BASE_DIR: Path = Path(__file__).resolve().parent.parent.parent
UPLOAD_DIR: str = "data/uploads"
# ==================== RAG/向量数据库配置 ====================
FAISS_INDEX_DIR: str = "data/faiss"
# 允许 Pydantic 从 .env 文件读取
model_config = SettingsConfigDict(
env_file=Path(__file__).parent.parent / ".env",
env_file_encoding='utf-8',
extra='ignore'
)
@property
def mysql_url(self) -> str:
"""生成MySQL连接URL (同步)"""
return (
f"mysql+pymysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}"
f"@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DATABASE}"
f"?charset={self.MYSQL_CHARSET}"
)
@property
def async_mysql_url(self) -> str:
"""生成MySQL连接URL (异步)"""
return (
f"mysql+aiomysql://{self.MYSQL_USER}:{self.MYSQL_PASSWORD}"
f"@{self.MYSQL_HOST}:{self.MYSQL_PORT}/{self.MYSQL_DATABASE}"
f"?charset={self.MYSQL_CHARSET}"
)
settings = Settings()