#!/usr/bin/env python3
"""
Отправка анализа возможности планировщика постов
"""
import asyncio
import sys
from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(BASE_DIR))

from aiogram import Bot
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from aiogram.client.session.aiohttp import AiohttpSession

from config import BOT_TOKEN, ADMIN_USER_ID, get_proxy_url

async def send_analysis():
    """Отправка анализа планировщика постов"""
    proxy_url = get_proxy_url()
    
    if proxy_url:
        session = AiohttpSession(proxy=proxy_url)
        bot = Bot(token=BOT_TOKEN, session=session, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
    else:
        bot = Bot(token=BOT_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
    
    message = """
📅 <b>АНАЛИЗ: ПЛАНИРОВЩИК ПОСТОВ ДЛЯ ВЕБ-ПАНЕЛИ</b>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🎯 <b>МОЖЕМ ЛИ РЕАЛИЗОВАТЬ?</b>

✅ <b>ДА! Полностью реализуемо!</b>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

📋 <b>ЧТО УЖЕ ЕСТЬ В КОДЕ:</b>

✅ <b>1. Планировщик (Scheduler)</b>
   • Файл: services/scheduler.py
   • Использует APScheduler
   • Уже работает с cron-задачами
   • Запускается при старте бота

✅ <b>2. Веб-панель (FastAPI)</b>
   • Файл: web/app.py (911 строк)
   • Есть страница /broadcast
   • Уже умеет: текст + фото
   • Уже есть выбор получателей

✅ <b>3. База данных (SQLAlchemy)</b>
   • Есть модели для всего
   • Нужно добавить: ScheduledPost
   • Хранить: текст, фото, тему, время

✅ <b>4. Темы форума</b>
   • Настроены 10 тем
   • message_thread_id работает
   • config.get_topic_id('topic_name')

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🔧 <b>ЧТО НУЖНО ДОБАВИТЬ:</b>

<b>1️⃣ Новая модель в БД:</b>
   ScheduledPost
   • id
   • text (текст поста)
   • photo_file_id (опционально)
   • topic_id (тема: 1, 6258, 6262...)
   • topic_name ('general', 'memes'...)
   • scheduled_time (когда отправить)
   • status ('pending', 'sent', 'failed')
   • created_at (когда создан)
   • error_message (если ошибка)

<b>2️⃣ Новая страница в веб-панели:</b>
   /scheduled_posts
   • Текстовое поле (с HTML поддержкой)
   • Загрузка фото
   • Выпадающий список тем
   • Датапикер (календарь)
   • Время (часы:минуты)
   • Кнопка "Запланировать"
   • Таблица запланированных
   • Кнопки: удалить, редактировать

<b>3️⃣ API endpoints:</b>
   • GET /scheduled_posts - страница
   • POST /api/scheduled_posts/create
   • POST /api/scheduled_posts/cancel
   • GET /api/scheduled_posts/list
   • DELETE /api/scheduled_posts/{id}

<b>4️⃣ Фоновая задача в Scheduler:</b>
   • Проверка каждую минуту
   • SELECT * FROM scheduled_posts 
     WHERE scheduled_time &lt;= NOW() 
     AND status = 'pending'
   • Отправка в нужную тему
   • Обновление status = 'sent'

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🎨 <b>КАК БУДЕТ ВЫГЛЯДЕТЬ:</b>

<b>Форма создания поста:</b>

📝 Текст: [большое поле]
📷 Фото: [выбрать файл]
📂 Тема: [выпадающий список ▼]
         • Общий чат
         • Мемы  
         • Объявления
         • Собрания
         • ...
📅 Дата: [🗓️ 2026-04-07]
⏰ Время: [14:30]

[✅ Запланировать пост]

<b>Таблица запланированных:</b>

| # | Тема | Когда | Статус | Действия |
|---|------|-------|--------|----------|
| 1 | Мемы | 07.04 10:00 | ⏳ | ❌ ✏️ |
| 2 | Общий | 08.04 15:00 | ⏳ | ❌ ✏️ |
| 3 | КГМ | 09.04 09:00 | ✅ | - |

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🛡️ <b>БЕЗОПАСНОСТЬ (НЕ ИСПОРТИМ ТЕКУЩЕЕ):</b>

✅ <b>Изолированные изменения:</b>
   • Новая модель - отдельная таблица
   • Новый endpoint - новый URL
   • Новая страница - новый файл HTML
   • Новая задача в scheduler - отдельный job

✅ <b>Миграция БД:</b>
   • ALTER TABLE (добавление таблицы)
   • Не меняем существующие таблицы
   • Без риска для текущих данных

✅ <b>Тестирование:</b>
   • Можно тестировать на одном посте
   • Отмена без последствий
   • Логи всех действий

✅ <b>Откат:</b>
   • Если что-то не так - удаляем таблицу
   • Новый код не трогает старый
   • Старый функционал не изменится

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🚀 <b>ПЛАН РЕАЛИЗАЦИИ:</b>

<b>Шаг 1:</b> Добавить модель ScheduledPost в БД
<b>Шаг 2:</b> Создать страницу /scheduled_posts
<b>Шаг 3:</b> Создать API endpoints
<b>Шаг 4:</b> Добавить задачу в Scheduler
<b>Шаг 5:</b> Тестирование на 1-2 постах
<b>Шаг 6:</b> Коммит в Gitea

<b>⚠️ ВАЖНО:</b>
Ни один существующий файл НЕ будет изменён критично!
Только добавления нового кода.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

💡 <b>СЦЕНАРИЙ ИСПОЛЬЗОВАНИЯ:</b>

1. Заходишь в веб-панель (порт 8000)
2. Кликаешь "📅 Запланированные посты"
3. Заполняешь форму:
   • Текст про юмор/мусор
   • Прикладываешь картинку
   • Выбираешь тему "Мемы"
   • Ставишь: 07.04.2026 10:00
4. Жмёшь "Запланировать"
5. Повторяешь для 5-6 постов
6. Бот сам отправит их по расписанию!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

✅ <b>ГОТОВО К РЕАЛИЗАЦИИ!</b>

<i>Можем начинать? Никакой текущий функционал не пострадает!</i>
    """
    
    try:
        await bot.send_message(ADMIN_USER_ID, message)
        print("✅ Анализ планировщика отправлен!")
    except Exception as e:
        print(f"❌ Ошибка: {e}")
    finally:
        await bot.session.close()

if __name__ == '__main__':
    asyncio.run(send_analysis())
