Add AQMM task evidence and review notes workflow

This commit is contained in:
A R R R Associates
2026-07-07 12:03:07 +05:30
parent 05690a220c
commit 91b1811eb8
10 changed files with 816 additions and 11 deletions
+54
View File
@@ -87,7 +87,9 @@ from app.modules.services.task_documents import (
list_task_document_requirements,
requirement_upload_status,
save_uploaded_task_document,
update_task_document_evidence_review,
)
from app.modules.services.execution import recalculate_task_aqmm_status
router = APIRouter(prefix="/documents", tags=["documents-ui"])
logger = logging.getLogger("audit_storage_agent.documents_ui")
@@ -205,6 +207,8 @@ def upload_engagement_document(
remarks: str | None = Form(None),
existing_document_id: str | None = Form(None),
udin_required: str | None = Form(None),
evidence_type: str | None = Form(None),
evidence_description: str | None = Form(None),
file: UploadFile = File(...),
csrf_token: str = Form(...),
):
@@ -237,7 +241,10 @@ def upload_engagement_document(
user=user,
existing_document_id=int(existing_document_id) if existing_document_id else None,
udin_required=_bool_from_form(udin_required),
evidence_type=evidence_type,
evidence_description=evidence_description,
)
recalculate_task_aqmm_status(db, task)
log_document_access(db, action="upload", result="success", user=user, request=request, document=doc)
db.commit()
except Exception as exc:
@@ -308,6 +315,8 @@ def upload_task_document(
remarks: str | None = Form(None),
existing_document_id: str | None = Form(None),
udin_required: str | None = Form(None),
evidence_type: str | None = Form(None),
evidence_description: str | None = Form(None),
file: UploadFile = File(...),
csrf_token: str = Form(...),
):
@@ -347,7 +356,10 @@ def upload_task_document(
user=user,
existing_document_id=int(existing_document_id) if existing_document_id else None,
udin_required=_bool_from_form(udin_required),
evidence_type=evidence_type,
evidence_description=evidence_description,
)
recalculate_task_aqmm_status(db, task)
log_document_access(db, action="task_upload", result="success", user=user, request=request, document=doc)
db.commit()
except Exception as exc:
@@ -363,6 +375,48 @@ def upload_task_document(
finally:
db.close()
@router.post("/tasks/{task_id}/documents/{document_id}/evidence-review")
def update_task_document_evidence(
request: Request,
task_id: int,
document_id: int,
evidence_status: str = Form("uploaded"),
evidence_type: str | None = Form(None),
evidence_description: str | None = Form(None),
evidence_review_note: str | None = Form(None),
csrf_token: str = Form(...),
):
validate_csrf(request, csrf_token)
db = CommonSessionLocal()
try:
user, response = _require_user(request, db, "documents.upload")
if response:
return response
scope = build_document_scope(request, db, user)
task = get_task_with_subscription(db, task_id)
engagement = task.subscription if task else None
if not task or not engagement or not user_can_upload_to_engagement(db, user, engagement, scope):
return _redirect_denied()
document = get_document(db, document_id)
if not document or int(document.task_instance_id or 0) != int(task.id):
return RedirectResponse(url=f"/documents/tasks/{task_id}?error=invalid_document", status_code=303)
update_task_document_evidence_review(
db,
document=document,
evidence_status=evidence_status,
evidence_type=evidence_type,
evidence_description=evidence_description,
evidence_review_note=evidence_review_note,
user=user,
)
recalculate_task_aqmm_status(db, task)
log_document_access(db, action="task_evidence_review", result="success", user=user, request=request, document=document)
db.commit()
return RedirectResponse(url=f"/documents/tasks/{task_id}?evidence_reviewed=1", status_code=303)
finally:
db.close()
@router.get("/udin-register")
def udin_register(request: Request, financial_year: str = "", status: str = "", q: str = ""):
db = CommonSessionLocal()