Corp/docs/reports/PROJECT_CLEANUP_PLAN.md
Игорь Надеин ee6e840252 Реорганизация документации и скриптов проекта
- Создана структура docs/ с категориями: completed, guides, architecture, diagnostic, in-progress, reports
- Перемещено 47+ MD файлов из корня проекта в docs/
- Удалено 6 устаревших/дублирующихся файлов
- Создана структура backend/scripts/ для тестов и утилит
- Перемещено 35 Python скриптов в backend/scripts/
- Создана структура backend/docs/ для технической документации
- Перемещено 12 MD файлов backend в backend/docs/
- Перемещены LDAP тестовые данные в backend/tests/fixtures/
- Добавлены README файлы для навигации
- Добавлены правила в .github/copilot-instructions.md для размещения документации

Результат:
- Корень проекта: только README.md
- Корень backend/: только manage.py и Django приложения
- Вся документация организована в структурированные папки
2025-12-26 13:49:51 +03:00

14 KiB
Raw Blame History

План наведения порядка в проекте EUSRR

Дата создания: 26 декабря 2025 г. Статус: Требуется выполнение


🎯 Критические задачи (безопасность)

1. КРИТИЧНО: Защита секретных данных

Приоритет: 🔴 ВЫСОКИЙ

Проблема: Файл backend/.env содержит реальные секретные данные в открытом виде:

  • SECRET_KEY Django
  • Токены Telegram бота
  • SMS API токены
  • Пароли баз данных
  • Email конфигурация

Действия:

  • Создать backend/.env.example с шаблонами переменных
  • Убедиться что .env в .gitignore
  • Проверить историю git - не был ли .env закоммичен
  • Если был - сменить все токены и пароли
  • Добавить документацию по настройке окружения

📁 Структура и организация

2. Реорганизация документации (100+ MD файлов)

Приоритет: 🟡 СРЕДНИЙ

Проблема: В корне проекта 47+ MD файлов без структуры

Предлагаемая структура:

docs/
├── completed/           # 22 завершенных задачи
│   ├── refactoring/
│   ├── fixes/
│   └── features/
├── guides/              # 4 активных гайда
├── architecture/        # 2 архитектурных документа
├── diagnostic/          # 4 диагностических гайда
└── in-progress/         # Активные задачи

Файлы для архивирования (завершенные):

  • BASE_TEMPLATE_REFACTORING_COMPLETE.md
  • CHAT_LIST_REFACTORING_COMPLETE.md
  • DOCUMENTS_REFACTORING_COMPLETE.md
  • JS_MODULES_REFACTORING_COMPLETE.md
  • REFACTORING_SUMMARY.md
  • CHAT_CACHING_FIX.md
  • CHAT_LIST_BUGS_FIX.md
  • FOUC_FIX.md
  • MESSAGE_NEWLINES_FIX.md
  • POLL_WEBSOCKET_FIX.md
  • WEBSOCKET_ERROR_FIX.md
  • WEBSOCKET_KEEPALIVE_FIX.md
  • AVATAR_CROPPER_IMPLEMENTATION.md
  • FEED_AJAX_REFACTORING.md
  • FORWARDED_MESSAGE_METADATA.md
  • MESSAGE_EDITING_FULL_RERENDER.md
  • MESSAGE_RENDERING_REFACTORING.md
  • MESSAGE_SELECTION_FORWARDING.md
  • MESSAGE_SENDING_REFACTORING.md
  • POLLS_IMPLEMENTATION.md
  • REACTIONS_FROM_DATABASE.md
  • REPLY_UPDATE_ON_EDIT.md

