from flask import Flask, render_template, request, jsonify from core.task_factory import TaskFactory from models.settings import GenerationSettings import traceback app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/generate', methods=['POST']) def generate(): try: data = request.get_json() or {} settings = GenerationSettings( count=data.get('count', 1), complexity=data.get('complexity', 'medium'), task_types=data.get('task_types', []) ) factory = TaskFactory() tasks = factory.generate_tasks(settings) if not tasks: return jsonify({'tasks': [], 'warning': 'Не удалось сгенерировать задачи'}), 200 print(tasks) return jsonify({'tasks': tasks}) except Exception as e: print("Ошибка генерации задач:\n", traceback.format_exc()) return jsonify({'tasks': [], 'error': str(e)}), 500 @app.route('/task-types', methods=['GET']) def get_task_types(): task_types = { 'classic': [ {'id': 1, 'name': 'Билеты/экзамены', 'description': 'Не выучил несколько билетов'}, {'id': 2, 'name': 'Пирожки/конфеты', 'description': 'Выбор предмета из смеси'}, {'id': 3, 'name': 'Такси', 'description': 'Выбор такси определенного цвета'}, {'id': 4, 'name': 'Спортсмены', 'description': 'Порядок выступления спортсменов'}, {'id': 5, 'name': 'Бракованные изделия', 'description': 'Вероятность качественного товара'}, {'id': 6, 'name': 'Игральные кости', 'description': 'Сумма очков при бросании костей'}, {'id': 7, 'name': 'Монеты', 'description': 'Количество орлов при бросании монеты'}, {'id': 8, 'name': 'Конференции', 'description': 'Распределение докладов по дням'}, {'id': 9, 'name': 'Парные соревнования', 'description': 'Игрок с соотечественником'}, {'id': 10, 'name': 'Отношения', 'description': 'Отношение количества предметов'}, {'id': 11, 'name': 'Часы со стрелками', 'description': 'Положение часовой стрелки'}, {'id': 12, 'name': 'Телевизор/каналы', 'description': 'Каналы без рекламы'} ], 'theorems': [ {'id': 13, 'name': 'Противоположное событие', 'description': '1 - P(исходное событие)'}, {'id': 14, 'name': 'Несовместные события', 'description': 'Сумма вероятностей'}, {'id': 15, 'name': 'Независимые события', 'description': 'Произведение вероятностей'}, {'id': 16, 'name': 'Формула полной вероятности', 'description': 'Фабрики с разным браком'}, {'id': 17, 'name': 'Последовательности', 'description': 'Определенная последовательность событий'}, {'id': 18, 'name': 'Ровно n задач', 'description': 'Разность вероятностей'}, {'id': 19, 'name': 'Гроссмейстеры', 'description': 'Выигрыш с разными цветами фигур'} ] } return jsonify(task_types) if __name__ == "__main__": app.run(host="0.0.0.0", port=7860, debug=False, use_reloader=False)