Commit graph

125 commits

Author SHA1 Message Date
Admin
3893f38532 🐛 fix: восстановить эндпоинты верификации и добавить уведомления жильцам 2026-04-30 10:56:34 +04:00
Admin
b1cda13c96 🚀 Upgrade Web Panel: Integration with Mutt and G-Drive Sync automation 2026-04-29 12:07:34 +04:00
Admin
43814bc12c 📦 Авто-экспорт чата: chat_history_2026-04-28_21-19.json 2026-04-28 21:19:02 +04:00
Admin
c94474d0a8 📦 Авто-экспорт чата: chat_history_2026-04-27_03-00.json 2026-04-27 03:00:00 +04:00
Admin
827bc97e92 feat: 🎙️ AI Voice & Video recognition enabled via Faster-Whisper. Fix ffprobe path issues in systemd. 2026-04-22 16:36:40 +04:00
Admin
1d5752dfd4 FEAT: Voice Recognition (Whisper Small) for owner - v4.1 2026-04-22 12:42:37 +04:00
Admin
f7c06fd471 FEAT: Full AI Automation (Mail -> PDF -> Drive -> WebUI) [fixed venv bloat] 2026-04-20 19:52:54 +04:00
Admin
f4ac98c6f4 SAVE: Backup before Google Drive integration 2026-04-20 12:13:52 +04:00
Admin
a28fcce19b INIT: Карта ИИ-умений и MCP серверов (Docker, SQLite, NotebookLM) 2026-04-19 08:48:42 +04:00
Admin
5794971861 v4.8: Final release. Artifacts fixed, combined media support, systemd PATH updated, lessons learned recorded. 2026-04-19 08:32:14 +04:00
Admin
aadfc041b4 v4.8: Восстановление Artifact Manager, поддержка фото+док в рассылках и постах, исправление API 2026-04-18 23:34:14 +04:00
Admin
05e5659204 FIX: Добавлен роут /files и обновлен шаблон файлового хранилища 2026-04-18 23:25:14 +04:00
Admin
d068e8137f FIX: Полное восстановление веб-панели, фикс экспорта JSON, исправление путей PATH в системных юнитах и обновление шаблонов 2026-04-18 23:22:41 +04:00
Admin
434cd71505 📦 Авто-экспорт чата: chat_history_2026-04-18_23-22.json 2026-04-18 23:22:01 +04:00
Admin
2ac9241447 📦 Авто-экспорт чата: chat_history_2026-04-18_23-13.json 2026-04-18 23:13:56 +04:00
Admin
01fe6da097 📦 Авто-экспорт чата: chat_history_2026-04-18_22-54.json 2026-04-18 22:54:44 +04:00
Admin
98fa1c2711 Fix duplicate processes, fix JSON export models, fix timezone to Ulyanovsk 2026-04-18 21:56:22 +04:00
Admin
4ca3798446 LKM37: Пре-релиз v3.1 перед масштабным редизайном 2026-04-17 11:06:50 +04:00
Admin
27729ab512 📄📷 fix: Отправка фото + документа отдельными сообщениями
- Telegram не поддерживает фото+документ в одном сообщении
- Теперь отправляются 2 сообщения: документ + фото
- Исправлен UI — фото не очищается при выборе документа
- Исправлена сериализация chat_id (int → str)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 22:50:40 +04:00
Admin
54e8cea522 📄 feat: Отправка документов (PDF, DOCX, XLSX...) через веб-панель
Новый функционал:
- Загрузка документов через веб-панель (10 форматов)
- Отправка в любую тему форума по расписанию
- Поддержка: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, ZIP, RAR
- Отправка в чат и/или всем верифицированным жильцам
- UI: превью документа, кнопка удаления

Изменения:
- database/models.py: document_file_id, document_name поля
- database/migrate_v3_4_documents.py: миграция БД
- web/app.py: API endpoint с загрузкой документов
- services/scheduler.py: отправка документов по расписанию
- web/templates/scheduled_posts.html: UI для загрузки документов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-13 21:51:52 +04:00
Admin
e1d6c58d9c 📝 docs: Добавлен план VPN для жильцов
Запланирована система раздачи VPN конфигов:
- /vpn — запросить конфиг из пула
- Авто-напоминания об истечении (7, 3 дня)
- /vpn_add — админ добавляет конфиги пачкой
- /vpn_stats — статистика
- Веб-панель управления пулом
- Сгорание 1-го числа след. месяца