Дубликаты для объединения:

  1. Кэширование (3 файла → 1):

    • CACHE_OPTIMIZATION_SUMMARY.md
    • CACHING_SETUP.md
    • API_REFACTORING_TESTING.md → Объединить в docs/guides/CACHING_COMPLETE.md
  2. Chat List (2 файла):

    • CHAT_LIST_RENDERING_ANALYSIS.md (удалить)
    • CHAT_LIST_REFACTORING_COMPLETE.md (оставить)
  3. Base Template (2 файла):

    • BASE_TEMPLATE_REFACTORING.md (удалить)
    • BASE_TEMPLATE_REFACTORING_COMPLETE.md (оставить)
  4. IP ограничения (2 файла → 1):

    • IP_RESTRICTIONS_README.md
    • IP_REGISTRATION_RESTRICTIONS.md → Объединить в docs/guides/IP_RESTRICTIONS.md
  5. Редактирование сообщений (4 файла → 1):

    • MESSAGE_EDITING_ANALYSIS.md
    • MESSAGE_EDITING_FULL_RERENDER.md
    • EDITING_ATTACHMENTS_TROUBLESHOOTING.md
    • REPLY_UPDATE_ON_EDIT.md → Объединить в docs/completed/MESSAGE_EDITING_COMPLETE.md
  6. Рендеринг сообщений (2 файла → 1):

    • MESSAGE_RENDERING_REFACTORING.md
    • MESSAGE_SENDING_REFACTORING.md → Объединить в docs/completed/MESSAGE_SYSTEM_REFACTORING_COMPLETE.md
  7. Документы (2 файла):

    • DOCUMENTS_MODAL_ANALYSIS.md (удалить)
    • DOCUMENTS_REFACTORING_COMPLETE.md (оставить)
  8. Опросы (2 файла):

    • POLL_LOADING_ANALYSIS.md (удалить)
    • POLLS_IMPLEMENTATION.md (оставить)

Файлы для удаления:

  • SELECTION_FIXES.md (пустой файл)

Действия:

  • Создать структуру папок docs/
  • Переместить завершенные задачи в docs/completed/
  • Переместить гайды в docs/guides/
  • Объединить дубликаты
  • Удалить устаревшие файлы
  • Оставить в корне только README.md

3. Чистка тестовых и диагностических скриптов

Приоритет: 🟡 СРЕДНИЙ

Проблема: В backend/ более 20 тестовых скриптов вперемешку с основным кодом

Найденные файлы:

backend/
├── test_*.py (22 файла)
├── check_*.py (5 файлов)
├── analyze_*.py (1 файл)
├── create_test_data.py
├── diagnose_page.py
├── diagnostic_summary.py
├── generate_notification.py
├── quick_test.py
├── render_test_page.py
├── simple_create_users.py
└── ...

Действия:

  • Переместить все test_*.py в backend/tests/manual/
  • Переместить check_*.py в backend/scripts/diagnostic/
  • Переместить утилиты в backend/scripts/utils/
  • Создать README в каждой папке со списком скриптов
  • Удалить неиспользуемые скрипты

💻 Код и разработка

4. Завершить TODO в коде

Приоритет: 🟠 СРЕДНЕ-ВЫСОКИЙ

Найдено: 10 TODO/FIXME комментариев

Python (10 штук):

  1. realtime/consumers.py:606

    # TODO: Реализовать логику голосования
    
  2. realtime/consumers.py:747

    # TODO: Реализовать через Redis для производительности
    
  3. feed/notification_signals.py:130

    # TODO: реализовать систему подписок
    
  4. employees/ldap/services/sync_service.py:437

    # TODO: Реализовать через UserService
    
  5. employees/ldap/services/user_service.py:123

    # TODO: Убрать после полного рефакторинга
    
  6. documents/views.py:305

    # TODO: добавить проверку членства в отделе через отдельный API запрос
    

7-10. api/v1/communications/poll_views.py (4 штуки):

# TODO: проверить права пользователя на отправку в чат (L80)
# TODO: проверить user_can_access_chat (L242)
# TODO: проверить модераторские права (L343)
# TODO: user_can_access_chat (L385)

JavaScript (5 штук):

1-4. chatMenuActions.js (4 штуки):

// TODO: Реализовать API endpoint для закрепления (L77)
// TODO: Реализовать API endpoint для управления уведомлениями (L109)
// TODO: Создать страницу редактирования чата (L134)
// TODO: Реализовать API endpoint для удаления (L144)
  1. requestCrudHandler.js:161
    alert(message); // TODO: заменить на toast-уведомление
    

Действия:

  • Создать GitHub Issues для каждого TODO
  • Приоритизировать задачи
  • Реализовать критичные TODO (проверки прав доступа)
  • Удалить устаревшие TODO после рефакторинга

5. Рефакторинг LDAP модуля

