Añadidos endpoints de validación, organización del backend en subcarpetas y archivos y añadido el control de errores http.
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from models.docmf_models import DoCMFRequest
|
||||
from services.docmf_build_service import build_docmf
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/build")
|
||||
def build(request: DoCMFRequest):
|
||||
try:
|
||||
return build_docmf(request)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
@@ -0,0 +1,12 @@
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from models.evaluation_models import EvaluationRequest
|
||||
from services.docmf_evaluate_service import evaluate_docmf
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/evaluate")
|
||||
def evaluate(request: EvaluationRequest):
|
||||
try:
|
||||
return evaluate_docmf(request)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
@@ -0,0 +1,38 @@
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from models.docmf_simple_validation_models import SimpleValidationRequest
|
||||
from services.docmf_simple_validation_service import validate_simple_levels
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/validate-simple")
|
||||
def validate_simple_docmf(request: SimpleValidationRequest):
|
||||
results = validate_simple_levels(request.levels)
|
||||
invalid = [r for r in results if not r["valid"]]
|
||||
|
||||
# Caso: un solo nivel
|
||||
if len(request.levels) == 1:
|
||||
if invalid:
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
detail={
|
||||
"message": "El nivel es incorrecto.",
|
||||
"errors": invalid[0]["errors"]
|
||||
}
|
||||
)
|
||||
return {
|
||||
"message": "El nivel es correcto.",
|
||||
"details": results[0]
|
||||
}
|
||||
|
||||
# Caso: varios niveles
|
||||
if invalid:
|
||||
return {
|
||||
"message": "Validación completada.",
|
||||
"valid_levels": [r for r in results if r["valid"]],
|
||||
"invalid_levels": invalid
|
||||
}
|
||||
|
||||
return {
|
||||
"message": "Todos los niveles son correctos.",
|
||||
"results": results
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from models.docmf_validation_models import ValidationRequest
|
||||
from services.docmf_validation_service import validate_levels
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/validate")
|
||||
def validate_docmf_levels(request: ValidationRequest):
|
||||
results = validate_levels(request.levels)
|
||||
|
||||
invalid = [r for r in results if not r["valid"]]
|
||||
|
||||
if len(request.levels) == 1:
|
||||
# Caso de un solo nivel
|
||||
if invalid:
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
detail={
|
||||
"message": "El nivel es incorrecto.",
|
||||
"errors": invalid[0]["errors"]
|
||||
}
|
||||
)
|
||||
return {
|
||||
"message": "El nivel es correcto.",
|
||||
"details": results[0]
|
||||
}
|
||||
|
||||
# Caso de varios niveles
|
||||
if invalid:
|
||||
return {
|
||||
"message": "Validación completada.",
|
||||
"valid_levels": [r for r in results if r["valid"]],
|
||||
"invalid_levels": invalid
|
||||
}
|
||||
|
||||
return {
|
||||
"message": "Todos los niveles son correctos.",
|
||||
"results": results
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from models.value_function_models import ValueFunctionRequest
|
||||
from services.value_function_service import compute_value_function, compute_points
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/value-function")
|
||||
def value_function(request: ValueFunctionRequest):
|
||||
try:
|
||||
return compute_value_function(request)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@router.post("/value-function/points")
|
||||
def value_function_points(request: ValueFunctionRequest):
|
||||
try:
|
||||
return compute_points(request)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
Reference in New Issue
Block a user