Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -13,6 +13,10 @@ import uuid
|
|
| 13 |
from io import BytesIO
|
| 14 |
|
| 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
from tabulate import tabulate
|
| 18 |
import numpy as np
|
|
@@ -920,6 +924,79 @@ def handle_calculation():
|
|
| 920 |
|
| 921 |
|
| 922 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 923 |
|
| 924 |
|
| 925 |
if __name__ == '__main__':
|
|
|
|
| 13 |
from io import BytesIO
|
| 14 |
|
| 15 |
|
| 16 |
+
import uuid
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
|
| 20 |
|
| 21 |
from tabulate import tabulate
|
| 22 |
import numpy as np
|
|
|
|
| 924 |
|
| 925 |
|
| 926 |
|
| 927 |
+
|
| 928 |
+
|
| 929 |
+
|
| 930 |
+
|
| 931 |
+
|
| 932 |
+
# Чат
|
| 933 |
+
|
| 934 |
+
|
| 935 |
+
# Хранилище сообщений (в реальном проекте используйте БД)
|
| 936 |
+
messages = []
|
| 937 |
+
# Словарь для отслеживания пользователей (опционально)
|
| 938 |
+
users = {}
|
| 939 |
+
|
| 940 |
+
@app.route('/chat')
|
| 941 |
+
def index():
|
| 942 |
+
"""Главная страница с чатом"""
|
| 943 |
+
# Генерируем уникальный ID для пользователя при первом заходе
|
| 944 |
+
user_id = str(uuid.uuid4())[:8] # Берем первые 8 символов UUID
|
| 945 |
+
users[user_id] = {
|
| 946 |
+
'joined': datetime.datetime.now().strftime("%H:%M:%S")
|
| 947 |
+
}
|
| 948 |
+
return render_template('chat.html', user_id=user_id)
|
| 949 |
+
|
| 950 |
+
@app.route('/send_message', methods=['POST'])
|
| 951 |
+
def send_message():
|
| 952 |
+
"""Прием новых сообщений"""
|
| 953 |
+
data = request.json
|
| 954 |
+
user_id = data.get('user_id', 'anonymous')
|
| 955 |
+
message_text = data.get('message', '').strip()
|
| 956 |
+
|
| 957 |
+
if message_text:
|
| 958 |
+
# Создаем объект сообщения
|
| 959 |
+
message = {
|
| 960 |
+
'id': len(messages) + 1,
|
| 961 |
+
'user_id': user_id,
|
| 962 |
+
'text': message_text,
|
| 963 |
+
'timestamp': datetime.datetime.now().strftime("%H:%M:%S"),
|
| 964 |
+
'username': f"User_{user_id}" # Можно сделать имена настраиваемыми
|
| 965 |
+
}
|
| 966 |
+
messages.append(message)
|
| 967 |
+
|
| 968 |
+
# Ограничиваем историю сообщений (последние 100)
|
| 969 |
+
if len(messages) > 100:
|
| 970 |
+
messages.pop(0)
|
| 971 |
+
|
| 972 |
+
return jsonify({'status': 'success'})
|
| 973 |
+
|
| 974 |
+
return jsonify({'status': 'error', 'message': 'Empty message'})
|
| 975 |
+
|
| 976 |
+
@app.route('/get_messages')
|
| 977 |
+
def get_messages():
|
| 978 |
+
"""Получение всех сообщений"""
|
| 979 |
+
return jsonify({'messages': messages})
|
| 980 |
+
|
| 981 |
+
@app.route('/get_new_messages')
|
| 982 |
+
def get_new_messages():
|
| 983 |
+
"""Получение только новых сообщений (оптимизация)"""
|
| 984 |
+
last_id = request.args.get('last_id', 0, type=int)
|
| 985 |
+
new_messages = [msg for msg in messages if msg['id'] > last_id]
|
| 986 |
+
return jsonify({'messages': new_messages})
|
| 987 |
+
|
| 988 |
+
|
| 989 |
+
|
| 990 |
+
|
| 991 |
+
|
| 992 |
+
|
| 993 |
+
|
| 994 |
+
|
| 995 |
+
|
| 996 |
+
|
| 997 |
+
|
| 998 |
+
|
| 999 |
+
|
| 1000 |
|
| 1001 |
|
| 1002 |
if __name__ == '__main__':
|