/
baelorsw
/
Alarma_Engine
Обзор
Документация
Войти
/
baelorsw
/
Alarma_Engine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
api/app.py
60 строк
2 KB
baelorsw
вывод в дащборд, нудно разобраться с временами
12 май 2026, 00:18
12 май 2026, 00:18
90bd2aa
Код
Авторство
О чём код?
# api/app.py from fastapi import FastAPI, Depends from sqlalchemy.orm import Session from datetime import datetime import sys import os from typing import List from pydantic import BaseModel sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from engine.database import Base, engine, get_db, Request from engine.analyzer import analyze_query # Модель для входа class SubmitRequest(BaseModel): text: str # Модель для выхода (snake_case) class RequestResponse(BaseModel): id: int text: str category: str urgency: str created_at: datetime sla_deadline: datetime status: str class Config: from_attributes = True # Вместо orm_mode в новых версиях Pydantic app = FastAPI(title="SLA Engine API") Base.metadata.create_all(bind=engine) @app.post("/submit", response_model=RequestResponse) def submit_request(request: SubmitRequest, db: Session = Depends(get_db)): analysis = analyze_query(request.text) db_request = Request( text=request.text, # ← snake_case category=analysis["category"], urgency=analysis["urgency"], sla_deadline=analysis["deadline"] ) db.add(db_request) db.commit() db.refresh(db_request) # Возвращаем ORM-объект → FastAPI сам сконвертирует через модель return db_request @app.get("/requests", response_model=List[RequestResponse]) def get_requests(db: Session = Depends(get_db)): return db.query(Request).all()