Причина: РКН блокирует интернет, жильцы теряют связь с домом
Приоритет: Высокий

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 19:40:01 +04:00
Admin
e8653595eb 🎨 fix: Исправлена страница Настроек дайджеста
БЫЛО: CSS стили выводились как текст на странице
СТАЛО: Стили правильно в <head> через base.html

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 19:18:41 +04:00
Admin
16ce10765b 🛡️ fix: Исправлен импорт ADMIN_CHAT_ID для safety модуля
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 19:00:16 +04:00
Admin
23ee551271 🛡️ feat: Система защиты от случайных рассылок
Техническая защита:
- services/safety_guard.py — модуль безопасности
- config.py — SAFETY_MODE переменная
- main.py — инициализация при запуске
- .env.example — документация настройки

Документация для AI-агентов:
- AI_AGENT_RULES.md — полные правила поведения
- КРИТИЧЕСКИЕ-ПРАВИЛА.md — обновлено с Правилом №4

Как работает:
- SAFETY_MODE=production — обычная работа
- SAFETY_MODE=safe — блокировка отправок в общий чат
- Логирование всех заблокированных попыток
- Декоратор @require_production_mode

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 18:57:42 +04:00
Admin
97c3e5864d 🎨 refactor: Единая навигация — ВСЕ 14 страниц используют base.html
БЫЛО: Каждая из 14 страниц имела своё собственное вшитое меню
      с разным набором кнопок (от 4 до 10 пунктов)

СТАЛО: Все 14 страниц наследуют base.html с единым меню из 14 пунктов
       в 4 разделах: Пользователи / Коммуникации / Контент / Система

Убрано 1949 строк дублирующегося кода, добавлено 1323 строки чистого контента.
Экономия: -626 строк (32% сокращение).

Переписанные страницы:
- dashboard.html, users.html, verification.html
- phones.html, polls.html, events.html
- schedules.html, ads.html, scheduled_posts.html, export.html

Результат: На ЛЮБОЙ странице пользователь видит ВСЕ 14 пунктов меню.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 18:52:58 +04:00
Admin
bd3a56ab3d 🎨 fix: Единое меню навигации на всех страницах
- Убраны дубли пунктов меню (Умная рассылка отдельная удалена)
- Структура: Пользователи / Коммуникации / Контент / Система
- Все страницы наследуют base.html с одинаковым меню
- Добавлены Настройки дайджеста в меню
- Правило №3 добавлено в КРИТИЧЕСКИЕ-ПРАВИЛА.md

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 18:33:01 +04:00
Admin
aaac93594d 📰 fix: Исправлена отправка превью дайджеста через HTTP
- Используется aiohttp вместо bot.send_message
- Нет ошибки Timeout context manager
- Коммит в Gitea

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 18:29:07 +04:00
Admin
9033310cfa 📰 fix: Исправлена генерация дайджеста
- Добавлен API endpoint /api/digest/generate
- Исправлена JS функция generateNow() — теперь реально вызывает API
- Превью отправляется админу в Telegram после генерации
- Время авто-генерации изменено на 19:00 Ульяновск (15:00 UTC)
- Проверка на дубликаты за ту же неделю

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 18:26:27 +04:00
Admin
9a8dafba27 🕐 fix: Локальное время UTC+4 (Ульяновск) во всех страницах панели
- Добавлены функции to_local() и fmt_local()
- Время рассылок теперь 17:55 вместо 13:55
- Время прочтений в локальном поясе
- Время запланированных постов исправлено
- Время дайджестов исправлено

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 18:12:52 +04:00
Admin
8adcb3bdda 🚨 fix: Убрать спам в общий чат при умной рассылке
- Удалена отправка объявления в ADMIN_CHAT_ID (общий чат)
- Умная рассылка идёт ТОЛЬКО выбранным получателям
- Статистика отправляется только админу в личку
- broadcast_type='smart' вместо 'manual'
- chat_id и message_id теперь None в БД

Инцидент: бот спамил в общий чат со 100+ жителями

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 18:04:56 +04:00
Admin
07d7a51f10 🚨 fix: Критические исправления рассылок
- Глобальный синглтон бота (bot_instance.py) — работает из любого процесса
- Прямые HTTP запросы в send_smart_broadcast — нет ошибки Timeout context
- Исправлен joinedload в InitiativeGroupService
- Удалён дубликат route /broadcast
- Удалена страница /broadcasts — всё в одном месте с табами
- Удалён /api/broadcast/send — дублировал /api/broadcast/create
- Добавлен dry_run режим для тестирования без отправки
- Двойное подтверждение перед реальной рассылкой
- Добавлен файл КРИТИЧЕСКИЕ-ПРАВИЛА.md

