File size: 3,893 Bytes
d2213a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1511531
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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)