Añadida funcionalidad de intervalos en cartas blancas

This commit is contained in:
Mireya Cueto Garrido
2026-04-06 10:42:42 +02:00
parent 111acc632e
commit 5d3de4e27f
8 changed files with 207 additions and 10 deletions
+25 -3
View File
@@ -1,4 +1,10 @@
def build_single_docmf(request):
# services/docmf_build_service.py
from api.models.docmf_models import DoCMFRequest
from api.models.user_models import FuzzyTerm
def build_single_docmf(request: DoCMFRequest):
a, b = request.core
c, d = request.support
@@ -12,7 +18,7 @@ def build_single_docmf(request):
if i == 0:
left_nodes.append((x, 0.0))
else:
acc += request.left_blank_cards[i-1] + 1
acc += request.left_blank_cards[i - 1] + 1
left_nodes.append((x, round(acc * YL, 4)))
# RIGHT
@@ -25,7 +31,7 @@ def build_single_docmf(request):
if i == 0:
right_nodes.append((x, 1.0))
else:
acc += request.right_blank_cards[i-1] + 1
acc += request.right_blank_cards[i - 1] + 1
right_nodes.append((x, round(1 - acc * YR, 4)))
return {
@@ -43,3 +49,19 @@ def build_docmf_multi(request):
result = build_single_docmf(level)
results.append(result)
return {"results": results}
def build_doc_mf_level(level: DoCMFRequest) -> FuzzyTerm:
"""
Adaptador para reutilizar build_single_docmf con el modelo DoCMFRequest.
Devuelve un FuzzyTerm, que es lo que espera el sistema IT2MF.
"""
result = build_single_docmf(level)
return FuzzyTerm(
term=result["term"],
core=list(result["core"]),
support=list(result["support"]),
left_nodes=[list(p) for p in result["left_nodes"]],
right_nodes=[list(p) for p in result["right_nodes"]],
)