TaskPulse/backend/app/config.py
Steven 521cf0269c feat: initial TaskPulse release
AI Agent 定时任务跟踪、监控、状态看板系统。

- FastAPI + Vue3 单体应用
- AI Agent 一键接入(批量注册 API)
- 暗色主题 Dashboard
- 后台调度器 + 超时告警
- 飞书/邮件/Webhook 多渠道通知
- Base URL 可配置
- Gunicorn 生产部署
2026-06-14 22:39:23 +08:00

50 lines
1.4 KiB
Python

"""Application configuration via environment variables."""
import urllib.parse
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
# Database (internal network)
DB_HOST: str = "192.168.8.160"
DB_PORT: int = 3306
DB_USER: str = "dbuser"
DB_PASSWORD: str = "Tata@1234"
DB_NAME: str = "taskpulse"
# App
APP_HOST: str = "0.0.0.0"
APP_PORT: int = 8000
DEBUG: bool = True
# Secret
SECRET_KEY: str = "change-me-in-production"
# Scheduler
SCHEDULER_CHECK_INTERVAL: int = 60 # seconds
TASK_GRACE_PERIOD: int = 300 # seconds — how long after expected start before alerting
# Notifications
FEISHU_WEBHOOK_URL: str = ""
SMTP_HOST: str = ""
SMTP_PORT: int = 587
SMTP_USER: str = ""
SMTP_PASSWORD: str = ""
SMTP_FROM: str = "taskpulse@example.com"
@property
def DATABASE_URL(self) -> str:
pwd = urllib.parse.quote_plus(self.DB_PASSWORD)
return f"mysql+aiomysql://{self.DB_USER}:{pwd}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
@property
def DATABASE_URL_SYNC(self) -> str:
pwd = urllib.parse.quote_plus(self.DB_PASSWORD)
return f"mysql+pymysql://{self.DB_USER}:{pwd}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}?charset=utf8mb4"
model_config = {"env_prefix": "TASKPULSE_", "env_file": ".env"}
settings = Settings()