Новый функционал:
- Загрузка документов через веб-панель (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>
Запланирована система раздачи VPN конфигов:
- /vpn — запросить конфиг из пула
- Авто-напоминания об истечении (7, 3 дня)
- /vpn_add — админ добавляет конфиги пачкой
- /vpn_stats — статистика
- Веб-панель управления пулом
- Сгорание 1-го числа след. месяца
Причина: РКН блокирует интернет, жильцы теряют связь с домом
Приоритет: Высокий
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
БЫЛО: CSS стили выводились как текст на странице
СТАЛО: Стили правильно в <head> через base.html
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
БЫЛО: Каждая из 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>
- Используется aiohttp вместо bot.send_message
- Нет ошибки Timeout context manager
- Коммит в Gitea
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Добавлен API endpoint /api/digest/generate
- Исправлена JS функция generateNow() — теперь реально вызывает API
- Превью отправляется админу в Telegram после генерации
- Время авто-генерации изменено на 19:00 Ульяновск (15:00 UTC)
- Проверка на дубликаты за ту же неделю
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Добавлены функции to_local() и fmt_local()
- Время рассылок теперь 17:55 вместо 13:55
- Время прочтений в локальном поясе
- Время запланированных постов исправлено
- Время дайджестов исправлено
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Удалена отправка объявления в ADMIN_CHAT_ID (общий чат)
- Умная рассылка идёт ТОЛЬКО выбранным получателям
- Статистика отправляется только админу в личку
- broadcast_type='smart' вместо 'manual'
- chat_id и message_id теперь None в БД
Инцидент: бот спамил в общий чат со 100+ жителями
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Глобальный синглтон бота (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>
- Timezone: веб-панель показывает локальное время (UTC+4, Ульяновск)
- Timezone: конвертация UTC → локальное при отображении
- Duplicate fix: промежуточный статус 'sending' в БД
- Duplicate fix: только один процесс берет пост
- UI: подсказки 'По твоему времени (UTC+4)'
- Тест: пост 5 опубликован ровно 1 раз ✅
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- 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>