CardForge
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
README.md
🤖CardForge - бот для автоматических поздравлений
Проект представляет собой автоматизированную систему для генерации персонализированных поздравлений и их отправки клиентам по email. Система использует GigaChat API для создания контента и работает в нескольких режимах.
🎯 Основные возможности
🤖 Автономный режим
- Автоматическая проверка базы данных на новые события
- Генерация персонализированных поздравлений от лица Сбера
- Отправка писем клиентам с прикрепленными открытками
- Отправка копий всех писем оператору для контроля
- Автоматическое определение нового дня
🚀 Быстрая отправка
- Разовая отправка всех сегодняшних событий
- С копиями оператору
- Без ожидания следующей проверки
👁️ Ручной режим
- Предпросмотр каждого письма перед отправкой
- Возможность перегенерации изображений
- Ручное подтверждение отправки
- Управление клиентами в БД
📋 Команды бота
Основные команды
/start - Главное меню с выбором режима
/start_auto - Запуск автономного режима
/stop_auto - Остановка автономного режима
/quick_send - Быстрая отправка всех сегодняшних событий
/scan - Ручной режим с предпросмотром
/status - Статус системы
Управление данными
/clients - Показать всех клиентов из общей БД
/today - Показать сегодняшние события из JSON файла
/add - Добавить нового клиента в общую БД
/upcoming - Предстоящие события (14 дней)
/cleanup - Очистить старые JSON файлы
/help - Полная справка
🏗️ Архитектура проекта
Структура файлов
├── bot.py # Основной файл бота (Telegram)
├── config.py # Конфигурация и настройки
├── database.py # Работа с SQLite БД клиентов
├── llm_service.py # Генерация контента через GigaChat
├── email_service.py # Отправка email через SMTP
├── file_manager.py # Управление JSON файлами событий
├── add_client_manual.py # Скрипт для ручного добавления клиентов
├── clients.db # База данных SQLite (создается автоматически)
└── data/ # Директория для данных
├── images/ # Сгенерированные изображения
└── events_*.json # JSON файлы событий
Ключевые компоненты
- Telegram Bot (
) - интерфейс управленияbot.py - GigaChat Service (
) - генерация текста и изображенийllm_service.py - Database Manager (
) - работа с клиентамиdatabase.py - Email Service (
) - отправка писемemail_service.py - File Manager (
) - управление файлами событийfile_manager.py
🔧 Настройка
1. Установка зависимостей
2. Конфигурация переменных окружения
Создайте файл в корне проекта:.env
3. Настройка GigaChat API
- Получите учетные данные GigaChat API
- Укажите их в файле .env
- Убедитесь, что у вас есть доступ к GigaChat Pro для генерации изображений
4. Настройка SMTP
Проект поддерживает:
- Gmail (рекомендуется использовать App Password)
- Другие SMTP серверы
- SSL/TLS шифрование
🚀 Запуск бота
1. Запуск вручную
2. Автоматический запуск
Бот автоматически запускает автономный режим при старте, если задан .OPERATOR_CHAT_ID
3. Команды для управления
После запуска отправьте боту для получения главного меню./start
📊 База данных
Структура таблицы clients
clients
Добавление клиентов
- Через команду
в боте/add - Через скрипт add_client_manual.py
- Непосредственно в SQLite
🔐 Безопасность
Хранение данных
- Учетные данные хранятся в переменных окружения
- База данных клиентов локально
- Файлы событий хранятся 7 дней
SMTP безопасность
- Использование SSL/TLS
- App Passwords вместо обычных паролей
- Ограниченные права доступа
⚙️ Кастомизация
Настройка автономного режима
В :config.py
Настройка генерации контента
В можно настроить:llm_service.py
- Шаблоны поздравлений от лица Сбера
- Промпты для генерации изображений
- Тон и стиль сообщений
Настройка SMTP
В :config.py
🐛 Устранение неполадок
Проблемы с GigaChat API
- Проверьте учетные данные в .env
- Убедитесь в наличии доступа к GigaChat Pro
- Проверьте квоты API
Проблемы с SMTP
- Для Gmail используйте App Password
- Проверьте настройки порта и хоста
- Убедитесь, что нет блокировки со стороны провайдера
Проблемы с базой данных
- Проверьте права доступа к файлу clients.db
- Убедитесь, что SQLite установлен
- Проверьте структуру таблиц
📈 Мониторинг
Статус системы
Команда показывает:/status
- Статус автономного режима
- Количество клиентов в БД
- Информацию о файлах
- Статистику отправки
Логирование
- Все операции логируются в консоль
- Ошибки отправляются оператору
- Сохраняются JSON файлы с результатами
🔄 Технические детали
Генерация контента
- Текст: GigaChat создает персонализированные поздравления от лица Сбера
- Изображения: GigaChat Pro генерирует тематические открытки без лиц людей
- Промпты: Адаптируются под тип события и описание клиента
Работа с изображениями
- Изображения сохраняются в data/images/
- Используются заглушки при ошибках генерации
- Поддерживается перегенерация изображений
Управление памятью
- Автоматическая очистка старых файлов
- Оптимизированные запросы к БД
- Кэширование токенов GigaChat
🤝 Вклад в проект
Сообщение об ошибках
- Проверьте логи в консоли
- Укажите команду, которая вызвала ошибку
- Приложите конфигурацию (без паролей)
Предложения по улучшению
- Форматирование генерации контента
- Новые типы событий
- Дополнительные интеграции
📄 Лицензия
Проект предназначен для внутреннего использования. Все права на использование GigaChat API принадлежат СберБанку.