AkshatJain20092002/Email-Classification-Support-System
1
1from flask import Flask, request, jsonify2from flask_cors import CORS3from utils import EmailTranslator, PIIMasker4from models import EmailClassifier5import logging6 7# Configure logging8logging.basicConfig(9 level=logging.INFO,10 format="%(asctime)s - %(levelname)s - %(message)s",11 datefmt="%Y-%m-%d %H:%M:%S",12)13 14logger = logging.getLogger(__name__)15 16app = Flask(__name__)17CORS(app)18 19 20@app.route("/classify", methods=["POST"])21def classify_email():22 """23 Endpoint to classify an email: masks PII, translates, and predicts.24 """25 if request.content_type != "application/json":26 return (27 jsonify({"error": "Content-Type must be application/json"}),28 415,29 )30 31 try:32 data = request.get_json()33 email_body = data.get("email_body", "")34 35 if not email_body:36 return (37 jsonify({38 "error": "Missing fields",39 "missing_parameters": ["email_body"],40 }),41 400,42 )43 44 masker = PIIMasker()45 translator = EmailTranslator()46 classifier = EmailClassifier()47 48 masked_text, entities = masker.mask_text(email_body)49 logger.info("Masked text: %s", masked_text)50 translated_text = translator.translate_email(masked_text)51 logger.info("Translated text: %s", translated_text)52 category = classifier.predict(translated_text)53 logger.info("Predicted category: %s", category)54 55 return jsonify({56 "input_email_body": email_body,57 "list_of_masked_entities": entities,58 "masked_email": masked_text,59 "category_of_the_email": category,60 })61 62 except ValueError as exc:63 logger.error("ValueError: %s", exc)64 return jsonify({"error": str(exc)}), 40065 66 except Exception as exc:67 logger.error("Error in /classify: %s", exc)68 return jsonify({"error": str(exc)}), 50069 70 71if __name__ == "__main__":72 app.run(host="0.0.0.0", port=7860, debug=False)73 