Инцидент: тестовая рассылка ушла реальным пользователям

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-12 17:57:18 +04:00
Admin
fa8c1d53d9 🔄 feat: Unify Regular and Smart broadcast UI into single page with type selector
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-06 23:29:32 +04:00
Admin
f7aaf96cfa 🎨 feat: Add sidebar navigation for Smart Broadcasts and Digests sections
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-06 23:21:31 +04:00
Admin
222c2ba521 🚀 feat: V3.1 - Smart broadcasts with read tracking + Weekly digests with approval workflow
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-06 23:01:10 +04:00
Admin
f958446767 📋 feat: add V3 feature plan - smart broadcasts, digests, feedback system
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-06 21:51:28 +04:00
Admin
ccc816ce4f 🕐 fix: локальное время UTC+4 + защита от дублирования постов
- Timezone: веб-панель показывает локальное время (UTC+4, Ульяновск)
- Timezone: конвертация UTC → локальное при отображении
- Duplicate fix: промежуточный статус 'sending' в БД
- Duplicate fix: только один процесс берет пост
- UI: подсказки 'По твоему времени (UTC+4)'
- Тест: пост 5 опубликован ровно 1 раз 

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 22:37:35 +04:00
Admin
63d059ddb0 fix: timezone конвертация + general topic fix
- Timezone: конвертация в UTC вместо простого удаления tzinfo
- General topic: не добавлять message_thread_id для topic_id=1
- Telegram API требует БЕЗ message_thread_id для общего чата
- Тест: пост 3 успешно опубликован
- Исправлены 2 критические ошибки планировщика

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 22:09:05 +04:00
Admin
3bd7fe0371 fix: окончательное исправление Path + тест API
- Очищен __pycache__ (Python кэш)
- Бот перезапущен с новым кодом
- Тест API: пост создан успешно (ID=2)
- Веб-сервер работает без ошибок
- Пользователь уведомлён

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 18:56:45 +04:00
Admin
e991be036d 🐛 fix: добавить импорт Path в web/app.py
- Исправлена ошибка 'name Path is not defined'
- Добавлена строка: from pathlib import Path
- Теперь запланированные посты работают корректно

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 18:44:47 +04:00
Admin
d8c9599ac1 🔧 UI fixes: единое меню во всех страницах + кнопка запланированных постов
- Исправлено 'плавающее' меню (дублирование кнопок при навигации)
- Создан base.html - единый базовый шаблон для всех страниц
- Добавлена кнопка '📅 Запланированные посты' во все 11 страниц
- Sticky sidebar с улучшенным дизайном
- Все страницы теперь имеют одинаковое меню (11 кнопок)
- Улучшенная подсветка активного пункта (border-left)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 15:59:55 +04:00
Admin
fc06ec4a12 v1.3 - Scheduled Posts: отложенная публикация постов по расписанию
- Новая страница /scheduled_posts в веб-панели
- Создание постов с фото/текстом в любую тему форума
- Планирование даты и времени публикации
- Автоматическая отправка по расписанию (каждую минуту)
- Поддержка всех 10 тем форума
- Уведомления админа о публикации/ошибках
- Миграция БД: таблица scheduled_posts
- Тесты: test_scheduled_posts.py

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 15:52:47 +04:00
Admin
1825d26230 📌 snapshot before scheduled posts feature - v1.2 prep
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-05 15:13:37 +04:00
Admin
1e61eca60c v1.35 КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ ВЕРИФИКАЦИИ
🐛 ПРОБЛЕМА:
• Жильцы писали номер квартиры — он НЕ СОХРАНЯЛСЯ
• 11 человек верифицированы БЕЗ квартиры!
• Авто-верификация верифицировала без проверки квартиры

🔧 ИСПРАВЛЕНИЯ:

1️⃣ web/app.py — auto_verify:
• Теперь верифицирует ТОЛЬКО с квартирой
• Проверка: apartment != None AND apartment != ''

2️⃣ handlers/verification.py — process_verification:
• Если верифицирован БЕЗ квартиры → СОХРАНЯЕТ!
• Если верифицирован С квартирой → сообщение
• Для неверифицированных → как раньше

 РЕЗУЛЬТАТ:
• Жильцы смогут добавить квартиру постфактум
• Авто-верификация не сломает данные
• 11 человек смогут восстановить квартиры

📝 ФАЙЛЫ:
• web/app.py: auto_verify fix
• handlers/verification.py: apartment save fix

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-17 18:24:59 +04:00
Admin
75a17a3de5 v1.34 Комплексное тестирование и исправления
🧪 ТЕСТИРОВАНИЕ:
• Проверены все кнопки меню
• Протестировано для всех уровней доступа
• Найдены и исправлены проблемы

🐛 ИСПРАВЛЕНИЯ:
• IG меню — теперь доступно админам даже если не в ИГ
• Мастера — добавлена заглушка если список пуст
• Суперадмин добавлен в ИГ автоматически

 РЕЗУЛЬТАТЫ ТЕСТОВ:
• Всего пользователей: 19
• Верифицированы: 12
• Не верифицированы: 7
• ИГ: 9
• Админы: 1
• Мастера в базе: 1
• Экстренные: 5

