- 01-infra/nginx-configs: add MinIO /minio/ and /minio-console/ location blocks (port 9000 S3 API, port 9001 Console UI, path stripping via rewrite) - 03-apiservice: integrate MinIO minio-python SDK for file upload - requirements.txt: add minio==7.2.11 - app/core/config.py: add MINIO_ENDPOINT, ACCESS_KEY, SECRET_KEY, BUCKET_FINANCE, USE_SSL - app/services/minio_client.py: new — upload_file(), get_presigned_url(), delete_file() - app/routes/pages.py: replace local /data/uploads/ write with MinIO upload to finance bucket - docker-compose.yml: pass MinIO env vars to container - .env.example: document MinIO vars - 07-minio/.env.example: add MINIO_SVC_ACCESS_KEY/SECRET_KEY section - 07-minio/README.md: add Python minio SDK and Airflow DAG usage guide - CLAUDE.md: project context (servers, SSH, paths, service distribution) - document-obsidiant/: initial Obsidian docs for all services
60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
model_config = SettingsConfigDict(env_file=".env", extra="ignore")
|
|
|
|
APP_NAME: str = "APIsService"
|
|
|
|
DB_HOST: str
|
|
DB_PORT: int = 5432
|
|
DB_USER: str
|
|
DB_PASSWORD: str
|
|
DB_NAME: str
|
|
DB_SSLMODE: str = "prefer"
|
|
|
|
SUPABASE_DB_HOST: str
|
|
SUPABASE_DB_PORT: int = 5432
|
|
SUPABASE_DB_USER: str
|
|
SUPABASE_DB_PASSWORD: str
|
|
SUPABASE_DB_NAME: str
|
|
SUPABASE_DB_SSLMODE: str = "disable"
|
|
|
|
SUPABASE_API_URL: str
|
|
SUPABASE_API_KEY: str
|
|
|
|
ROOT_PATH: str = ""
|
|
|
|
TIMEZONE: str = "Asia/Bangkok"
|
|
|
|
ADMIN_SECRET_KEY: str
|
|
ADMIN_USERNAME: str
|
|
ADMIN_PASSWORD: str
|
|
|
|
API_KEY_ENC_SECRET: str | None = None
|
|
|
|
# Debug settings
|
|
DEBUG_AUTH: bool = False # Set to True to enable detailed authentication logging
|
|
|
|
# Keycloak Authentication (for web pages only)
|
|
KEYCLOAK_SERVER_URL: str = "http://keycloak:8080"
|
|
KEYCLOAK_REALM: str = "master"
|
|
KEYCLOAK_CLIENT_ID: str = "apiservice"
|
|
KEYCLOAK_CLIENT_SECRET: str = ""
|
|
KEYCLOAK_REDIRECT_URI: str = "http://localhost:8040/apiservice/auth/callback"
|
|
|
|
# Airflow Integration
|
|
AIRFLOW_API_URL: str = "http://airflow-webserver:8080"
|
|
AIRFLOW_API_TOKEN: str = ""
|
|
AIRFLOW_DAG_ID_FINANCE: str = "process_finance_excel"
|
|
|
|
# MinIO Object Storage
|
|
MINIO_ENDPOINT: str = "192.168.100.9:9000"
|
|
MINIO_ACCESS_KEY: str = ""
|
|
MINIO_SECRET_KEY: str = ""
|
|
MINIO_BUCKET_FINANCE: str = "finance"
|
|
MINIO_USE_SSL: bool = False
|
|
|
|
|
|
settings = Settings()
|