AI Agent 定时任务跟踪、监控、状态看板系统。 - FastAPI + Vue3 单体应用 - AI Agent 一键接入(批量注册 API) - 暗色主题 Dashboard - 后台调度器 + 超时告警 - 飞书/邮件/Webhook 多渠道通知 - Base URL 可配置 - Gunicorn 生产部署
50 lines
1.4 KiB
Python
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()
|