📝 ФАЙЛЫ:
• handlers/initiative_group.py: доступ админам
• handlers/users.py: заглушка для мастеров
• test_bot_comprehensive.py: новый тест

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-17 15:57:34 +04:00
Admin
f2fc6bb06e v1.32 Исправление ChatMemberUpdatedFilter
🐛 ИСПРАВЛЕНИЯ:
• ChatMemberUpdatedFilter не работает в aiogram 3.x как ожидалось
• Временное решение: закомментировано приветствие новых участников
• Импорт ChatMemberUpdatedFilter удалён

 БОТ РАБОТАЕТ:
• Active: active (running)
• Обработка сообщений: OK
• Update id обрабатываются

📝 ФАЙЛЫ:
• handlers/users.py: закомментировано welcome_new_member

🎯 В ПЛАНЕ:
• Разобраться с ChatMemberUpdatedFilter правильно
• Вернуть приветствие новых участников

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-17 15:46:12 +04:00
Admin
73fb4885b9 v1.31 Инструкция для ИГ
📋 ИНСТРУКЦИИ:
• ИНСТРУКЦИЯ_ИГ_ВЕРИФИКАЦИЯ.md — полная версия
• ИГ_БЫСТРАЯ_ИНСТРУКЦИЯ.md — короткая версия

 СОДЕРЖАНИЕ:
• Как найти бота (@lkmthreeseven_bot)
• Как пройти верификацию
• Возможности после верификации
• Особенности для ИГ
• Ответы на вопросы

🎯 ДЛЯ ОТПРАВКИ:
Скопируй текст из файла и отправь в чат ИГ!
Время на верификацию: 2-3 минуты!

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 22:49:16 +04:00
Admin
e8e71db0f2 v1.30 Исправление импорта aiogram 3.x
🐛 ИСПРАВЛЕНИЯ:
• ChatMemberFilter → ChatMemberUpdatedFilter
• Исправлен импорт в handlers/users.py
• Бот падал с ImportError

 ПРОВЕРЕНО:
• python3 -m py_compile — OK
• systemctl restart domovoy-bot — OK
• Active: active (running)
• Memory: 132MB — норма

📁 ФАЙЛЫ:
• handlers/users.py: исправлен импорт

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-16 22:18:56 +04:00
Admin
b24a8834d5 v1.29 Мониторинг веб-сервера
👁️ МОНИТОРИНГ ВЕБА:
• Проверка uvicorn на порту 8000
• Автоперезапуск если упал
• Проверка PID процесса
• Проверка доступности панели

 РАБОТАЕТ:
• Бот (systemd)
• Веб-сервер (uvicorn)
• Интервал: 30 секунд

📝 ФАЙЛЫ:
• bot-monitor.sh: обновлён

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-14 13:00:22 +04:00
Admin
8bd4629a57 v1.28 АВТО-МОНИТОРИНГ БОТА
👁️ МОНИТОРИНГ:
• bot-monitor.sh — скрипт проверки (30 сек)
• domovoy-monitor.service — systemd юнит
• Автоперезапуск при падении
• Проверка: systemd + веб-панель

 РАБОТАЕТ:
• Проверка каждые 30 секунд
• Автоперезапуск если упал
• Проверка веб-панели (порт 8000)
• Логирование в monitor.log

📝 ФАЙЛЫ:
• bot-monitor.sh (executable)
• domovoy-monitor.service

🎯 ТЕПЕРЬ:
• Бот САМ следит за собой
• Перезапускается при падении
• Ты НИЧЕГО не делаешь!

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-14 12:40:39 +04:00
Admin
bd6a897e59 v1.27 SYSTEMD автозапуск — ГОТОВО!
🤖 SYSTEMD УСТАНОВЛЕН:
• domovoy-bot.service — systemd юнит
• install-systemd.sh — скрипт установки
• Бот работает через systemd
• Автозапуск после ребута: ВКЛЮЧЁН
• Перезапуск при падении: РАБОТАЕТ

 ПРОВЕРЕНО:
• systemctl start domovoy-bot — ЗАПУЩЕН
• systemctl enable domovoy-bot — АВТОЗАПУСК ВКЛ
• Restart=always — ПЕРЕЗАПУСК ПРИ ПАДЕНИИ
• Memory: 75MB — НОРМАЛЬНО
• CPU: 2.7s — НОРМАЛЬНО

📝 КОМАНДЫ:
sudo systemctl status domovoy-bot
sudo systemctl restart domovoy-bot
journalctl -u domovoy-bot -f

🎯 ВЕЧЕРОМ:
reboot локального хоста → бот сам запустится!

📁 ФАЙЛЫ:
• domovoy-bot.service
• install-systemd.sh

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-13 18:20:35 +04:00