Приоритет: 🟡 СРЕДНИЙ

Найдено: Много NOTE комментариев о необходимости рефакторинга

Проблемные файлы:

  • employees/ldap/services/user_service.py:591 - метод >150 строк
  • employees/ldap/directory_service.py - постепенный рефакторинг в процессе

Действия:

  • Завершить рефакторинг UserService
  • Разбить большие методы на более мелкие
  • Удалить устаревший код после рефакторинга

6. Улучшение тестирования

Приоритет: 🟢 НИЗКИЙ

Обнаружено: 75+ тестовых файлов

Проблемы:

  • Тесты разбросаны по разным местам
  • Нет единой документации по запуску тестов
  • Некоторые тесты пропущены (требуют мокирования LDAP)

Действия:

  • Создать docs/testing/TESTING_GUIDE.md
  • Документировать команды запуска тестов
  • Настроить CI/CD для автоматического тестирования
  • Добавить покрытие кода тестами

🔧 Конфигурация и инфраструктура

7. Настройка виртуального окружения

Приоритет: ✅ ВЫПОЛНЕНО

  • Создано виртуальное окружение .venv/
  • Настроена автоматическая активация в VS Code
  • Создан файл инструкций .github/copilot-instructions.md

8. Обновление зависимостей

Приоритет: 🟢 НИЗКИЙ

Текущие версии выглядят актуальными:

  • Django 5.2.4 ✅
  • Python 3.12.10 ✅
  • Bootstrap 5.3.3 ✅
  • Node packages актуальны ✅

Действия:

  • Периодически проверять обновления безопасности
  • Настроить Dependabot в GitHub

9. Docker и развертывание

Приоритет: 🟡 СРЕДНИЙ

Найдено:

  • Dockerfile существует
  • docker-compose.test.yml присутствует
  • Основной docker-compose.yml отсутствует в корне

Действия:

  • Проверить работоспособность Docker конфигурации
  • Создать production-ready docker-compose.yml
  • Документировать процесс развертывания
  • Добавить health checks в контейнеры

10. Настройка .gitignore

Приоритет: 🟢 НИЗКИЙ

Текущее состояние: Базовый .gitignore присутствует

Рекомендации:

  • Проверить что все временные файлы игнорируются
  • Добавить .vscode/ (опционально)
  • Убедиться что node_modules/ игнорируется
  • Добавить media/ для локальной разработки

📊 Итоговая статистика

Найдено проблем:

  • 🔴 Критичных: 1 (секретные данные)
  • 🟠 Высокий приоритет: 1 (TODO в коде)
  • 🟡 Средний приоритет: 5 (структура, скрипты, LDAP, Docker, documents)
  • 🟢 Низкий приоритет: 3 (тестирование, зависимости, gitignore)

Файлы для реорганизации:

  • 47 MD файлов в корне
  • 22 завершенных задачи для архивирования
  • 14 дубликатов для объединения
  • 27+ тестовых скриптов для перемещения

TODO в коде:

  • 10 Python TODO
  • 5 JavaScript TODO

🎬 Рекомендуемый порядок выполнения

  1. Безопасность (день 1) - Защита .env файла
  2. Структура документации (день 1-2) - Создание папок и перемещение файлов
  3. Чистка скриптов (день 2) - Организация тестовых файлов
  4. Критичные TODO (неделя 1) - Проверки прав доступа в API
  5. Рефакторинг LDAP (неделя 2-3) - Улучшение кода
  6. Docker и CI/CD (неделя 3-4) - Инфраструктура
  7. Остальные TODO (ongoing) - По мере необходимости

💡 Дополнительные рекомендации

Автоматизация

  • Настроить pre-commit hooks для проверки кода
  • Добавить автоматическое форматирование (black, isort)
  • Настроить линтеры (flake8, eslint)

Мониторинг

  • Добавить логирование критичных операций
  • Настроить Sentry для отслеживания ошибок
  • Добавить метрики производительности

Документация

  • Создать CONTRIBUTING.md для новых разработчиков
  • Документировать API через Swagger/OpenAPI
  • Добавить архитектурные диаграммы

Примечание: Этот план можно выполнять поэтапно. Начните с критичных задач (безопасность) и постепенно двигайтесь к улучшениям.