feat: 初始化告警平台后端项目

- 创建 FastAPI 项目结构
- 实现告警数据模型(SQLAlchemy)
- 实现 multipart/form-data 告警接收接口
- 实现阿里云 OSS 图片上传模块
- 实现告警查询和处理 API
- 实现异步大模型分析模块
This commit is contained in:
2026-02-02 09:40:02 +08:00
commit baa895a6f1
14 changed files with 1069 additions and 0 deletions

69
app/config.py Normal file
View File

@@ -0,0 +1,69 @@
import os
from pathlib import Path
from typing import Optional
from dataclasses import dataclass
from pydantic import BaseModel
@dataclass
class DatabaseConfig:
url: str = "sqlite:///./data/alert_platform.db"
@dataclass
class OSSConfig:
access_key_id: str = ""
access_key_secret: str = ""
endpoint: str = "oss-cn-hangzhou.aliyuncs.com"
bucket_name: str = ""
url_prefix: str = ""
@dataclass
class AppConfig:
host: str = "0.0.0.0"
port: int = 8000
debug: bool = True
@dataclass
class AIModelConfig:
endpoint: str = ""
api_key: str = ""
class Settings(BaseModel):
database: DatabaseConfig = DatabaseConfig()
oss: OSSConfig = OSSConfig()
app: AppConfig = AppConfig()
ai_model: AIModelConfig = AIModelConfig()
def load_settings() -> Settings:
from dotenv import load_dotenv
load_dotenv()
return Settings(
database=DatabaseConfig(
url=os.getenv("DATABASE_URL", "sqlite:///./data/alert_platform.db"),
),
oss=OSSConfig(
access_key_id=os.getenv("OSS_ACCESS_KEY_ID", ""),
access_key_secret=os.getenv("OSS_ACCESS_KEY_SECRET", ""),
endpoint=os.getenv("OSS_ENDPOINT", "oss-cn-hangzhou.aliyuncs.com"),
bucket_name=os.getenv("OSS_BUCKET_NAME", ""),
url_prefix=os.getenv("OSS_URL_PREFIX", ""),
),
app=AppConfig(
host=os.getenv("APP_HOST", "0.0.0.0"),
port=int(os.getenv("APP_PORT", "8000")),
debug=os.getenv("DEBUG", "true").lower() == "true",
),
ai_model=AIModelConfig(
endpoint=os.getenv("AI_MODEL_ENDPOINT", ""),
api_key=os.getenv("AI_MODEL_API_KEY", ""),
),
)
settings = load_settings()