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:
Mireya Cueto Garrido
2026-03-25 13:42:09 +01:00
parent 9a8ddf5328
commit e79c6df2ba
18 changed files with 489 additions and 210 deletions
@@ -0,0 +1,38 @@
def compute_value_function(request):
levels = request.levels
cards = request.blank_cards
refs = request.references
p, q = sorted(int(k) for k in refs)
up, uq = refs[str(p)], refs[str(q)]
if len(levels) < 3:
raise ValueError("Mínimo debe haber 3 niveles para esta funcionalidad.")
total_units = sum(cards[i] + 1 for i in range(p, q))
if total_units == 0:
raise ValueError("Las cartas no pueden generar 0 unidades.")
alpha = (uq - up) / total_units
values = [0] * len(levels)
values[p] = up
for i in range(p + 1, len(levels)):
units = sum(cards[r] + 1 for r in range(p, i))
values[i] = up + alpha * units
for i in range(p - 1, -1, -1):
units = sum(cards[r] + 1 for r in range(i, p))
values[i] = up - alpha * units
return {
"criterion_name": request.criterion_name,
"values": {levels[i]: round(values[i], 4) for i in range(len(levels))}
}
def compute_points(request):
result = compute_value_function(request)
values = list(result["values"].values())
return {"points": [{"x": i, "y": values[i]} for i in range(len(values))]}