domovoy_bot/ИСТОРИЯ_ПРОФИЛЯ.md
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

9.5 KiB
Raw Permalink Blame History

📋 История версий профиля — v1.10

Версия: v1.10 Дата: 26 февраля 2026 г. Статус: Реализовано


📋 Описание

Система логирования изменений профиля пользователя. Бот автоматически отслеживает изменения никнейма, имени, фамилии, квартиры, телефона. Админ может посмотреть полную историю изменений любого пользователя.


🎯 Возможности

  • Авто-логирование изменений профиля
  • Отслеживаемые поля: username, first_name, last_name, apartment, phone
  • История изменений с датами
  • Просмотр истории конкретного пользователя
  • Просмотр всех изменений за период
  • История по конкретному полю
  • Статистика изменений

📱 Команды

Для администраторов:

Команда Описание Пример
/history <user_id> [лимит] История профиля пользователя /history 123456789 20
/all_history [дни] [лимит] Все изменения за период /all_history 7 50
/field_history <поле> [дни] История конкретного поля /field_history apartment 7
/history_stats Статистика изменений /history_stats

🎯 Отслеживаемые поля

Поле Описание Когда меняется
username Никнейм (@user) Пользователь сменил ник
first_name Имя Пользователь сменил имя
last_name Фамилия Пользователь сменил фамилию
apartment Квартира Админ сменил квартиру
phone Телефон Админ сменил телефон

🎯 Сценарии использования

Сценарий 1: История пользователя

Админ:

/history 123456789

Бот:

📋 История профиля: Иван Иванов (кв. 45)

Показано последних: 5 из 20

1. Никнейм (26.02.2026 15:30)
   ├─ Было: @ivanov_old
   └─ Стало: @ivanov_new

2. Имя (25.02.2026 10:00)
   ├─ Было: Иван
   └─ Стало: Иоанн

3. Квартира (20.02.2026 14:00)
   ├─ Было: 42
   └─ Стало: 45

4. Никнейм (15.02.2026 09:00)
   ├─ Было: пусто
   └─ Стало: @ivanov_old

5. Телефон (10.02.2026 12:00)
   ├─ Было: пусто
   └─ Стало: +7 (999) 123-45-67

Сценарий 2: Все изменения за период

Админ:

/all_history 7 50

Бот:

📋 Все изменения за 7 дн.

Показано: 25 из 50

👤 Иван Иванов (кв. 45) — 3 изм.
   └─ Никнейм: @ivanov_old → @ivanov_new
   └─ Имя: Иван → Иоанн
   └─ Квартира: 42 → 45

👤 Петр Петров (кв. 88) — 2 изм.
   └─ Телефон: пусто → +7 (999) 000-00-00
   └─ Фамилия: Петров → Петров-Водкин

...

Сценарий 3: История квартиры

Админ:

/field_history apartment 30

Бот:

📋 История поля: Квартира

За 30 дн. (15 изм.)

1. Иван Иванов (кв. 45) — 26.02.2026 14:00
   └─ 42 → 45

2. Петр Петров (кв. 88) — 25.02.2026 10:00
   └─ пусто → 88

3. Анна Сидорова (кв. 12) — 20.02.2026 15:00
   └─ 10 → 12

Сценарий 4: Статистика

Админ:

/history_stats

Бот:

📊 Статистика истории профиля

Всего записей: 500
За последние 7 дней: 50

📁 По полям:

• Никнейм: 200
• Имя: 150
• Фамилия: 80
• Квартира: 50
• Телефон: 20

Сценарий 5: Детект шпиона по истории

Админ видит подозрительную активность:

  1. Проверяет историю:

    /history 123456789
    
  2. Видит что пользователь сменил:

    • Никнейм 5 раз за неделю
    • Имя 3 раза
    • Квартиру 2 раза
  3. Делает вывод:

    • Подозрительная активность
    • Возможно шпион меняет данные чтобы скрыться
    • Проверяет через /spies

🗄️ База данных

Таблица profile_history:

CREATE TABLE profile_history (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id BIGINT NOT NULL,
    field_name TEXT NOT NULL,      -- username, first_name, last_name...
    old_value TEXT,                -- Старое значение
    new_value TEXT,                -- Новое значение
    changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(user_id)
)

Индексы:

  • ix_profile_history_user — по пользователю
  • ix_profile_history_field — по полю
  • ix_profile_history_time — по времени

🧪 Тестирование

Чек-лист проверки:

1. История пользователя

# Админ:
/history 123456789
  • История отображается
  • Даты верные
  • Старые/новые значения показаны

2. Все изменения

/all_history 7 50
  • Изменения за период показаны
  • Группировка по пользователям

3. История поля

/field_history apartment 7
  • Только изменения квартиры
  • За 7 дней

4. Статистика

/history_stats
  • Общее количество
  • По полям распределено

5. Авто-логирование

# Пользователь меняет ник
# Бот должен записать в историю
  • Изменение записано
  • В логах есть запись

📁 Изменённые файлы

Файл Изменения
database/models.py Модель ProfileHistory
database/migrate_add_profile_history.py Миграция БД
handlers/profile_history.py Хендлеры истории
handlers/chat_monitor.py Авто-логирование изменений
handlers/__init__.py Импорт profile_history_router
main.py Регистрация profile_history_router

🚀 Как использовать

Для админа:

  1. Посмотреть историю пользователя:

    /history 123456789
    
  2. Посмотреть все изменения:

    /all_history 7
    
  3. Проверить изменения квартиры:

    /field_history apartment 30
    
  4. Посмотреть статистику:

    /history_stats
    

💡 Советы

Когда использовать:

  • Подозрение на шпиона — проверяет историю изменений
  • Смена квартиры — кто и когда менял
  • Детект мультиаккаунтов — одинаковые изменения у разных аккаунтов
  • Аудит — кто что менял

Ложные срабатывания:

  • Пользователь сменил ник — нормальное явление
  • Telegram обновил имя — может меняться автоматически
  • Админ исправил ошибку — запись в истории будет

Настройка логирования:

В handlers/chat_monitor.py:

# Добавить свои поля для логирования
if user.apartment != new_apartment:
    changes.append(('apartment', user.apartment, new_apartment))

🔧 Отладка

Посмотреть историю в БД:

cd /home/matrixhasyou/domovoy_bot
source venv/bin/activate
sqlite3 database/domovoy.db

SELECT user_id, field_name, old_value, new_value, changed_at
FROM profile_history
ORDER BY changed_at DESC
LIMIT 20;

Логи:

tail -f logs/bot.log | grep -i "Profile change"

Преимущества

Было Стало
Не видно кто менял данные Полная история
Нет детекта изменений Авто-логирование
Не понятно когда сменил Даты и время
Нет статистики /history_stats

История профиля готова! 📋

Следующий шаг: тестирование на тестовой группе и фиксация версии v1.10