65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
from pydantic_settings import BaseSettings
|
|
from typing import Optional
|
|
import os
|
|
from pathlib import Path
|
|
|
|
class Settings(BaseSettings):
|
|
# API Settings
|
|
API_V1_STR: str = "/api/v1"
|
|
PROJECT_NAME: str = "Legal Document Masker API"
|
|
|
|
# Security
|
|
SECRET_KEY: str = "your-secret-key-here" # Change in production
|
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 8 # 8 days
|
|
|
|
# Database
|
|
BASE_DIR: Path = Path(__file__).parent.parent.parent
|
|
DATABASE_URL: str = f"sqlite:///{BASE_DIR}/storage/legal_doc_masker.db"
|
|
|
|
# File Storage
|
|
UPLOAD_FOLDER: Path = BASE_DIR / "storage" / "uploads"
|
|
PROCESSED_FOLDER: Path = BASE_DIR / "storage" / "processed"
|
|
MAX_FILE_SIZE: int = 50 * 1024 * 1024 # 50MB
|
|
ALLOWED_EXTENSIONS: set = {"pdf", "docx", "doc", "md"}
|
|
|
|
# Celery
|
|
CELERY_BROKER_URL: str = "redis://redis:6379/0"
|
|
CELERY_RESULT_BACKEND: str = "redis://redis:6379/0"
|
|
|
|
# Ollama API settings
|
|
OLLAMA_API_URL: str = "https://api.ollama.com"
|
|
OLLAMA_API_KEY: str = ""
|
|
OLLAMA_MODEL: str = "llama2"
|
|
|
|
# Mineru API settings
|
|
MINERU_API_URL: str = "http://mineru-api:8000"
|
|
# MINERU_API_URL: str = "http://host.docker.internal:8001"
|
|
|
|
MINERU_TIMEOUT: int = 300 # 5 minutes timeout
|
|
MINERU_LANG_LIST: list = ["ch"] # Language list for parsing
|
|
MINERU_BACKEND: str = "pipeline" # Backend to use
|
|
MINERU_PARSE_METHOD: str = "auto" # Parse method
|
|
MINERU_FORMULA_ENABLE: bool = True # Enable formula parsing
|
|
MINERU_TABLE_ENABLE: bool = True # Enable table parsing
|
|
|
|
# Logging settings
|
|
LOG_LEVEL: str = "INFO"
|
|
LOG_FORMAT: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
LOG_DATE_FORMAT: str = "%Y-%m-%d %H:%M:%S"
|
|
LOG_FILE: str = "app.log"
|
|
|
|
class Config:
|
|
case_sensitive = True
|
|
env_file = ".env"
|
|
env_file_encoding = "utf-8"
|
|
extra = "allow"
|
|
|
|
def __init__(self, **kwargs):
|
|
super().__init__(**kwargs)
|
|
# Create storage directories if they don't exist
|
|
self.UPLOAD_FOLDER.mkdir(parents=True, exist_ok=True)
|
|
self.PROCESSED_FOLDER.mkdir(parents=True, exist_ok=True)
|
|
# Create storage directory for database
|
|
(self.BASE_DIR / "storage").mkdir(parents=True, exist_ok=True)
|
|
|
|
settings = Settings() |