Dodato full regenerisanje dokumenta,dodat fallback za incomplete document

This commit is contained in:
2025-08-26 19:32:03 +02:00
parent 959ec958bb
commit 031f955739
8 changed files with 303 additions and 55 deletions

View File

@@ -2,15 +2,22 @@ from celery import shared_task
from backend.core.models import Organization, Document, Risk, Control, DocumentRiskControl
from backend.core.utils import get_top_risk, get_controls_for_risk, generate_key_findings, generate_recommendations
from django.shortcuts import get_object_or_404, render
from .utils import send_payment_email
from .utils import send_payment_email, send_document_to_reviewer
from backend.core.tables import get_risk_table
import logging
logger = logging.getLogger(__name__)
@shared_task
def create_document_for_organization(confirmation_email):
organization = get_object_or_404(Organization, email=confirmation_email)
is_incomplete = False
organization = get_object_or_404(Organization, email=confirmation_email)
top_risk_ids = get_top_risk(organization)
print(f"Risks number: {len(top_risk_ids)}")
if len(top_risk_ids) != 10:
is_incomplete = True
top_risk_ids = get_top_risk(organization)
top_risks = Risk.objects.filter(risk_id__in=top_risk_ids)
organization.risks.set(top_risks)
@@ -36,7 +43,11 @@ def create_document_for_organization(confirmation_email):
controls_content += f"Risk: {risk.risk_id} - {risk.risk_name}\n"
selected_controls = get_controls_for_risk(risk ,organization=organization)
print(f"Controls for current risk: {len(selected_controls)}")
if len(selected_controls) < 10:
is_incomplete = True
selected_controls = get_controls_for_risk(risk, organization=organization)
for control_id, weight, likelihood in selected_controls:
control = Control.objects.filter(id=control_id).first()
if control:
@@ -65,4 +76,10 @@ def create_document_for_organization(confirmation_email):
document.recomendations = recommendations
document.save()
if is_incomplete:
# mark document incomplete and update modified timestamp
logger.info("Marking document %s as INCOMPLETE (is_incomplete=%s)", document.id, is_incomplete)
document.status = Document.STATUS_INCOMPLETE
document.save(update_fields=['status', 'modified_at'])
send_payment_email(confirmation_email)