Team Ai
Apppublic

AkshatJain20092002/Email-Classification-Support-System

sourceHugging Faceupdated 1y agoView on Hugging Face
1likes
app.py73 linesDownload Raw Back to root
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