timoon811 commited on
Commit
d82118f
·
verified ·
1 Parent(s): e84fb6c

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +484 -19
  3. prompts.txt +1 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Phase12
3
- emoji: 😻
4
- colorFrom: gray
5
- colorTo: pink
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: phase12
3
+ emoji: 🐳
4
+ colorFrom: pink
5
+ colorTo: yellow
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,484 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Прогнозы | Casino Predictor</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .phase-collection {
11
+ background-color: rgba(255, 193, 7, 0.1);
12
+ border-left: 4px solid #ffc107;
13
+ }
14
+ .phase-payout {
15
+ background-color: rgba(40, 167, 69, 0.1);
16
+ border-left: 4px solid #28a745;
17
+ }
18
+ .phase-volatility {
19
+ background-color: rgba(220, 53, 69, 0.1);
20
+ border-left: 4px solid #dc3545;
21
+ }
22
+ .status-ready {
23
+ color: #28a745;
24
+ }
25
+ .status-working {
26
+ color: #ffc107;
27
+ animation: pulse 2s infinite;
28
+ }
29
+ .status-expired {
30
+ color: #6c757d;
31
+ }
32
+ .status-error {
33
+ color: #dc3545;
34
+ }
35
+ @keyframes pulse {
36
+ 0% { opacity: 1; }
37
+ 50% { opacity: 0.5; }
38
+ 100% { opacity: 1; }
39
+ }
40
+ .modal {
41
+ transition: all 0.3s ease;
42
+ }
43
+ .chart-container {
44
+ height: 300px;
45
+ background: linear-gradient(90deg, rgba(241,245,249,1) 0%, rgba(226,232,240,1) 100%);
46
+ }
47
+ </style>
48
+ </head>
49
+ <body class="bg-gray-50 text-gray-800">
50
+ <div class="container mx-auto px-4 py-8 max-w-6xl">
51
+ <!-- Заголовок -->
52
+ <div class="flex justify-between items-center mb-8">
53
+ <h1 class="text-3xl font-bold text-gray-900 flex items-center">
54
+ <i class="fas fa-chart-line text-blue-500 mr-3"></i> 📊 Мои прогнозы
55
+ </h1>
56
+ <div class="flex items-center space-x-4">
57
+ <button id="notificationBtn" class="relative p-2 rounded-full hover:bg-gray-200">
58
+ <i class="fas fa-bell text-gray-600"></i>
59
+ <span class="absolute top-0 right-0 w-2 h-2 bg-red-500 rounded-full"></span>
60
+ </button>
61
+ <div class="relative">
62
+ <button id="sortBtn" class="flex items-center space-x-2 bg-white px-4 py-2 rounded-lg shadow-sm border border-gray-200 hover:bg-gray-50">
63
+ <span>Сортировка</span>
64
+ <i class="fas fa-chevron-down text-sm"></i>
65
+ </button>
66
+ <div id="sortDropdown" class="hidden absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg z-10 border border-gray-200">
67
+ <div class="py-1">
68
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 sort-option" data-sort="date-desc">По дате (новые)</a>
69
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 sort-option" data-sort="date-asc">По дате (старые)</a>
70
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 sort-option" data-sort="phase">По фазе</a>
71
+ <a href="#" class="block px-4 py-2 text-sm hover:bg-gray-100 sort-option" data-sort="status">По статусу</a>
72
+ </div>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </div>
77
+
78
+ <!-- Кнопка запроса нового прогноза -->
79
+ <div class="mb-8">
80
+ <button id="requestForecastBtn" class="bg-blue-600 hover:bg-blue-700 text-white px-6 py-3 rounded-lg font-medium flex items-center shadow-md transition-all">
81
+ <i class="fas fa-plus-circle mr-2"></i> Запросить новый прогноз
82
+ </button>
83
+ </div>
84
+
85
+ <!-- Таблица прогнозов -->
86
+ <div class="bg-white rounded-xl shadow-sm overflow-hidden mb-8">
87
+ <div class="overflow-x-auto">
88
+ <table class="min-w-full divide-y divide-gray-200">
89
+ <thead class="bg-gray-50">
90
+ <tr>
91
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Игра</th>
92
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Казино</th>
93
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Время</th>
94
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Фаза</th>
95
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Прогноз</th>
96
+ <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Статус</th>
97
+ <th scope="col" class="px-6 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">Действия</th>
98
+ </tr>
99
+ </thead>
100
+ <tbody class="bg-white divide-y divide-gray-200" id="forecastsTable">
101
+ <!-- Прогнозы будут добавляться сюда через JavaScript -->
102
+ </tbody>
103
+ </table>
104
+ </div>
105
+ </div>
106
+
107
+ <!-- Кнопка авто-прогноза -->
108
+ <div class="text-center mb-8">
109
+ <button id="autoForecastBtn" class="bg-gradient-to-r from-purple-600 to-blue-600 hover:from-purple-700 hover:to-blue-700 text-white px-6 py-3 rounded-lg font-medium flex items-center shadow-md mx-auto transition-all">
110
+ <i class="fas fa-robot mr-2"></i> Получить авто-прогноз по всем любимым слотам
111
+ </button>
112
+ </div>
113
+
114
+ <!-- Модальное окно запроса прогноза -->
115
+ <div id="requestModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden modal">
116
+ <div class="bg-white rounded-xl shadow-xl w-full max-w-md mx-4">
117
+ <div class="p-6">
118
+ <div class="flex justify-between items-center mb-4">
119
+ <h3 class="text-xl font-bold text-gray-900">Запросить новый прогноз</h3>
120
+ <button id="closeModalBtn" class="text-gray-400 hover:text-gray-500">
121
+ <i class="fas fa-times"></i>
122
+ </button>
123
+ </div>
124
+
125
+ <div class="space-y-4">
126
+ <div>
127
+ <label class="block text-sm font-medium text-gray-700 mb-1">🎰 Выберите игру</label>
128
+ <select class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500">
129
+ <option value="">-- Выберите игру --</option>
130
+ <option value="aviator">Aviator</option>
131
+ <option value="mine">Mine</option>
132
+ <option value="plinko">Plinko</option>
133
+ <option value="dice">Dice</option>
134
+ <option value="roulette">Рулетка</option>
135
+ </select>
136
+ </div>
137
+
138
+ <div>
139
+ <label class="block text-sm font-medium text-gray-700 mb-1">🎲 Выберите казино</label>
140
+ <select class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500">
141
+ <option value="">-- Выберите казино --</option>
142
+ <option value="1win">1Win</option>
143
+ <option value="1xbet">1xBet</option>
144
+ <option value="pinup">Pin-Up</option>
145
+ <option value="leon">Leon</option>
146
+ </select>
147
+ </div>
148
+
149
+ <div>
150
+ <label class="block text-sm font-medium text-gray-700 mb-1">⏱ Временной интервал</label>
151
+ <div class="grid grid-cols-3 gap-2">
152
+ <button class="time-btn bg-gray-100 hover:bg-gray-200 px-4 py-2 rounded-lg border border-gray-300" data-time="1h">1 час</button>
153
+ <button class="time-btn bg-gray-100 hover:bg-gray-200 px-4 py-2 rounded-lg border border-gray-300" data-time="4h">4 часа</button>
154
+ <button class="time-btn bg-blue-100 border-blue-300 text-blue-700 px-4 py-2 rounded-lg border" data-time="1d">1 день</button>
155
+ </div>
156
+ </div>
157
+
158
+ <div class="pt-4">
159
+ <button id="submitRequestBtn" class="w-full bg-blue-600 hover:bg-blue-700 text-white py-3 rounded-lg font-medium shadow-md transition-all">
160
+ <i class="fas fa-paper-plane mr-2"></i> Запросить прогноз
161
+ </button>
162
+ </div>
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </div>
167
+
168
+ <!-- Модальное окно деталей прогноза -->
169
+ <div id="detailModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden modal">
170
+ <div class="bg-white rounded-xl shadow-xl w-full max-w-2xl mx-4 max-h-[90vh] overflow-y-auto">
171
+ <div class="p-6">
172
+ <div class="flex justify-between items-center mb-4">
173
+ <h3 class="text-xl font-bold text-gray-900" id="detailGameTitle">Aviator — 1Win</h3>
174
+ <button id="closeDetailModalBtn" class="text-gray-400 hover:text-gray-500">
175
+ <i class="fas fa-times"></i>
176
+ </button>
177
+ </div>
178
+
179
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
180
+ <div class="bg-gray-50 p-4 rounded-lg">
181
+ <div class="text-sm text-gray-500">Время прогноза</div>
182
+ <div class="font-medium" id="detailTime">12:58, 15 июня 2023</div>
183
+ </div>
184
+ <div class="bg-gray-50 p-4 rounded-lg">
185
+ <div class="text-sm text-gray-500">Фаза</div>
186
+ <div class="font-medium" id="detailPhase">Отдача</div>
187
+ </div>
188
+ <div class="bg-gray-50 p-4 rounded-lg">
189
+ <div class="text-sm text-gray-500">Статус</div>
190
+ <div class="font-medium status-ready" id="detailStatus">Готов</div>
191
+ </div>
192
+ </div>
193
+
194
+ <div class="mb-6">
195
+ <h4 class="font-medium mb-2">📈 AI-прогноз</h4>
196
+ <div class="bg-blue-50 p-4 rounded-lg" id="detailForecast">
197
+ Ожидается рост коэффициентов на 120–160% в течение следующих 30 минут. Рекомендуется делать ставки с коэффициентом не выше 1.5 для первых 5 раундов.
198
+ </div>
199
+ </div>
200
+
201
+ <div class="mb-6">
202
+ <h4 class="font-medium mb-2">🧠 AI-комментарий</h4>
203
+ <div class="bg-gray-50 p-4 rounded-lg" id="detailComment">
204
+ Анализ последних 500 раундов показывает, что после серии из 10 раундов с коэффициентом ниже 1.2 (что мы наблюдали последние 45 минут), вероятность выпадения коэффициента выше 2.0 увеличивается на 37%. Текущая фаза соответствует историческим данным для периода отдачи.
205
+ </div>
206
+ </div>
207
+
208
+ <div class="mb-6">
209
+ <h4 class="font-medium mb-2">📊 График прогноза</h4>
210
+ <div class="chart-container rounded-lg border border-gray-200 p-4 flex items-center justify-center">
211
+ <div class="text-center text-gray-500">
212
+ <i class="fas fa-chart-line text-4xl mb-2 text-blue-400"></i>
213
+ <div>Здесь будет график фаз и прогноза</div>
214
+ </div>
215
+ </div>
216
+ </div>
217
+
218
+ <div class="flex justify-end space-x-3 pt-4">
219
+ <button class="px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50">
220
+ <i class="fas fa-share-alt mr-2"></i> Поделиться
221
+ </button>
222
+ <button class="px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg">
223
+ <i class="fas fa-paper-plane mr-2"></i> Отправить в Telegram
224
+ </button>
225
+ </div>
226
+ </div>
227
+ </div>
228
+ </div>
229
+ </div>
230
+
231
+ <script>
232
+ // Пример данных прогнозов
233
+ const forecasts = [
234
+ {
235
+ id: 1,
236
+ game: "Aviator",
237
+ casino: "1Win",
238
+ time: "12:58, 15.06.2023",
239
+ phase: "Отдача",
240
+ forecast: "Рост коэффициентов 120–160%",
241
+ comment: "Ожидается рост коэффициентов на 120–160%",
242
+ status: "ready",
243
+ isDemo: false
244
+ },
245
+ {
246
+ id: 2,
247
+ game: "Mine",
248
+ casino: "1xBet",
249
+ time: "10:30, 15.06.2023",
250
+ phase: "Сбор",
251
+ forecast: "Высокая волатильность",
252
+ comment: "Высокая вероятность крупных выплат в следующих 10 раундах",
253
+ status: "working",
254
+ isDemo: true
255
+ },
256
+ {
257
+ id: 3,
258
+ game: "Plinko",
259
+ casino: "Pin-Up",
260
+ time: "09:15, 14.06.2023",
261
+ phase: "Волатильность",
262
+ forecast: "Нестабильные выплаты",
263
+ comment: "Период нестабильности, рекомендуется осторожность",
264
+ status: "expired",
265
+ isDemo: false
266
+ },
267
+ {
268
+ id: 4,
269
+ game: "Dice",
270
+ casino: "Leon",
271
+ time: "22:45, 13.06.2023",
272
+ phase: "Отдача",
273
+ forecast: "Стабильные выплаты",
274
+ comment: "Период стабильных выплат с коэффициентом 1.8-2.2",
275
+ status: "ready",
276
+ isDemo: false
277
+ },
278
+ {
279
+ id: 5,
280
+ game: "Рулетка",
281
+ casino: "1Win",
282
+ time: "18:20, 12.06.2023",
283
+ phase: "Сбор",
284
+ forecast: "Выпадение красного 5 раз подряд",
285
+ comment: "Высокая вероятность серии красных чисел",
286
+ status: "error",
287
+ isDemo: true
288
+ }
289
+ ];
290
+
291
+ // Функция для отображения статуса
292
+ function getStatusText(status) {
293
+ switch(status) {
294
+ case 'ready': return {text: 'Готов ✅', class: 'status-ready'};
295
+ case 'working': return {text: 'В работе 🔄', class: 'status-working'};
296
+ case 'expired': return {text: 'Истёк ⛔', class: 'status-expired'};
297
+ case 'error': return {text: 'Ошибка ❌', class: 'status-error'};
298
+ default: return {text: 'Неизвестно', class: ''};
299
+ }
300
+ }
301
+
302
+ // Функция для отображения фазы
303
+ function getPhaseClass(phase) {
304
+ switch(phase) {
305
+ case 'Отдача': return 'phase-payout';
306
+ case 'Сбор': return 'phase-collection';
307
+ case 'Волатильность': return 'phase-volatility';
308
+ default: return '';
309
+ }
310
+ }
311
+
312
+ // Функция для отображения прогнозов в таблице
313
+ function renderForecasts() {
314
+ const tableBody = document.getElementById('forecastsTable');
315
+ tableBody.innerHTML = '';
316
+
317
+ forecasts.forEach(forecast => {
318
+ const status = getStatusText(forecast.status);
319
+ const phaseClass = getPhaseClass(forecast.phase);
320
+
321
+ const row = document.createElement('tr');
322
+ row.className = `hover:bg-gray-50 ${phaseClass}`;
323
+ row.innerHTML = `
324
+ <td class="px-6 py-4 whitespace-nowrap">
325
+ <div class="flex items-center">
326
+ <div class="flex-shrink-0 h-10 w-10 bg-blue-100 rounded-full flex items-center justify-center">
327
+ <i class="fas fa-gamepad text-blue-600"></i>
328
+ </div>
329
+ <div class="ml-4">
330
+ <div class="text-sm font-medium text-gray-900">${forecast.game}</div>
331
+ ${forecast.isDemo ? '<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-yellow-800">DEMO</span>' : ''}
332
+ </div>
333
+ </div>
334
+ </td>
335
+ <td class="px-6 py-4 whitespace-nowrap">
336
+ <div class="text-sm text-gray-900">${forecast.casino}</div>
337
+ </td>
338
+ <td class="px-6 py-4 whitespace-nowrap">
339
+ <div class="text-sm text-gray-500">${forecast.time}</div>
340
+ </td>
341
+ <td class="px-6 py-4 whitespace-nowrap">
342
+ <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full ${forecast.phase === 'Отдача' ? 'bg-green-100 text-green-800' : forecast.phase === 'Сбор' ? 'bg-yellow-100 text-yellow-800' : 'bg-red-100 text-red-800'}">
343
+ ${forecast.phase}
344
+ </span>
345
+ </td>
346
+ <td class="px-6 py-4 whitespace-nowrap">
347
+ <div class="text-sm text-gray-900">${forecast.forecast}</div>
348
+ </td>
349
+ <td class="px-6 py-4 whitespace-nowrap">
350
+ <span class="${status.class} text-sm font-medium">${status.text}</span>
351
+ </td>
352
+ <td class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
353
+ <button class="text-blue-600 hover:text-blue-900 detail-btn" data-id="${forecast.id}">Подробнее</button>
354
+ </td>
355
+ `;
356
+ tableBody.appendChild(row);
357
+ });
358
+
359
+ // Добавляем обработчики событий для кнопок "Подробнее"
360
+ document.querySelectorAll('.detail-btn').forEach(btn => {
361
+ btn.addEventListener('click', () => {
362
+ const forecastId = parseInt(btn.getAttribute('data-id'));
363
+ showForecastDetails(forecastId);
364
+ });
365
+ });
366
+ }
367
+
368
+ // Функция для показа деталей прогноза
369
+ function showForecastDetails(id) {
370
+ const forecast = forecasts.find(f => f.id === id);
371
+ if (!forecast) return;
372
+
373
+ const status = getStatusText(forecast.status);
374
+
375
+ document.getElementById('detailGameTitle').textContent = `${forecast.game} — ${forecast.casino}`;
376
+ document.getElementById('detailTime').textContent = forecast.time;
377
+ document.getElementById('detailPhase').textContent = forecast.phase;
378
+ document.getElementById('detailStatus').textContent = status.text;
379
+ document.getElementById('detailStatus').className = `font-medium ${status.class}`;
380
+ document.getElementById('detailForecast').textContent = forecast.forecast;
381
+ document.getElementById('detailComment').textContent = forecast.comment;
382
+
383
+ document.getElementById('detailModal').classList.remove('hidden');
384
+ }
385
+
386
+ // Инициализация страницы
387
+ document.addEventListener('DOMContentLoaded', () => {
388
+ renderForecasts();
389
+
390
+ // Обработчики модального окна запроса прогноза
391
+ document.getElementById('requestForecastBtn').addEventListener('click', () => {
392
+ document.getElementById('requestModal').classList.remove('hidden');
393
+ });
394
+
395
+ document.getElementById('closeModalBtn').addEventListener('click', () => {
396
+ document.getElementById('requestModal').classList.add('hidden');
397
+ });
398
+
399
+ document.getElementById('submitRequestBtn').addEventListener('click', () => {
400
+ // Здесь должна быть логика отправки запроса
401
+ alert('Запрос прогноза отправлен!');
402
+ document.getElementById('requestModal').classList.add('hidden');
403
+
404
+ // Добавляем новый прогноз в "работе"
405
+ const newForecast = {
406
+ id: forecasts.length + 1,
407
+ game: "Aviator",
408
+ casino: "1Win",
409
+ time: new Date().toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit' }) + ', ' + new Date().toLocaleDateString('ru-RU'),
410
+ phase: "Анализ",
411
+ forecast: "Идет анализ данных...",
412
+ comment: "Система анализирует последние данные для составления прогноза",
413
+ status: "working",
414
+ isDemo: true
415
+ };
416
+
417
+ forecasts.unshift(newForecast);
418
+ renderForecasts();
419
+ });
420
+
421
+ // Обработчики модального окна деталей прогноза
422
+ document.getElementById('closeDetailModalBtn').addEventListener('click', () => {
423
+ document.getElementById('detailModal').classList.add('hidden');
424
+ });
425
+
426
+ // Обработчики кнопок выбора времени
427
+ document.querySelectorAll('.time-btn').forEach(btn => {
428
+ btn.addEventListener('click', function() {
429
+ document.querySelectorAll('.time-btn').forEach(b => {
430
+ b.classList.remove('bg-blue-100', 'border-blue-300', 'text-blue-700');
431
+ b.classList.add('bg-gray-100', 'hover:bg-gray-200', 'border-gray-300');
432
+ });
433
+
434
+ this.classList.add('bg-blue-100', 'border-blue-300', 'text-blue-700');
435
+ this.classList.remove('bg-gray-100', 'hover:bg-gray-200', 'border-gray-300');
436
+ });
437
+ });
438
+
439
+ // Обработчик кнопки авто-прогноза
440
+ document.getElementById('autoForecastBtn').addEventListener('click', () => {
441
+ alert('Авто-прогноз запрошен для всех ваших любимых слотов!');
442
+ });
443
+
444
+ // Обработчик кнопки уведомлений
445
+ document.getElementById('notificationBtn').addEventListener('click', () => {
446
+ alert('Здесь будут ваши уведомления о новых прогнозах!');
447
+ });
448
+
449
+ // Обработчик сортировки
450
+ document.getElementById('sortBtn').addEventListener('click', () => {
451
+ document.getElementById('sortDropdown').classList.toggle('hidden');
452
+ });
453
+
454
+ document.querySelectorAll('.sort-option').forEach(option => {
455
+ option.addEventListener('click', function(e) {
456
+ e.preventDefault();
457
+ const sortType = this.getAttribute('data-sort');
458
+
459
+ // Простая демонстрация сортировки
460
+ if (sortType === 'date-desc') {
461
+ forecasts.sort((a, b) => b.id - a.id);
462
+ } else if (sortType === 'date-asc') {
463
+ forecasts.sort((a, b) => a.id - b.id);
464
+ } else if (sortType === 'phase') {
465
+ forecasts.sort((a, b) => a.phase.localeCompare(b.phase));
466
+ } else if (sortType === 'status') {
467
+ forecasts.sort((a, b) => a.status.localeCompare(b.status));
468
+ }
469
+
470
+ renderForecasts();
471
+ document.getElementById('sortDropdown').classList.add('hidden');
472
+ });
473
+ });
474
+
475
+ // Закрываем dropdown при клике вне его
476
+ document.addEventListener('click', (e) => {
477
+ if (!e.target.closest('#sortBtn') && !e.target.closest('#sortDropdown')) {
478
+ document.getElementById('sortDropdown').classList.add('hidden');
479
+ }
480
+ });
481
+ });
482
+ </script>
483
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=timoon811/phase12" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
484
+ </html>
prompts.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ Переходим к следующей странице — “Прогнозы”. ⸻ 🔷 СТРАНИЦА «ПРОГНОЗЫ» Это раздел, где пользователь получает персональные прогнозы на выбранные слоты и может управлять своими запросами. ⸻ 🎯 ЦЕЛЬ РАЗДЕЛА 1. Позволить запрашивать прогноз по конкретной игре 2. Показать статус обработки (в работе, готов, ошибка) 3. Вывести историю предыдущих прогнозов 4. Дать причину прогноза (AI-комментарий), чтобы повысить доверие ⸻ 🧱 СТРУКТУРА СТРАНИЦЫ «ПРОГНОЗЫ» 🔹 1. Заголовок 📊 Мои прогнозы ⸻ 🔸 2. Кнопка “Запросить новый прогноз” [+ Запросить прогноз] Открывает модалку или блок с полями: • 🎰 Выбор игры • 🎲 Выбор казино • ⏱ Временной интервал (1H, 4H, 1D) • 🔘 Кнопка “Запросить” ⸻ 🔸 3. Таблица / карточки активных прогнозов Каждая строка/карточка: 🎰 Aviator — 1Win 🕓 Время прогноза: 12:58 ⚡ Фаза: отдача 📈 AI-комментарий: Ожидается рост коэффициентов на 120–160% 🔄 Статус: Готов ✅ / В работе 🔄 / Истёк ⛔ [ Подробнее ] • Кнопка “Подробнее” открывает график и аналитический комментарий • В демо-режиме всё показывается с пометкой “DEMO” ⸻ 🔸 4. Уведомления (если активированы) • Иконка колокольчика или лента push-уведомлений о прогнозах ⸻ 🎨 ВИЗУАЛЬНЫЕ АКЦЕНТЫ • Цвет фона карточек — по фазе (отдача = зелёный оттенок и т.д.) • График фазы можно открыть в попапе • При отсутствии подписки → можно запросить один прогноз в демо ⸻ 🧠 ДОПОЛНИТЕЛЬНЫЕ ИДЕИ • Кнопка “Получить авто-прогноз по всем любимым слотам” • Интеграция с Telegram — “Прогноз отправлен в Telegram” • Возможность сортировки: по дате, по фазе, по статусу ⸻ Хочешь, чтобы мы собрали сейчас модальное окно «Запросить прогноз» или двигаемся дальше — к странице “История”?