added manager and execuytive generator
This commit is contained in:
+71
-7
@@ -1,9 +1,8 @@
|
||||
import os
|
||||
from flask import Blueprint, request, jsonify, current_app
|
||||
from werkzeug.utils import secure_filename
|
||||
|
||||
from src.services.sop_generator import (SopGeneratorDocument,
|
||||
SopPersonalAssessment,SopGeneratorExecutive)
|
||||
from src.services.sop_generator import (SopPersonalAssessment,SopGeneratorExecutive)
|
||||
from src.services.document_parser import DocumentParser
|
||||
|
||||
from src.utils.utils import delete_all_files_in_directory
|
||||
from src.utils.document_loader import load_document
|
||||
@@ -103,7 +102,7 @@ def generate_questions_from_sop():
|
||||
return jsonify({"error": "Document cannot extract SOPs", "message": status_check["message"]}), 400
|
||||
|
||||
# Generate SOPs based on the roles provided
|
||||
sop_generator = SopGeneratorDocument()
|
||||
sop_generator = DocumentParser()
|
||||
sops = sop_generator.generate_sops_from_doc(docs)
|
||||
|
||||
# Cleanup: Delete all files in the upload directory after processing
|
||||
@@ -147,7 +146,7 @@ def generate_sops():
|
||||
docs = load_document(file_path)
|
||||
|
||||
# Generate SOPs based on the roles provided
|
||||
sop_generator = SopGeneratorDocument()
|
||||
sop_generator = DocumentParser()
|
||||
sops = sop_generator.extract_sops_from_doc(docs)
|
||||
# Cleanup: Delete all files in the upload directory after processing
|
||||
delete_all_files_in_directory(upload_folder)
|
||||
@@ -277,7 +276,7 @@ def generate_executive_sops_from_doc():
|
||||
# Use the utility function to generate docs from the file
|
||||
docs = load_document(file_path)
|
||||
|
||||
sop_doc = SopGeneratorDocument()
|
||||
sop_doc = DocumentParser()
|
||||
vision_mission = sop_doc.extract_vision_mission(docs)
|
||||
|
||||
if not vision_mission:
|
||||
@@ -380,4 +379,69 @@ def generate_sops_from_questionnaire():
|
||||
return jsonify({"sops": serializable_result, "message": "SOPs successfully generated from questionnaire."}), 200
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({"error": "Processing error", "message": f"An error occurred while processing the request: {str(e)}"}), 500
|
||||
return jsonify({"error": "Processing error", "message": f"An error occurred while processing the request: {str(e)}"}), 500
|
||||
|
||||
|
||||
|
||||
|
||||
@sops_bp.route('/executive/get_roles_doc', methods=['POST'])
|
||||
def generate_sops_from_questionnaire():
|
||||
try:
|
||||
# Retrieve form data
|
||||
reference_roles = request.get_json().get('reference_roles') # List of reference roles in JSON format
|
||||
document = request.files.get('document') # The uploaded document
|
||||
|
||||
if not reference_roles or not document:
|
||||
return jsonify({"error": "Missing data", "message": "Reference roles or document not provided."}), 400
|
||||
|
||||
# Use extractor to extract roles from the document
|
||||
extractor = DocumentParser()
|
||||
extracted_data = extractor.extract_departments_and_managers_workers([document])
|
||||
|
||||
if not extracted_data:
|
||||
return jsonify({"error": "Extraction error", "message": "No roles were extracted from the document."}), 400
|
||||
|
||||
# Extract all managers with their name, title (position), and classification (role: PRP or SRP)
|
||||
extracted_managers = []
|
||||
for department in extracted_data['departments']:
|
||||
extracted_managers.extend([{
|
||||
'name': manager['name'],
|
||||
'position': manager.get('position', 'Unknown Position'), # Assuming title is the position
|
||||
'role': manager.get('classification', 'Unknown Role') # PRP or SRP classification
|
||||
} for manager in department['managers']])
|
||||
|
||||
# Prepare assigned, unassigned, and unavailable managers
|
||||
assigned_managers = [manager for manager in extracted_managers if manager['name'] in reference_roles]
|
||||
unassigned_managers = [{'name': role, 'position': 'Reference Role', 'role': 'N/A'} for role in reference_roles if role not in [manager['name'] for manager in extracted_managers]]
|
||||
unavailable_managers = [manager for manager in extracted_managers if manager['name'] not in reference_roles]
|
||||
|
||||
# Return the results with detailed manager information
|
||||
return jsonify({
|
||||
"assigned_roles": assigned_managers,
|
||||
"unassigned_roles": unassigned_managers,
|
||||
"unavailable_roles": unavailable_managers
|
||||
}), 200
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({"error": "Processing error", "message": f"An error occurred while processing the request: {str(e)}"}), 500
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
assigned_roles = [role for role in reference_roles if role in extracted_roles]
|
||||
unassigned_roles = [role for role in reference_roles if role not in extracted_roles]
|
||||
unavailable_roles = [role for role in extracted_roles if role not in reference_roles]
|
||||
|
||||
# Return the results
|
||||
return jsonify({
|
||||
"assigned_roles": assigned_roles,
|
||||
"unassigned_roles": unassigned_roles,
|
||||
"unavailable_roles": unavailable_roles
|
||||
}), 200
|
||||
|
||||
|
||||
except Exception as e:
|
||||
return jsonify({"error": "Processing error", "message": f"An error occurred while processing the request: {str(e)}"}), 500
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user