refactor: remove commented sections and clean up code in various files
This commit is contained in:
@@ -16,9 +16,6 @@ from api.routers.test_mongo import router as test_mongo_router
|
||||
from api.routers.docit2mf_build import router as docit2mf_router
|
||||
from api.routers.google_auth import router as google_auth_router
|
||||
|
||||
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
yield
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
# models/docit2mf_models.py
|
||||
|
||||
from pydantic import BaseModel, Field, field_validator, ValidationInfo
|
||||
from typing import List, Tuple, Union
|
||||
|
||||
|
||||
BlankCardInput = Union[int, Tuple[int, int], List[int]]
|
||||
|
||||
|
||||
class DoCIT2MFRequest(BaseModel):
|
||||
term: str
|
||||
core: tuple[float, float] = Field(..., description="Núcleo del conjunto difuso: [a, b]")
|
||||
|
||||
@@ -1,13 +1,8 @@
|
||||
# api/models/user_models.py
|
||||
|
||||
from typing import List, Optional, Union
|
||||
from pydantic import BaseModel, EmailStr, Field
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# MODELOS DE FUNCIONES DIFUSAS
|
||||
# -----------------------------
|
||||
|
||||
class FuzzyTerm(BaseModel):
|
||||
term: str
|
||||
@@ -23,9 +18,7 @@ class IT2FuzzyTerm(BaseModel):
|
||||
upper: FuzzyTerm
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# HISTORIAL
|
||||
# -----------------------------
|
||||
|
||||
class HistoryItem(BaseModel):
|
||||
id: Optional[str] = Field(default=None, alias="_id")
|
||||
@@ -39,9 +32,7 @@ class HistoryCreateRequest(BaseModel):
|
||||
results: List[Union[FuzzyTerm, IT2FuzzyTerm]]
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# USUARIOS
|
||||
# -----------------------------
|
||||
|
||||
class UserCreate(BaseModel):
|
||||
username: str
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# api/routers/docit2mf_build.py
|
||||
|
||||
import logging
|
||||
from fastapi import APIRouter, HTTPException, Request
|
||||
from slowapi import Limiter
|
||||
|
||||
@@ -9,7 +9,6 @@ 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(
|
||||
@@ -24,7 +23,6 @@ def validate_simple_docmf(request: SimpleValidationRequest):
|
||||
"details": results[0]
|
||||
}
|
||||
|
||||
# Caso: varios niveles
|
||||
if invalid:
|
||||
return {
|
||||
"message": "Validación completada.",
|
||||
|
||||
@@ -14,10 +14,6 @@ GOOGLE_CLIENT_SECRET = os.getenv("GOOGLE_CLIENT_SECRET")
|
||||
REDIRECT_URI = os.getenv("GOOGLE_REDIRECT_URI")
|
||||
SECRET_KEY = os.getenv("SECRET_KEY")
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# 1. LOGIN → REDIRECCIÓN A GOOGLE
|
||||
# -----------------------------
|
||||
@router.get("/login")
|
||||
async def google_login():
|
||||
google_auth_url = (
|
||||
@@ -32,10 +28,6 @@ async def google_login():
|
||||
|
||||
return RedirectResponse(google_auth_url)
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# 2. CALLBACK → GOOGLE DEVUELVE EL CODE
|
||||
# -----------------------------
|
||||
@router.get("/callback")
|
||||
async def google_callback(request: Request):
|
||||
|
||||
|
||||
@@ -10,10 +10,6 @@ from api.utils.security import get_current_user
|
||||
|
||||
router = APIRouter(prefix="/history", tags=["history"])
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# 1. Añadir un elemento al historial
|
||||
# -----------------------------
|
||||
@router.post("/add")
|
||||
async def add_history_item(
|
||||
data: HistoryCreateRequest,
|
||||
@@ -39,10 +35,6 @@ async def add_history_item(
|
||||
"history_item_id": str(history_item_id),
|
||||
}
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# 2. Eliminar un elemento del historial
|
||||
# -----------------------------
|
||||
@router.delete("/delete/{history_item_id}")
|
||||
async def delete_history_item(
|
||||
history_item_id: str,
|
||||
@@ -64,9 +56,6 @@ async def delete_history_item(
|
||||
return {"message": "Elemento eliminado del historial"}
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# 3. Obtener todos los historiales de todos los usuarios (ordenados)
|
||||
# -----------------------------
|
||||
@router.get("/all")
|
||||
async def get_all_histories():
|
||||
users = await users_collection.find().to_list(None)
|
||||
@@ -90,7 +79,6 @@ async def get_all_histories():
|
||||
}
|
||||
})
|
||||
|
||||
# Ordenar por fecha
|
||||
all_histories_sorted = sorted(
|
||||
all_histories,
|
||||
key=lambda h: h["history_item"]["created_at"]
|
||||
@@ -98,10 +86,6 @@ async def get_all_histories():
|
||||
|
||||
return {"count": len(all_histories_sorted), "histories": all_histories_sorted}
|
||||
|
||||
|
||||
# -----------------------------
|
||||
# 4. Obtener historiales del usuario autenticado (ordenados)
|
||||
# -----------------------------
|
||||
@router.get("/user")
|
||||
async def get_user_histories(current_user: dict = Depends(get_current_user)):
|
||||
user_id = current_user["_id"]
|
||||
@@ -116,7 +100,6 @@ async def get_user_histories(current_user: dict = Depends(get_current_user)):
|
||||
|
||||
history = user.get("history", [])
|
||||
|
||||
# Ordenar por fecha
|
||||
history_sorted = sorted(history, key=lambda h: h["created_at"])
|
||||
|
||||
formatted_history = []
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# services/docit2mf_build_service.py
|
||||
|
||||
from typing import List, Union
|
||||
from api.models.docit2mf_models import DoCIT2MFRequest
|
||||
from api.models.docmf_models import DoCMFRequest
|
||||
@@ -32,13 +30,11 @@ def _enforce_upper_ge_lower(lower, upper):
|
||||
Garantiza que la UMF (upper) nunca quede por debajo de la LMF (lower).
|
||||
Ajusta los valores de pertenencia si es necesario.
|
||||
"""
|
||||
# left nodes
|
||||
for i in range(len(lower["left_nodes"])):
|
||||
ly = lower["left_nodes"][i][1]
|
||||
uy = upper["left_nodes"][i][1]
|
||||
upper["left_nodes"][i][1] = max(uy, ly)
|
||||
|
||||
# right nodes
|
||||
for i in range(len(lower["right_nodes"])):
|
||||
ly = lower["right_nodes"][i][1]
|
||||
uy = upper["right_nodes"][i][1]
|
||||
@@ -58,9 +54,6 @@ def build_it2mf_from_level(level: DoCIT2MFRequest):
|
||||
}
|
||||
"""
|
||||
|
||||
# -------------------------
|
||||
# LMF (mínimos)
|
||||
# -------------------------
|
||||
left_min = _extract_bounds(level.left_blank_cards, "min")
|
||||
right_min = _extract_bounds(level.right_blank_cards, "min")
|
||||
|
||||
@@ -74,18 +67,13 @@ def build_it2mf_from_level(level: DoCIT2MFRequest):
|
||||
right_blank_cards=right_min,
|
||||
)
|
||||
|
||||
# Convertir a dict para poder manipular como diccionario
|
||||
lower = build_doc_mf_level(lower_level)
|
||||
if hasattr(lower, "model_dump"):
|
||||
lower = lower.model_dump()
|
||||
|
||||
# Asegurar que los nodos son listas mutables y ordenar
|
||||
lower["left_nodes"] = _sort_nodes(lower["left_nodes"])
|
||||
lower["right_nodes"] = _sort_nodes(lower["right_nodes"])
|
||||
|
||||
# -------------------------
|
||||
# UMF (máximos)
|
||||
# -------------------------
|
||||
left_max = _extract_bounds(level.left_blank_cards, "max")
|
||||
right_max = _extract_bounds(level.right_blank_cards, "max")
|
||||
|
||||
@@ -99,18 +87,13 @@ def build_it2mf_from_level(level: DoCIT2MFRequest):
|
||||
right_blank_cards=right_max,
|
||||
)
|
||||
|
||||
# Convertir a dict para poder manipular como diccionario
|
||||
upper = build_doc_mf_level(upper_level)
|
||||
if hasattr(upper, "model_dump"):
|
||||
upper = upper.model_dump()
|
||||
|
||||
# Asegurar que los nodos son listas mutables y ordenar
|
||||
upper["left_nodes"] = _sort_nodes(upper["left_nodes"])
|
||||
upper["right_nodes"] = _sort_nodes(upper["right_nodes"])
|
||||
|
||||
# -------------------------
|
||||
# FIX: evitar inversión vertical (UMF < LMF)
|
||||
# -------------------------
|
||||
upper = _enforce_upper_ge_lower(lower, upper)
|
||||
|
||||
return {
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# services/docmf_build_service.py
|
||||
|
||||
from api.models.docmf_models import DoCMFRequest
|
||||
from api.models.user_models import FuzzyTerm
|
||||
|
||||
@@ -8,7 +6,6 @@ def build_single_docmf(request: DoCMFRequest):
|
||||
a, b = request.core
|
||||
c, d = request.support
|
||||
|
||||
# LEFT
|
||||
TL = sum(e + 1 for e in request.left_blank_cards)
|
||||
YL = 1 / TL
|
||||
left_nodes = []
|
||||
@@ -21,7 +18,6 @@ def build_single_docmf(request: DoCMFRequest):
|
||||
acc += request.left_blank_cards[i - 1] + 1
|
||||
left_nodes.append((x, round(acc * YL, 4)))
|
||||
|
||||
# RIGHT
|
||||
TR = sum(e + 1 for e in request.right_blank_cards)
|
||||
YR = 1 / TR
|
||||
right_nodes = []
|
||||
|
||||
@@ -4,7 +4,6 @@ def validate_simple_level(level: dict):
|
||||
a, b = level["core"]
|
||||
c, d = level["support"]
|
||||
|
||||
# Validación: núcleo dentro del soporte
|
||||
if not (c <= a < b <= d):
|
||||
errors.append("El núcleo debe estar completamente dentro del soporte.")
|
||||
|
||||
|
||||
@@ -4,11 +4,9 @@ def validate_single_level(level: dict):
|
||||
a, b = level["core"]
|
||||
c, d = level["support"]
|
||||
|
||||
# Core dentro del soporte
|
||||
if not (c <= a < b <= d):
|
||||
errors.append("El núcleo debe estar completamente dentro del soporte.")
|
||||
|
||||
# Nodos cubren correctamente el soporte
|
||||
left = level["left_nodes"]
|
||||
right = level["right_nodes"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user