""" Flask routes for the application. """ from flask import Blueprint, jsonify, request, abort from app.services.chatbot_service import chatbot_service bp = Blueprint('main', __name__) @bp.route('/') def index(): """ Root endpoint. Returns: JSON response with application information. """ return jsonify({ 'name': 'Chatbot Application', 'version': '1.0.0', 'status': 'running' }) @bp.route('/api/health') def health_check(): """ Health check endpoint. Returns: JSON response with health status. """ return jsonify({ 'status': 'healthy' }) @bp.route('/api/chat', methods=['POST']) def create_chat(): """ Create a new chat. Returns: JSON response with chat ID. """ user_id = request.json.get('user_id', 'default_user') chat_id = chatbot_service.create_chat(user_id) return jsonify({ 'chat_id': chat_id, 'messages': [] }) @bp.route('/api/chat//message', methods=['POST']) def send_message(chat_id): """ Send a message to the chatbot. Args: chat_id: ID of the chat. Returns: JSON response with bot response. """ if not request.json or 'message' not in request.json: abort(400, description="Message is required") try: message = request.json['message'] response = chatbot_service.get_response(chat_id, message) # Get the last message (bot response) messages = chatbot_service.get_chat_messages(chat_id) last_message = messages[-1] return jsonify(last_message) except ValueError as e: abort(404, description=str(e)) @bp.route('/api/chat/', methods=['GET']) def get_chat(chat_id): """ Get a chat by ID. Args: chat_id: ID of the chat. Returns: JSON response with chat messages. """ try: messages = chatbot_service.get_chat_messages(chat_id) return jsonify({ 'chat_id': chat_id, 'messages': messages }) except ValueError as e: abort(404, description=str(e))