- ${msg.content}
- ${attachmentsHtml}
-
-
- `;
-}
-```
-
-**ПОСЛЕ исправления:**
-```javascript
-buildMessageHtml(msg, isOwn) {
- const attachmentsHtml = msg.attachments?.length ?
- msg.attachments.map(att => this.buildAttachmentHtml(att)).join('') : '';
-
- // ✅ Добавлена генерация HTML для опроса
- const pollHtml = msg.poll ? this.buildPollHtml(msg.poll) : '';
-
- return `
-
- ${msg.content}
- ${attachmentsHtml}
- ${pollHtml} ← добавлено!
-
- `;
-}
-
-// ✅ Новый метод
-buildPollHtml(poll) {
- if (!poll || !poll.id) return '';
-
- const totalVotes = poll.total_voters || 0;
- const isClosed = poll.is_closed || false;
-
- return `
-
- ↓
-HTML вставляется в DOM
- ↓
-ChatPoll.initializeExistingPolls() находит все [data-poll-id]
- └─ Для каждого: refreshPoll(pollId)
- └─ Загружает актуальные данные с сервера
- └─ Обновляет проценты, результаты
-```
-
-### 2. Создание нового опроса через UI
-
-```
-User clicks "Создать голосование"
- ↓
-Modal открывается
- ↓
-User заполняет вопрос, варианты ответов
- ↓
-ChatPoll.submitPoll() → POST /api/v1/communications/polls/create/
- ↓
-Backend создаёт Poll + PollOption
- ↓
-WebSocket → new_message event (с poll в payload)
- ↓
-userWebSocket.js → dispatchEvent('new_message')
- ↓
-chatScroll добавляет новое сообщение в DOM
- ↓
-ChatPoll.initializeExistingPolls() или refreshPoll()
-```
-
-### 3. Редактирование сообщения с опросом
-
-```
-User edits message with poll
- ↓
-POST /api/v1/communications/messages/{id}/edit/
- ↓
-Backend: message.save() + prefetch poll/poll__options
- ↓
-serialize_message(message) → включает poll data
- ↓
-WebSocket → message_edited event
- ↓
-userWebSocket.js → dispatchEvent('chat:message-edited')
- ↓
-messageEditing.js: handleMessageEdited
- ├─ MessageRenderer.buildMessageHtml(message) → ТЕПЕРЬ включает poll! ✅
- │ └─ buildPollHtml(message.poll) → генерирует HTML
- ├─ oldMessageEl.replaceWith(newMessageEl)
- └─ reinitMessageComponents(newMessageEl)
- └─ window.chatPoll.refreshPoll(pollId, pollEl) ✅
- └─ Обновляет состояние опроса
-```
-
----
-
-## 📊 Структура данных опроса
-
-### Backend (serialize_message)
-
-```json
-{
- "id": 495,
- "content": "Выберите вариант",
- "poll": {
- "id": 10,
- "question": "Какой язык программирования вы предпочитаете?",
- "is_anonymous": false,
- "is_multiple_choice": false,
- "is_quiz": false,
- "is_closed": false,
- "closes_at": null,
- "total_voters": 5,
- "options": [
- {
- "id": 21,
- "text": "Python",
- "position": 0,
- "vote_count": 3,
- "percentage": 60
- },
- {
- "id": 22,
- "text": "JavaScript",
- "position": 1,
- "vote_count": 2,
- "percentage": 40
- }
- ]
- }
-}
-```
-
-### Frontend (buildPollHtml)
-
-```html
-
-```
-
----
-
-## ✅ Исправления
-
-### 1. MessageRenderer теперь генерирует HTML для опросов
-- Добавлен метод `buildPollHtml(poll)`
-- В `buildMessageHtml` добавлена строка `${pollHtml}`
-
-### 2. reinitMessageComponents явно инициализирует опросы
-- Вызывает `window.chatPoll.refreshPoll(pollId, pollEl)`
-- Это загружает актуальные данные и обновляет UI
-
-### 3. Полная поддержка редактирования
-- При редактировании сообщения с опросом он не теряется
-- Опрос корректно отображается после замены DOM
-
----
-
-## 🧪 Тестирование
-
-### Сценарий 1: Создание опроса
-1. Откройте чат
-2. Нажмите "Создать голосование"
-3. Заполните вопрос и варианты
-4. Отправьте
-5. **Ожидается**: Опрос появляется в чате с кнопками для голосования
-
-### Сценарий 2: Редактирование сообщения с опросом
-1. Создайте сообщение с опросом
-2. Отредактируйте **текст** сообщения (сам опрос редактировать нельзя)
-3. **Ожидается**:
- - Текст обновлён ✅
- - Опрос остался на месте ✅
- - Кнопки опроса работают ✅
-
-### Сценарий 3: Голосование
-1. Откройте сообщение с опросом
-2. Нажмите на вариант ответа
-3. **Ожидается**:
- - Голос зарегистрирован
- - Опрос обновлён с результатами
- - Показаны проценты
-
----
-
-## 📝 Итог
-
-✅ **Опросы загружаются** через `serialize_message` в payload
-✅ **MessageRenderer генерирует HTML** через `buildPollHtml()`
-✅ **ChatPoll инициализирует** через `refreshPoll()`
-✅ **При редактировании опросы сохраняются** через `reinitMessageComponents()`
-
-**Все проблемы решены!** 🎉
diff --git a/SELECTION_FIXES.md b/SELECTION_FIXES.md
deleted file mode 100644
index 287314d0..00000000
--- a/SELECTION_FIXES.md
+++ /dev/null
@@ -1,153 +0,0 @@
-# Исправления выделения сообщений
-
-## Исправленные проблемы
-
-### 1. ✅ Чекбоксы теперь внутри окна чата
-
-**Было:** Чекбоксы рисовались за пределами окна (`left: -35px`)
-
-**Стало:**
-- Чекбоксы внутри сообщений (`left: 8px`, `right: 8px`)
-- Добавлены отступы для сообщений в режиме выделения:
- - Левые сообщения: `padding-left: 40px`
- - Правые сообщения: `padding-right: 40px`
-- Адаптивные размеры для мобильных
-
-### 2. ✅ Убрано долгое нажатие мышью на десктопе
-
-**Было:** Долгое нажатие (500мс) активировало режим выделения
-
-**Стало:**
-- Только для мобильных устройств (touchstart/touchend)
-- На десктопе работает только через контекстное меню
-
-### 3. ✅ Вход в режим через контекстное меню
-
-**Механизм:**
-1. Правый клик по сообщению → открывается контекстное меню
-2. Клик на "Выбрать" → активируется режим выделения
-3. Это сообщение автоматически выделяется
-4. Остальные сообщения можно выделять левым кликом
-
-**Реализация:**
-- Добавлен обработчик `handleSelectAction()` в `messageContextMenu.js`
-- Отправка события `message-context-menu` с action='select'
-- Прием события в `messageSelection.js` и вызов `enterSelectionMode()`
-
-## Изменённые файлы
-
-### 1. `backend/static/css/message-selection.css`
-
-```css
-/* Основные изменения */
-.selection-mode .msg {
- padding-left: 40px !important; /* Место для чекбокса */
-}
-
-.msg-select-checkbox {
- left: 8px; /* Внутри сообщения, было -35px */
-}
-
-.msg.justify-content-end .msg-select-checkbox {
- right: 8px; /* Внутри сообщения, было -35px */
-}
-```
-
-### 2. `backend/static/js/components/messageSelection.js`
-
-**Удалено:**
-- Обработчики `mousedown`, `mouseup`, `mousemove` для десктопа
-- Таймер долгого нажатия мышью
-
-**Оставлено:**
-- Touch события для мобильных
-- Обработчик события `message-context-menu`
-- Метод `enterSelectionMode()` как публичный API
-
-### 3. `backend/static/js/components/messageContextMenu.js`
-
-**Добавлено:**
-```javascript
-case 'select':
- this.handleSelectAction(messageId);
- break;
-
-handleSelectAction(messageId) {
- const messageElement = document.querySelector(`[data-id="${messageId}"]`);
- window.dispatchEvent(new CustomEvent('message-context-menu', {
- detail: {
- action: 'select',
- messageId: messageId,
- messageElement: messageElement
- }
- }));
-}
-```
-
-## Как использовать
-
-### На компьютере:
-1. **Правый клик** по любому сообщению
-2. В меню выбрать **"Выбрать"**
-3. Сообщение выделится автоматически
-4. **Левый клик** по другим сообщениям для выделения
-5. Кнопки действий внизу экрана
-
-### На телефоне:
-1. **Долгое нажатие** (500мс) на сообщение
-2. Или правый клик → "Выбрать"
-3. Тап по другим сообщениям для выделения
-4. Кнопки действий внизу экрана
-
-## Визуальные улучшения
-
-### Чекбоксы:
-- ✅ Находятся внутри границ окна чата
-- ✅ Не перекрывают содержимое сообщений
-- ✅ Адаптивный размер (24px → 20px на мобильных)
-- ✅ Правильное позиционирование для своих/чужих сообщений
-
-### Режим выделения:
-- ✅ Hover эффект на сообщениях
-- ✅ Подсветка выделенных сообщений
-- ✅ Синие чекбоксы с галочкой
-- ✅ Счетчик выделенных сообщений
-
-### Панель действий:
-- ✅ Фиксированная позиция внизу
-- ✅ Анимация появления
-- ✅ Кнопки: Отмена, Удалить, Переслать
-- ✅ Адаптивный дизайн
-
-## Проверка
-
-Обновите страницу и проверьте:
-
-1. **Чекбоксы видны полностью**
- - Не выходят за границы чата
- - Не перекрывают текст сообщений
-
-2. **Десктоп работает правильно**
- - Нет реакции на долгое нажатие ЛКМ
- - ПКМ → "Выбрать" → режим активируется
- - ЛКМ выделяет/снимает выделение
-
-3. **Мобильный работает правильно**
- - Долгое нажатие активирует режим
- - Вибрация при активации
- - Тап выделяет/снимает выделение
-
-## Совместимость
-
-- ✅ Chrome/Edge/Opera
-- ✅ Firefox
-- ✅ Safari (desktop/mobile)
-- ✅ Chrome Mobile
-- ✅ Планшеты
-
-## Производительность
-
-- Минимальное использование DOM манипуляций
-- Делегирование событий
-- Оптимизированные CSS transitions
-- Отсутствие утечек памяти (cleanup при выходе)
diff --git a/backend/docs/README.md b/backend/docs/README.md
new file mode 100644
index 00000000..8d5c129e
--- /dev/null
+++ b/backend/docs/README.md
@@ -0,0 +1,92 @@
+# Backend Documentation
+
+Техническая документация по backend части проекта EUSRR.
+
+## 📁 Структура
+
+### [guides/](guides/)
+**Руководства разработчика** - инструкции по работе с различными модулями
+
+- CONTEXT_MENU_GUIDE.md - работа с контекстными меню
+- REACTIONS_GUIDE.md - система реакций
+
+### [troubleshooting/](troubleshooting/)
+**Отладка и исправления** - диагностика проблем
+
+- CONTEXT_MENU_DEBUG.md - отладка контекстного меню
+- MESSAGE_DELETE_DEBUG.md - отладка удаления сообщений
+- MESSAGE_DELETE_FIX.md - исправление проблем удаления
+
+### [architecture/](architecture/)
+**Архитектурная документация** - устройство систем
+
+- API_ANALYSIS.md - анализ API
+- API_REFACTORING_SUMMARY.md - результаты рефакторинга API
+- VIEWSET_ANALYSIS.md - анализ ViewSet
+
+### [testing/](testing/)
+**Тестирование** - планы и результаты тестирования
+
+- POSITION_PERMISSIONS_TESTING.md - тестирование прав должностей
+- REQUESTS_API_TESTING_PLAN.md - план тестирования API заявок
+- TEST_IMAGE_SCRIPTS.md - скрипты тестирования изображений
+
+### [reports/](reports/)
+**Отчеты и аудиты** - результаты проверок и реорганизаций
+
+- BACKEND_CLEANUP_AUDIT.md - аудит очистки backend/
+- REQUESTS_API_TESTING_PLAN.md - план тестирования API заявок
+- TEST_IMAGE_SCRIPTS.md - скрипты тестирования изображений
+
+## 🔍 Навигация
+
+### По типу задачи:
+
+- **Как работает X?** → [architecture/](architecture/)
+- **Как настроить Y?** → [guides/](guides/)
+- **Проблема с Z** → [troubleshooting/](troubleshooting/)
+- **Как тестировать?** → [testing/](testing/)
+
+### Связанная документация:
+
+- [/docs/](../../docs/) - общая документация проекта
+- [backend/scripts/](../scripts/) - вспомогательные скрипты
+
+## 📝 Правила
+
+### Добавление новой документации:
+
+1. **Guides** - постоянные инструкции, reference материалы
+2. **Troubleshooting** - временные документы, после решения → удалить
+3. **Architecture** - долгосрочная документация, обновлять при изменениях
+4. **Testing** - планы тестирования, после завершения → архивировать
+
+### Формат файлов:
+
+```markdown
+# Заголовок
+
+**Дата:** DD.MM.YYYY
+**Автор:** Имя
+**Статус:** Актуально / Устарело / В процессе
+
+## Описание
+...
+
+## Использование
+...
+
+## Примеры
+...
+```
+
+## 🔄 Жизненный цикл
+
+1. **Создание** - документируйте новую фичу/проблему
+2. **Актуализация** - обновляйте при изменениях
+3. **Архивация** - после завершения/решения
+4. **Удаление** - если больше не актуально
+
+---
+
+**Поддерживайте документацию актуальной!** 📚
diff --git a/backend/API_ANALYSIS.md b/backend/docs/architecture/API_ANALYSIS.md
similarity index 100%
rename from backend/API_ANALYSIS.md
rename to backend/docs/architecture/API_ANALYSIS.md
diff --git a/backend/API_REFACTORING_SUMMARY.md b/backend/docs/architecture/API_REFACTORING_SUMMARY.md
similarity index 100%
rename from backend/API_REFACTORING_SUMMARY.md
rename to backend/docs/architecture/API_REFACTORING_SUMMARY.md
diff --git a/backend/VIEWSET_ANALYSIS.md b/backend/docs/architecture/VIEWSET_ANALYSIS.md
similarity index 100%
rename from backend/VIEWSET_ANALYSIS.md
rename to backend/docs/architecture/VIEWSET_ANALYSIS.md
diff --git a/backend/CONTEXT_MENU_GUIDE.md b/backend/docs/guides/CONTEXT_MENU_GUIDE.md
similarity index 100%
rename from backend/CONTEXT_MENU_GUIDE.md
rename to backend/docs/guides/CONTEXT_MENU_GUIDE.md
diff --git a/backend/REACTIONS_GUIDE.md b/backend/docs/guides/REACTIONS_GUIDE.md
similarity index 100%
rename from backend/REACTIONS_GUIDE.md
rename to backend/docs/guides/REACTIONS_GUIDE.md
diff --git a/backend/docs/reports/BACKEND_CLEANUP_AUDIT.md b/backend/docs/reports/BACKEND_CLEANUP_AUDIT.md
new file mode 100644
index 00000000..c875b86e
--- /dev/null
+++ b/backend/docs/reports/BACKEND_CLEANUP_AUDIT.md
@@ -0,0 +1,320 @@
+# Аудит папки backend/
+
+**Дата:** 26 декабря 2025 г.
+**Задача:** Очистка главной папки Django приложения
+
+---
+
+## 🔍 Найдено лишних файлов
+
+### 📊 Статистика
+
+| Тип файлов | Количество | Категория |
+|------------|------------|-----------|
+| test_*.py | 22 файла | Тестовые скрипты |
+| check_*.py | 5 файлов | Диагностические проверки |
+| *_test*.py и утилиты | 7 файлов | Вспомогательные скрипты |
+| *.md | 12 файлов | Техническая документация |
+| *.sh | 1 файл | Shell скрипты |
+| ldap_test_* | 2 папки | Тестовые данные LDAP |
+| **ИТОГО** | **49 файлов/папок** | Требуют реорганизации |
+
+---
+
+## 📂 Детальный список
+
+### 1. Тестовые скрипты (22 файла)
+
+**test_*.py** - ручные тесты для быстрой проверки:
+```
+test_all_signals.py # Тестирование сигналов
+test_announcement_notifications.py # Уведомления объявлений
+test_avatar_simple.py # Простой тест аватаров
+test_corporate_ip.py # Корпоративные IP
+test_create_announcement_message.py # Создание объявлений
+test_email.py # Email функционал
+test_ip_restrictions.py # IP ограничения
+test_ip_simple.py # Простой тест IP
+test_ldap_simple.py # Простой тест LDAP
+test_message_serialization.py # Сериализация сообщений
+test_notification_create.py # Создание уведомлений
+test_notification_debug.py # Отладка уведомлений
+test_notification_signals.py # Сигналы уведомлений
+test_pagination.py # Пагинация
+test_phone_export.py # Экспорт телефонов
+test_reactions_api.py # API реакций
+test_recipients.py # Получатели
+test_recipients_api.py # API получателей
+test_register_api.py # API регистрации
+test_reply_update.py # Обновление ответов
+test_requests_access.py # Доступ к заявкам
+test_requests_access_detailed.py # Детальный доступ к заявкам
+```
+
+**Рекомендация:** Переместить в `backend/scripts/manual_tests/`
+
+---
+
+### 2. Диагностические скрипты (5 файлов)
+
+**check_*.py** - проверка состояния системы:
+```
+check_chat_access.py # Проверка доступа к чатам
+check_ldap_user.py # Проверка пользователя LDAP
+check_pagination.py # Проверка пагинации
+check_reactions.py # Проверка реакций
+check_templates.py # Проверка шаблонов
+```
+
+**Рекомендация:** Переместить в `backend/scripts/diagnostic/`
+
+---
+
+### 3. Вспомогательные скрипты (8 файлов)
+
+**Утилиты и генераторы:**
+```
+analyze_templates.py # Анализ шаблонов
+create_test_data.py # Создание тестовых данных
+diagnose_page.py # Диагностика страниц
+diagnostic_summary.py # Сводка диагностики
+generate_notification.py # Генерация уведомлений
+quick_test.py # Быстрые тесты
+render_test_page.py # Рендеринг тестовых страниц
+simple_create_users.py # Простое создание пользователей
+```
+
+**Рекомендация:**
+- Утилиты → `backend/scripts/utils/`
+- Диагностика → `backend/scripts/diagnostic/`
+
+---
+
+### 4. MD документация (12 файлов)
+
+**Техническая документация в корне backend/:**
+```
+API_ANALYSIS.md # Анализ API
+API_REFACTORING_SUMMARY.md # Рефакторинг API
+CONTEXT_MENU_DEBUG.md # Отладка контекстного меню
+CONTEXT_MENU_GUIDE.md # Руководство контекстного меню
+MESSAGE_DELETE_DEBUG.md # Отладка удаления сообщений
+MESSAGE_DELETE_FIX.md # Исправление удаления
+POSITION_PERMISSIONS_TESTING.md # Тестирование прав должностей
+REACTIONS_GUIDE.md # Руководство по реакциям
+REACTIONS_IMPLEMENTATION.md # Реализация реакций
+REQUESTS_API_TESTING_PLAN.md # План тестирования API заявок
+TEST_IMAGE_SCRIPTS.md # Скрипты тестирования изображений
+VIEWSET_ANALYSIS.md # Анализ ViewSet
+```
+
+**Рекомендация:**
+- GUIDE → переместить в `backend/docs/guides/`
+- DEBUG/FIX → переместить в `backend/docs/troubleshooting/`
+- ANALYSIS → переместить в `backend/docs/architecture/`
+- TESTING → переместить в `backend/docs/testing/`
+
+---
+
+### 5. Shell скрипты (1 файл)
+
+```
+ldap-test.sh # Тестирование LDAP сервера
+```
+
+**Рекомендация:** Переместить в `backend/scripts/ldap/`
+
+---
+
+### 6. Тестовые данные LDAP (2 папки)
+
+```
+ldap_test_config/ # Конфигурация тестового LDAP
+ldap_test_data/ # Данные тестового LDAP
+```
+
+**Содержимое:**
+- `ldap_test_config/` - конфигурационные файлы OpenLDAP
+- `ldap_test_data/` - файлы базы данных (data.mdb, lock.mdb)
+
+**Рекомендация:**
+- Если используются → переместить в `backend/tests/fixtures/ldap/`
+- Если не используются → можно удалить (данные автоматически генерируются)
+
+---
+
+## 🗂️ Предлагаемая структура
+
+```
+backend/
+├── manage.py # Основной файл Django
+├── scripts/ # Вспомогательные скрипты
+│ ├── manual_tests/ # test_*.py (22 файла)
+│ ├── diagnostic/ # check_*.py (5 файлов)
+│ ├── utils/ # create_*, generate_* (утилиты)
+│ └── ldap/ # ldap-test.sh
+├── docs/ # Документация backend
+│ ├── guides/ # *_GUIDE.md
+│ ├── troubleshooting/ # *_DEBUG.md, *_FIX.md
+│ ├── architecture/ # *_ANALYSIS.md
+│ └── testing/ # *_TESTING*.md
+├── tests/ # Официальные тесты
+│ └── fixtures/
+│ └── ldap/ # ldap_test_config/, ldap_test_data/
+└── [Django apps...] # api/, employees/, etc.
+```
+
+---
+
+## ✅ План действий
+
+### Шаг 1: Создать структуру папок
+```bash
+mkdir -p backend/scripts/{manual_tests,diagnostic,utils,ldap}
+mkdir -p backend/docs/{guides,troubleshooting,architecture,testing}
+```
+
+### Шаг 2: Переместить тестовые скрипты (22)
+```bash
+mv backend/test_*.py backend/scripts/manual_tests/
+```
+
+### Шаг 3: Переместить диагностические скрипты (5)
+```bash
+mv backend/check_*.py backend/scripts/diagnostic/
+mv backend/diagnostic_summary.py backend/scripts/diagnostic/
+mv backend/diagnose_page.py backend/scripts/diagnostic/
+```
+
+### Шаг 4: Переместить утилиты (5)
+```bash
+mv backend/analyze_templates.py backend/scripts/utils/
+mv backend/create_test_data.py backend/scripts/utils/
+mv backend/generate_notification.py backend/scripts/utils/
+mv backend/quick_test.py backend/scripts/utils/
+mv backend/render_test_page.py backend/scripts/utils/
+mv backend/simple_create_users.py backend/scripts/utils/
+```
+
+### Шаг 5: Переместить shell скрипты (1)
+```bash
+mv backend/ldap-test.sh backend/scripts/ldap/
+```
+
+### Шаг 6: Реорганизовать MD файлы (12)
+
+**Guides (2):**
+```bash
+mv backend/CONTEXT_MENU_GUIDE.md backend/docs/guides/
+mv backend/REACTIONS_GUIDE.md backend/docs/guides/
+```
+
+**Troubleshooting (2):**
+```bash
+mv backend/CONTEXT_MENU_DEBUG.md backend/docs/troubleshooting/
+mv backend/MESSAGE_DELETE_DEBUG.md backend/docs/troubleshooting/
+mv backend/MESSAGE_DELETE_FIX.md backend/docs/troubleshooting/
+```
+
+**Architecture (3):**
+```bash
+mv backend/API_ANALYSIS.md backend/docs/architecture/
+mv backend/VIEWSET_ANALYSIS.md backend/docs/architecture/
+mv backend/API_REFACTORING_SUMMARY.md backend/docs/architecture/
+```
+
+**Testing (3):**
+```bash
+mv backend/POSITION_PERMISSIONS_TESTING.md backend/docs/testing/
+mv backend/REQUESTS_API_TESTING_PLAN.md backend/docs/testing/
+mv backend/TEST_IMAGE_SCRIPTS.md backend/docs/testing/
+```
+
+**Completed (2):**
+```bash
+mv backend/REACTIONS_IMPLEMENTATION.md backend/docs/completed/
+```
+
+### Шаг 7: LDAP тестовые данные
+**Опция 1 (если используются):**
+```bash
+mkdir -p backend/tests/fixtures/ldap/
+mv backend/ldap_test_config backend/tests/fixtures/ldap/
+mv backend/ldap_test_data backend/tests/fixtures/ldap/
+```
+
+**Опция 2 (если не используются):**
+```bash
+rm -rf backend/ldap_test_config backend/ldap_test_data
+```
+
+### Шаг 8: Создать README файлы
+- `backend/scripts/README.md` - описание всех скриптов
+- `backend/docs/README.md` - структура документации
+
+---
+
+## 📊 Результат
+
+### До очистки:
+```
+backend/
+├── manage.py
+├── test_*.py (22 файла)
+├── check_*.py (5 файлов)
+├── analyze_*.py и др. (8 файлов)
+├── *.md (12 файлов)
+├── ldap-test.sh
+├── ldap_test_config/
+├── ldap_test_data/
+└── [Django apps...]
+```
+**ИТОГО в корне:** 49 лишних файлов/папок
+
+### После очистки:
+```
+backend/
+├── manage.py
+├── scripts/ # Все скрипты организованы
+├── docs/ # Вся документация организована
+├── tests/fixtures/ # Тестовые данные
+└── [Django apps...] # Только Django приложения
+```
+**В корне:** Только manage.py и Django приложения ✨
+
+---
+
+## 💡 Дополнительные рекомендации
+
+### 1. Добавить .gitignore правила
+```gitignore
+# LDAP test data (автогенерируется)
+backend/tests/fixtures/ldap/ldap_test_data/
+```
+
+### 2. Документировать скрипты
+В каждом README.md описать:
+- Назначение скриптов
+- Как запускать
+- Когда использовать
+- Примеры использования
+
+### 3. Очистить неиспользуемые скрипты
+После перемещения проверить:
+- Какие скрипты устарели
+- Какие дублируют функционал тестов
+- Что можно удалить
+
+---
+
+## 🎯 Приоритет выполнения
+
+1. ✅ **Высокий** - Переместить test_* скрипты (захламляют корень)
+2. ✅ **Высокий** - Переместить check_* скрипты
+3. ✅ **Средний** - Реорганизовать MD документацию
+4. ✅ **Средний** - Переместить утилиты
+5. ⚠️ **Низкий** - Решить судьбу ldap_test_* папок
+
+---
+
+**Готов приступить к выполнению?** Начнем с создания структуры и перемещения файлов.
diff --git a/backend/docs/reports/README.md b/backend/docs/reports/README.md
new file mode 100644
index 00000000..eff99215
--- /dev/null
+++ b/backend/docs/reports/README.md
@@ -0,0 +1,31 @@
+# Backend - Отчеты и аудиты
+
+Отчеты о выполненных работах по очистке и реорганизации backend/.
+
+## 📋 Отчеты
+
+### [BACKEND_CLEANUP_AUDIT.md](BACKEND_CLEANUP_AUDIT.md)
+Аудит папки backend/:
+- Найдено 49 лишних файлов
+- 22 test_*.py скрипта
+- 12 MD файлов документации
+- План реорганизации
+- Результаты выполнения
+
+## 🎯 Назначение
+
+Документация по:
+- Аудитам backend кода
+- Рефакторингу структуры
+- Миграциям и обновлениям
+- Анализу производительности
+
+## 📝 Структура отчета
+
+Каждый отчет должен содержать:
+1. Дата и автор
+2. Цель аудита
+3. Найденные проблемы
+4. Статистика "до/после"
+5. Выполненные действия
+6. Рекомендации
diff --git a/backend/POSITION_PERMISSIONS_TESTING.md b/backend/docs/testing/POSITION_PERMISSIONS_TESTING.md
similarity index 100%
rename from backend/POSITION_PERMISSIONS_TESTING.md
rename to backend/docs/testing/POSITION_PERMISSIONS_TESTING.md
diff --git a/backend/REQUESTS_API_TESTING_PLAN.md b/backend/docs/testing/REQUESTS_API_TESTING_PLAN.md
similarity index 100%
rename from backend/REQUESTS_API_TESTING_PLAN.md
rename to backend/docs/testing/REQUESTS_API_TESTING_PLAN.md
diff --git a/backend/TEST_IMAGE_SCRIPTS.md b/backend/docs/testing/TEST_IMAGE_SCRIPTS.md
similarity index 100%
rename from backend/TEST_IMAGE_SCRIPTS.md
rename to backend/docs/testing/TEST_IMAGE_SCRIPTS.md
diff --git a/backend/CONTEXT_MENU_DEBUG.md b/backend/docs/troubleshooting/CONTEXT_MENU_DEBUG.md
similarity index 100%
rename from backend/CONTEXT_MENU_DEBUG.md
rename to backend/docs/troubleshooting/CONTEXT_MENU_DEBUG.md
diff --git a/backend/MESSAGE_DELETE_DEBUG.md b/backend/docs/troubleshooting/MESSAGE_DELETE_DEBUG.md
similarity index 100%
rename from backend/MESSAGE_DELETE_DEBUG.md
rename to backend/docs/troubleshooting/MESSAGE_DELETE_DEBUG.md
diff --git a/backend/MESSAGE_DELETE_FIX.md b/backend/docs/troubleshooting/MESSAGE_DELETE_FIX.md
similarity index 100%
rename from backend/MESSAGE_DELETE_FIX.md
rename to backend/docs/troubleshooting/MESSAGE_DELETE_FIX.md
diff --git a/backend/scripts/README.md b/backend/scripts/README.md
new file mode 100644
index 00000000..60c44be1
--- /dev/null
+++ b/backend/scripts/README.md
@@ -0,0 +1,79 @@
+# Backend Scripts
+
+Вспомогательные скрипты для разработки, тестирования и диагностики.
+
+## 📁 Структура
+
+### [manual_tests/](manual_tests/)
+**22 скрипта** - Ручные тесты для быстрой проверки функционала
+
+Запуск из корня backend:
+```bash
+.venv/Scripts/python scripts/manual_tests/test_ldap_simple.py
+```
+
+### [diagnostic/](diagnostic/)
+**8 скриптов** - Диагностика и проверка состояния системы
+
+```bash
+.venv/Scripts/python scripts/diagnostic/check_ldap_user.py
+.venv/Scripts/python scripts/diagnostic/check_chat_access.py
+```
+
+### [utils/](utils/)
+**6 утилит** - Генерация тестовых данных и анализ
+
+```bash
+.venv/Scripts/python scripts/utils/create_test_data.py
+.venv/Scripts/python scripts/utils/generate_notification.py
+```
+
+### [ldap/](ldap/)
+**Shell скрипты** - Тестирование LDAP сервера
+
+```bash
+bash scripts/ldap/ldap-test.sh
+```
+
+## 🎯 Использование
+
+### Важно!
+Всегда используйте виртуальное окружение при запуске скриптов:
+```bash
+# Полный путь к Python
+.venv/Scripts/python scripts/manual_tests/test_*.py
+
+# Или активируйте venv
+source .venv/Scripts/activate # Linux/Mac
+.venv\Scripts\activate # Windows
+python scripts/manual_tests/test_*.py
+```
+
+### Django management команды
+Для доступа к Django ORM в скриптах используйте:
+```python
+import os
+import django
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'eusrr_backend.settings')
+django.setup()
+```
+
+## 📝 Рекомендации
+
+1. **Именование**: Используйте понятные префиксы
+ - `test_*` - тестовые скрипты
+ - `check_*` - проверки
+ - `create_*` - генераторы
+ - `analyze_*` - анализ
+
+2. **Документация**: Добавляйте docstring в начало каждого скрипта
+
+3. **Аргументы**: Используйте argparse для параметров
+
+4. **Очистка**: Удаляйте устаревшие скрипты после интеграции в тесты
+
+## 🔗 См. также
+
+- [backend/tests/](../tests/) - Официальные unit/integration тесты
+- [backend/docs/testing/](../docs/testing/) - Документация по тестированию
diff --git a/backend/check_chat_access.py b/backend/scripts/diagnostic/check_chat_access.py
similarity index 100%
rename from backend/check_chat_access.py
rename to backend/scripts/diagnostic/check_chat_access.py
diff --git a/backend/check_ldap_user.py b/backend/scripts/diagnostic/check_ldap_user.py
similarity index 100%
rename from backend/check_ldap_user.py
rename to backend/scripts/diagnostic/check_ldap_user.py
diff --git a/backend/check_pagination.py b/backend/scripts/diagnostic/check_pagination.py
similarity index 100%
rename from backend/check_pagination.py
rename to backend/scripts/diagnostic/check_pagination.py
diff --git a/backend/check_reactions.py b/backend/scripts/diagnostic/check_reactions.py
similarity index 100%
rename from backend/check_reactions.py
rename to backend/scripts/diagnostic/check_reactions.py
diff --git a/backend/check_templates.py b/backend/scripts/diagnostic/check_templates.py
similarity index 100%
rename from backend/check_templates.py
rename to backend/scripts/diagnostic/check_templates.py
diff --git a/backend/diagnose_page.py b/backend/scripts/diagnostic/diagnose_page.py
similarity index 100%
rename from backend/diagnose_page.py
rename to backend/scripts/diagnostic/diagnose_page.py
diff --git a/backend/diagnostic_summary.py b/backend/scripts/diagnostic/diagnostic_summary.py
similarity index 100%
rename from backend/diagnostic_summary.py
rename to backend/scripts/diagnostic/diagnostic_summary.py
diff --git a/backend/ldap-test.sh b/backend/scripts/ldap/ldap-test.sh
similarity index 100%
rename from backend/ldap-test.sh
rename to backend/scripts/ldap/ldap-test.sh
diff --git a/backend/test_all_signals.py b/backend/scripts/manual_tests/test_all_signals.py
similarity index 100%
rename from backend/test_all_signals.py
rename to backend/scripts/manual_tests/test_all_signals.py
diff --git a/backend/test_announcement_notifications.py b/backend/scripts/manual_tests/test_announcement_notifications.py
similarity index 100%
rename from backend/test_announcement_notifications.py
rename to backend/scripts/manual_tests/test_announcement_notifications.py
diff --git a/backend/test_avatar_simple.py b/backend/scripts/manual_tests/test_avatar_simple.py
similarity index 100%
rename from backend/test_avatar_simple.py
rename to backend/scripts/manual_tests/test_avatar_simple.py
diff --git a/backend/test_corporate_ip.py b/backend/scripts/manual_tests/test_corporate_ip.py
similarity index 100%
rename from backend/test_corporate_ip.py
rename to backend/scripts/manual_tests/test_corporate_ip.py
diff --git a/backend/test_create_announcement_message.py b/backend/scripts/manual_tests/test_create_announcement_message.py
similarity index 100%
rename from backend/test_create_announcement_message.py
rename to backend/scripts/manual_tests/test_create_announcement_message.py
diff --git a/backend/test_email.py b/backend/scripts/manual_tests/test_email.py
similarity index 100%
rename from backend/test_email.py
rename to backend/scripts/manual_tests/test_email.py
diff --git a/backend/test_ip_restrictions.py b/backend/scripts/manual_tests/test_ip_restrictions.py
similarity index 100%
rename from backend/test_ip_restrictions.py
rename to backend/scripts/manual_tests/test_ip_restrictions.py
diff --git a/backend/test_ip_simple.py b/backend/scripts/manual_tests/test_ip_simple.py
similarity index 100%
rename from backend/test_ip_simple.py
rename to backend/scripts/manual_tests/test_ip_simple.py
diff --git a/backend/test_ldap_simple.py b/backend/scripts/manual_tests/test_ldap_simple.py
similarity index 100%
rename from backend/test_ldap_simple.py
rename to backend/scripts/manual_tests/test_ldap_simple.py
diff --git a/backend/test_message_serialization.py b/backend/scripts/manual_tests/test_message_serialization.py
similarity index 100%
rename from backend/test_message_serialization.py
rename to backend/scripts/manual_tests/test_message_serialization.py
diff --git a/backend/test_notification_create.py b/backend/scripts/manual_tests/test_notification_create.py
similarity index 100%
rename from backend/test_notification_create.py
rename to backend/scripts/manual_tests/test_notification_create.py
diff --git a/backend/test_notification_debug.py b/backend/scripts/manual_tests/test_notification_debug.py
similarity index 100%
rename from backend/test_notification_debug.py
rename to backend/scripts/manual_tests/test_notification_debug.py
diff --git a/backend/test_notification_signals.py b/backend/scripts/manual_tests/test_notification_signals.py
similarity index 100%
rename from backend/test_notification_signals.py
rename to backend/scripts/manual_tests/test_notification_signals.py
diff --git a/backend/test_pagination.py b/backend/scripts/manual_tests/test_pagination.py
similarity index 100%
rename from backend/test_pagination.py
rename to backend/scripts/manual_tests/test_pagination.py
diff --git a/backend/test_phone_export.py b/backend/scripts/manual_tests/test_phone_export.py
similarity index 100%
rename from backend/test_phone_export.py
rename to backend/scripts/manual_tests/test_phone_export.py
diff --git a/backend/test_reactions_api.py b/backend/scripts/manual_tests/test_reactions_api.py
similarity index 100%
rename from backend/test_reactions_api.py
rename to backend/scripts/manual_tests/test_reactions_api.py
diff --git a/backend/test_recipients.py b/backend/scripts/manual_tests/test_recipients.py
similarity index 100%
rename from backend/test_recipients.py
rename to backend/scripts/manual_tests/test_recipients.py
diff --git a/backend/test_recipients_api.py b/backend/scripts/manual_tests/test_recipients_api.py
similarity index 100%
rename from backend/test_recipients_api.py
rename to backend/scripts/manual_tests/test_recipients_api.py
diff --git a/backend/test_register_api.py b/backend/scripts/manual_tests/test_register_api.py
similarity index 100%
rename from backend/test_register_api.py
rename to backend/scripts/manual_tests/test_register_api.py
diff --git a/backend/test_reply_update.py b/backend/scripts/manual_tests/test_reply_update.py
similarity index 100%
rename from backend/test_reply_update.py
rename to backend/scripts/manual_tests/test_reply_update.py
diff --git a/backend/test_requests_access.py b/backend/scripts/manual_tests/test_requests_access.py
similarity index 100%
rename from backend/test_requests_access.py
rename to backend/scripts/manual_tests/test_requests_access.py
diff --git a/backend/test_requests_access_detailed.py b/backend/scripts/manual_tests/test_requests_access_detailed.py
similarity index 100%
rename from backend/test_requests_access_detailed.py
rename to backend/scripts/manual_tests/test_requests_access_detailed.py
diff --git a/backend/analyze_templates.py b/backend/scripts/utils/analyze_templates.py
similarity index 100%
rename from backend/analyze_templates.py
rename to backend/scripts/utils/analyze_templates.py
diff --git a/backend/create_test_data.py b/backend/scripts/utils/create_test_data.py
similarity index 100%
rename from backend/create_test_data.py
rename to backend/scripts/utils/create_test_data.py
diff --git a/backend/generate_notification.py b/backend/scripts/utils/generate_notification.py
similarity index 100%
rename from backend/generate_notification.py
rename to backend/scripts/utils/generate_notification.py
diff --git a/backend/quick_test.py b/backend/scripts/utils/quick_test.py
similarity index 100%
rename from backend/quick_test.py
rename to backend/scripts/utils/quick_test.py
diff --git a/backend/render_test_page.py b/backend/scripts/utils/render_test_page.py
similarity index 100%
rename from backend/render_test_page.py
rename to backend/scripts/utils/render_test_page.py
diff --git a/backend/simple_create_users.py b/backend/scripts/utils/simple_create_users.py
similarity index 100%
rename from backend/simple_create_users.py
rename to backend/scripts/utils/simple_create_users.py
diff --git a/backend/ldap_test_config/cn=config.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=module{0}.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=module{0}.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=module{0}.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=module{0}.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={0}core.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={0}core.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={0}core.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={0}core.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={1}cosine.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={1}cosine.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={1}cosine.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={1}cosine.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={2}inetorgperson.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={2}inetorgperson.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={2}inetorgperson.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={2}inetorgperson.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={3}rfc2307bis.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={3}rfc2307bis.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={3}rfc2307bis.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={3}rfc2307bis.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={4}ppolicy.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={4}ppolicy.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={4}ppolicy.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={4}ppolicy.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={5}kopano.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={5}kopano.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={5}kopano.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={5}kopano.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={6}openssh-lpk.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={6}openssh-lpk.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={6}openssh-lpk.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={6}openssh-lpk.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={7}postfix-book.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={7}postfix-book.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={7}postfix-book.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={7}postfix-book.ldif
diff --git a/backend/ldap_test_config/cn=config/cn=schema/cn={8}samba.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={8}samba.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/cn=schema/cn={8}samba.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/cn=schema/cn={8}samba.ldif
diff --git a/backend/ldap_test_config/cn=config/olcDatabase={-1}frontend.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={-1}frontend.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/olcDatabase={-1}frontend.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={-1}frontend.ldif
diff --git a/backend/ldap_test_config/cn=config/olcDatabase={0}config.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={0}config.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/olcDatabase={0}config.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={0}config.ldif
diff --git a/backend/ldap_test_config/cn=config/olcDatabase={1}mdb.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={1}mdb.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/olcDatabase={1}mdb.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={1}mdb.ldif
diff --git a/backend/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={0}memberof.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={0}memberof.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={0}memberof.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={0}memberof.ldif
diff --git a/backend/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={1}refint.ldif b/backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={1}refint.ldif
similarity index 100%
rename from backend/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={1}refint.ldif
rename to backend/tests/fixtures/ldap/ldap_test_config/cn=config/olcDatabase={1}mdb/olcOverlay={1}refint.ldif
diff --git a/backend/ldap_test_config/docker-openldap-was-admin-password-set b/backend/tests/fixtures/ldap/ldap_test_config/docker-openldap-was-admin-password-set
similarity index 100%
rename from backend/ldap_test_config/docker-openldap-was-admin-password-set
rename to backend/tests/fixtures/ldap/ldap_test_config/docker-openldap-was-admin-password-set
diff --git a/backend/ldap_test_data/data.mdb b/backend/tests/fixtures/ldap/ldap_test_data/data.mdb
similarity index 100%
rename from backend/ldap_test_data/data.mdb
rename to backend/tests/fixtures/ldap/ldap_test_data/data.mdb
diff --git a/backend/ldap_test_data/lock.mdb b/backend/tests/fixtures/ldap/ldap_test_data/lock.mdb
similarity index 100%
rename from backend/ldap_test_data/lock.mdb
rename to backend/tests/fixtures/ldap/ldap_test_data/lock.mdb
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 00000000..9ddfb574
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,37 @@
+# Документация проекта EUSRR
+
+Эта папка содержит всю документацию проекта, организованную по категориям.
+
+## 📁 Структура
+
+### [completed/](completed/)
+Завершенные задачи: рефакторинги, исправления, реализованные фичи (22 файла)
+
+### [guides/](guides/)
+Активные руководства и инструкции для разработчиков (гайды по валидации, миграции, настройке)
+
+### [architecture/](architecture/)
+Архитектурная документация и анализ систем (рендеринг чата, архитектура страниц)
+
+### [diagnostic/](diagnostic/)
+Диагностические руководства (WebSocket 1006, отладка проблем)
+
+### [in-progress/](in-progress/)
+Активные задачи в разработке (закупки, получатели заявок, календарь)
+
+### [reports/](reports/)
+Отчеты и аудиты проекта (реорганизация документации, план очистки)
+
+## 📝 Главная документация
+
+- [README.md](../README.md) - основная документация проекта
+- [docs/reports/](reports/) - отчеты и планы по проекту
+
+## 🔍 Поиск информации
+
+- **Завершенные фичи** → `completed/`
+- **Как настроить X** → `guides/`
+- **Как работает Y** → `architecture/`
+- **Проблемы с Z** → `diagnostic/`
+- **Что в разработке** → `in-progress/`
+- **Отчеты и аудиты** → `reports/`
diff --git a/CHAT_PAGE_RENDERING_ARCHITECTURE.md b/docs/architecture/CHAT_PAGE_RENDERING_ARCHITECTURE.md
similarity index 100%
rename from CHAT_PAGE_RENDERING_ARCHITECTURE.md
rename to docs/architecture/CHAT_PAGE_RENDERING_ARCHITECTURE.md
diff --git a/CHAT_RENDERING_ANALYSIS.md b/docs/architecture/CHAT_RENDERING_ANALYSIS.md
similarity index 100%
rename from CHAT_RENDERING_ANALYSIS.md
rename to docs/architecture/CHAT_RENDERING_ANALYSIS.md
diff --git a/docs/architecture/README.md b/docs/architecture/README.md
new file mode 100644
index 00000000..00c8b915
--- /dev/null
+++ b/docs/architecture/README.md
@@ -0,0 +1,23 @@
+# Архитектурная документация
+
+Документация по архитектуре и внутреннему устройству систем.
+
+## 📐 Документы
+
+### Система чата
+- **CHAT_PAGE_RENDERING_ARCHITECTURE.md** - архитектура рендеринга страницы чата
+- **CHAT_RENDERING_ANALYSIS.md** - анализ рендеринга чата
+
+## 🎯 Назначение
+
+Эти документы описывают:
+- Как работают различные компоненты системы
+- Архитектурные решения и их обоснование
+- Взаимодействие между модулями
+- Потоки данных и обработка событий
+
+Полезно для:
+- Понимания сложных систем
+- Рефакторинга
+- Отладки проблем производительности
+- Онбординга новых разработчиков
diff --git a/API_REFACTORING_TESTING.md b/docs/completed/API_REFACTORING_TESTING.md
similarity index 100%
rename from API_REFACTORING_TESTING.md
rename to docs/completed/API_REFACTORING_TESTING.md
diff --git a/AVATAR_CROPPER_IMPLEMENTATION.md b/docs/completed/AVATAR_CROPPER_IMPLEMENTATION.md
similarity index 100%
rename from AVATAR_CROPPER_IMPLEMENTATION.md
rename to docs/completed/AVATAR_CROPPER_IMPLEMENTATION.md
diff --git a/BASE_TEMPLATE_REFACTORING_COMPLETE.md b/docs/completed/BASE_TEMPLATE_REFACTORING_COMPLETE.md
similarity index 100%
rename from BASE_TEMPLATE_REFACTORING_COMPLETE.md
rename to docs/completed/BASE_TEMPLATE_REFACTORING_COMPLETE.md
diff --git a/CHAT_CACHING_FIX.md b/docs/completed/CHAT_CACHING_FIX.md
similarity index 100%
rename from CHAT_CACHING_FIX.md
rename to docs/completed/CHAT_CACHING_FIX.md
diff --git a/CHAT_LIST_BUGS_FIX.md b/docs/completed/CHAT_LIST_BUGS_FIX.md
similarity index 100%
rename from CHAT_LIST_BUGS_FIX.md
rename to docs/completed/CHAT_LIST_BUGS_FIX.md
diff --git a/CHAT_LIST_REFACTORING_COMPLETE.md b/docs/completed/CHAT_LIST_REFACTORING_COMPLETE.md
similarity index 100%
rename from CHAT_LIST_REFACTORING_COMPLETE.md
rename to docs/completed/CHAT_LIST_REFACTORING_COMPLETE.md
diff --git a/CHAT_LIST_SIDEBAR_FILTER.md b/docs/completed/CHAT_LIST_SIDEBAR_FILTER.md
similarity index 100%
rename from CHAT_LIST_SIDEBAR_FILTER.md
rename to docs/completed/CHAT_LIST_SIDEBAR_FILTER.md
diff --git a/DOCUMENTS_REFACTORING_COMPLETE.md b/docs/completed/DOCUMENTS_REFACTORING_COMPLETE.md
similarity index 100%
rename from DOCUMENTS_REFACTORING_COMPLETE.md
rename to docs/completed/DOCUMENTS_REFACTORING_COMPLETE.md
diff --git a/DYNAMIC_MEDIA_URLS.md b/docs/completed/DYNAMIC_MEDIA_URLS.md
similarity index 100%
rename from DYNAMIC_MEDIA_URLS.md
rename to docs/completed/DYNAMIC_MEDIA_URLS.md
diff --git a/EDITING_ATTACHMENTS_TROUBLESHOOTING.md b/docs/completed/EDITING_ATTACHMENTS_TROUBLESHOOTING.md
similarity index 100%
rename from EDITING_ATTACHMENTS_TROUBLESHOOTING.md
rename to docs/completed/EDITING_ATTACHMENTS_TROUBLESHOOTING.md
diff --git a/FEED_AJAX_REFACTORING.md b/docs/completed/FEED_AJAX_REFACTORING.md
similarity index 100%
rename from FEED_AJAX_REFACTORING.md
rename to docs/completed/FEED_AJAX_REFACTORING.md
diff --git a/FORWARDED_MESSAGE_METADATA.md b/docs/completed/FORWARDED_MESSAGE_METADATA.md
similarity index 100%
rename from FORWARDED_MESSAGE_METADATA.md
rename to docs/completed/FORWARDED_MESSAGE_METADATA.md
diff --git a/FOUC_FIX.md b/docs/completed/FOUC_FIX.md
similarity index 100%
rename from FOUC_FIX.md
rename to docs/completed/FOUC_FIX.md
diff --git a/JS_MODULES_REFACTORING_COMPLETE.md b/docs/completed/JS_MODULES_REFACTORING_COMPLETE.md
similarity index 100%
rename from JS_MODULES_REFACTORING_COMPLETE.md
rename to docs/completed/JS_MODULES_REFACTORING_COMPLETE.md
diff --git a/MESSAGE_EDITING_FULL_RERENDER.md b/docs/completed/MESSAGE_EDITING_FULL_RERENDER.md
similarity index 100%
rename from MESSAGE_EDITING_FULL_RERENDER.md
rename to docs/completed/MESSAGE_EDITING_FULL_RERENDER.md
diff --git a/MESSAGE_NEWLINES_FIX.md b/docs/completed/MESSAGE_NEWLINES_FIX.md
similarity index 100%
rename from MESSAGE_NEWLINES_FIX.md
rename to docs/completed/MESSAGE_NEWLINES_FIX.md
diff --git a/MESSAGE_RENDERING_REFACTORING.md b/docs/completed/MESSAGE_RENDERING_REFACTORING.md
similarity index 100%
rename from MESSAGE_RENDERING_REFACTORING.md
rename to docs/completed/MESSAGE_RENDERING_REFACTORING.md
diff --git a/MESSAGE_SELECTION_FORWARDING.md b/docs/completed/MESSAGE_SELECTION_FORWARDING.md
similarity index 100%
rename from MESSAGE_SELECTION_FORWARDING.md
rename to docs/completed/MESSAGE_SELECTION_FORWARDING.md
diff --git a/MESSAGE_SENDING_REFACTORING.md b/docs/completed/MESSAGE_SENDING_REFACTORING.md
similarity index 100%
rename from MESSAGE_SENDING_REFACTORING.md
rename to docs/completed/MESSAGE_SENDING_REFACTORING.md
diff --git a/POLLS_IMPLEMENTATION.md b/docs/completed/POLLS_IMPLEMENTATION.md
similarity index 100%
rename from POLLS_IMPLEMENTATION.md
rename to docs/completed/POLLS_IMPLEMENTATION.md
diff --git a/POLL_VOTERS_LIST.md b/docs/completed/POLL_VOTERS_LIST.md
similarity index 100%
rename from POLL_VOTERS_LIST.md
rename to docs/completed/POLL_VOTERS_LIST.md
diff --git a/POLL_WEBSOCKET_FIX.md b/docs/completed/POLL_WEBSOCKET_FIX.md
similarity index 100%
rename from POLL_WEBSOCKET_FIX.md
rename to docs/completed/POLL_WEBSOCKET_FIX.md
diff --git a/REACTIONS_FROM_DATABASE.md b/docs/completed/REACTIONS_FROM_DATABASE.md
similarity index 100%
rename from REACTIONS_FROM_DATABASE.md
rename to docs/completed/REACTIONS_FROM_DATABASE.md
diff --git a/backend/REACTIONS_IMPLEMENTATION.md b/docs/completed/REACTIONS_IMPLEMENTATION.md
similarity index 100%
rename from backend/REACTIONS_IMPLEMENTATION.md
rename to docs/completed/REACTIONS_IMPLEMENTATION.md
diff --git a/docs/completed/README.md b/docs/completed/README.md
new file mode 100644
index 00000000..a1defeb0
--- /dev/null
+++ b/docs/completed/README.md
@@ -0,0 +1,40 @@
+# Завершенные задачи
+
+Эта папка содержит документацию по завершенным задачам проекта.
+
+## 📊 Категории
+
+### 🔄 Рефакторинг (5 файлов)
+- BASE_TEMPLATE_REFACTORING_COMPLETE.md - базовые шаблоны
+- CHAT_LIST_REFACTORING_COMPLETE.md - список чатов
+- DOCUMENTS_REFACTORING_COMPLETE.md - модуль документов
+- JS_MODULES_REFACTORING_COMPLETE.md - JavaScript модули
+- REFACTORING_SUMMARY.md - общая сводка
+
+### 🐛 Исправления (7 файлов)
+- CHAT_CACHING_FIX.md - кэширование чатов
+- CHAT_LIST_BUGS_FIX.md - баги списка чатов
+- FOUC_FIX.md - Flash of Unstyled Content
+- MESSAGE_NEWLINES_FIX.md - переносы строк в сообщениях
+- POLL_WEBSOCKET_FIX.md - WebSocket для опросов
+- WEBSOCKET_ERROR_FIX.md - ошибки WebSocket
+- WEBSOCKET_KEEPALIVE_FIX.md - keepalive соединения
+
+### ✨ Реализованные фичи (10+ файлов)
+- AVATAR_CROPPER_IMPLEMENTATION.md - обрезка аватаров
+- FEED_AJAX_REFACTORING.md - AJAX лента новостей
+- FORWARDED_MESSAGE_METADATA.md - метаданные пересылки
+- MESSAGE_EDITING_FULL_RERENDER.md - полный рендеринг при редактировании
+- MESSAGE_RENDERING_REFACTORING.md - рендеринг сообщений
+- MESSAGE_SELECTION_FORWARDING.md - выбор и пересылка сообщений
+- MESSAGE_SENDING_REFACTORING.md - отправка сообщений
+- POLLS_IMPLEMENTATION.md - система опросов
+- POLL_VOTERS_LIST.md - список проголосовавших
+- REACTIONS_FROM_DATABASE.md - реакции из БД
+- REPLY_UPDATE_ON_EDIT.md - обновление ответов
+- и другие...
+
+## 📝 Примечание
+
+Все задачи в этой папке **завершены** и работают в production.
+Файлы сохранены для истории и справки.
diff --git a/REFACTORING_SUMMARY.md b/docs/completed/REFACTORING_SUMMARY.md
similarity index 100%
rename from REFACTORING_SUMMARY.md
rename to docs/completed/REFACTORING_SUMMARY.md
diff --git a/REPLY_UPDATE_ON_EDIT.md b/docs/completed/REPLY_UPDATE_ON_EDIT.md
similarity index 100%
rename from REPLY_UPDATE_ON_EDIT.md
rename to docs/completed/REPLY_UPDATE_ON_EDIT.md
diff --git a/WEBSOCKET_ERROR_FIX.md b/docs/completed/WEBSOCKET_ERROR_FIX.md
similarity index 100%
rename from WEBSOCKET_ERROR_FIX.md
rename to docs/completed/WEBSOCKET_ERROR_FIX.md
diff --git a/WEBSOCKET_KEEPALIVE_FIX.md b/docs/completed/WEBSOCKET_KEEPALIVE_FIX.md
similarity index 100%
rename from WEBSOCKET_KEEPALIVE_FIX.md
rename to docs/completed/WEBSOCKET_KEEPALIVE_FIX.md
diff --git a/docs/diagnostic/README.md b/docs/diagnostic/README.md
new file mode 100644
index 00000000..68dada83
--- /dev/null
+++ b/docs/diagnostic/README.md
@@ -0,0 +1,27 @@
+# Диагностические руководства
+
+Руководства по диагностике и решению проблем.
+
+## 🔧 Доступные гайды
+
+### WebSocket 1006 (закрытие соединения)
+- **WEBSOCKET_1006_QUICK_GUIDE.md** - быстрая диагностика
+- **WEBSOCKET_1006_PRIORITY_CHECK.md** - приоритетная проверка
+- **WEBSOCKET_1006_DIAGNOSTIC_PLAN.md** - полный план диагностики
+- **WEBSOCKET_1006_SUMMARY.md** - сводка по проблеме
+
+## 🎯 Использование
+
+Когда возникает проблема:
+1. Начните с **QUICK_GUIDE** для быстрой диагностики
+2. Используйте **PRIORITY_CHECK** для систематической проверки
+3. См. **DIAGNOSTIC_PLAN** для глубокого анализа
+4. Обращайтесь к **SUMMARY** для понимания контекста
+
+## 📝 Добавление новых гайдов
+
+При обнаружении новой повторяющейся проблемы:
+- Документируйте симптомы
+- Опишите шаги диагностики
+- Предложите решения
+- Добавьте примеры
diff --git a/WEBSOCKET_1006_DIAGNOSTIC_PLAN.md b/docs/diagnostic/WEBSOCKET_1006_DIAGNOSTIC_PLAN.md
similarity index 100%
rename from WEBSOCKET_1006_DIAGNOSTIC_PLAN.md
rename to docs/diagnostic/WEBSOCKET_1006_DIAGNOSTIC_PLAN.md
diff --git a/WEBSOCKET_1006_PRIORITY_CHECK.md b/docs/diagnostic/WEBSOCKET_1006_PRIORITY_CHECK.md
similarity index 100%
rename from WEBSOCKET_1006_PRIORITY_CHECK.md
rename to docs/diagnostic/WEBSOCKET_1006_PRIORITY_CHECK.md
diff --git a/WEBSOCKET_1006_QUICK_GUIDE.md b/docs/diagnostic/WEBSOCKET_1006_QUICK_GUIDE.md
similarity index 100%
rename from WEBSOCKET_1006_QUICK_GUIDE.md
rename to docs/diagnostic/WEBSOCKET_1006_QUICK_GUIDE.md
diff --git a/WEBSOCKET_1006_SUMMARY.md b/docs/diagnostic/WEBSOCKET_1006_SUMMARY.md
similarity index 100%
rename from WEBSOCKET_1006_SUMMARY.md
rename to docs/diagnostic/WEBSOCKET_1006_SUMMARY.md
diff --git a/CACHE_OPTIMIZATION_SUMMARY.md b/docs/guides/CACHE_OPTIMIZATION_SUMMARY.md
similarity index 100%
rename from CACHE_OPTIMIZATION_SUMMARY.md
rename to docs/guides/CACHE_OPTIMIZATION_SUMMARY.md
diff --git a/CACHING_SETUP.md b/docs/guides/CACHING_SETUP.md
similarity index 100%
rename from CACHING_SETUP.md
rename to docs/guides/CACHING_SETUP.md
diff --git a/IP_REGISTRATION_RESTRICTIONS.md b/docs/guides/IP_REGISTRATION_RESTRICTIONS.md
similarity index 100%
rename from IP_REGISTRATION_RESTRICTIONS.md
rename to docs/guides/IP_REGISTRATION_RESTRICTIONS.md
diff --git a/IP_RESTRICTIONS_README.md b/docs/guides/IP_RESTRICTIONS_README.md
similarity index 100%
rename from IP_RESTRICTIONS_README.md
rename to docs/guides/IP_RESTRICTIONS_README.md
diff --git a/LIVE_VALIDATION_GUIDE.md b/docs/guides/LIVE_VALIDATION_GUIDE.md
similarity index 100%
rename from LIVE_VALIDATION_GUIDE.md
rename to docs/guides/LIVE_VALIDATION_GUIDE.md
diff --git a/MESSENGER_QUICKSTART.md b/docs/guides/MESSENGER_QUICKSTART.md
similarity index 100%
rename from MESSENGER_QUICKSTART.md
rename to docs/guides/MESSENGER_QUICKSTART.md
diff --git a/NAME_VALIDATION.md b/docs/guides/NAME_VALIDATION.md
similarity index 100%
rename from NAME_VALIDATION.md
rename to docs/guides/NAME_VALIDATION.md
diff --git a/docs/guides/README.md b/docs/guides/README.md
new file mode 100644
index 00000000..1527b0d0
--- /dev/null
+++ b/docs/guides/README.md
@@ -0,0 +1,32 @@
+# Руководства разработчика
+
+Активные гайды и инструкции для работы с проектом.
+
+## 📚 Доступные руководства
+
+### Валидация и формы
+- **LIVE_VALIDATION_GUIDE.md** - живая валидация форм
+- **NAME_VALIDATION.md** - валидация имен
+
+### Миграция и обновление
+- **REALTIME_MIGRATION_GUIDE.md** - миграция на realtime
+- **WEBSOCKET_UNIFIED_MIGRATION.md** - унифицированный WebSocket
+
+### Быстрый старт
+- **MESSENGER_QUICKSTART.md** - быстрый старт с мессенджером
+
+### UX и интерфейс
+- **RECIPIENT_PICKER_UX_IMPROVEMENTS.md** - улучшения выбора получателей
+
+### Кэширование и оптимизация
+- **CACHE_OPTIMIZATION_SUMMARY.md** - оптимизация кэширования
+- **CACHING_SETUP.md** - настройка кэша
+
+### Безопасность
+- **IP_RESTRICTIONS_README.md** - IP ограничения
+- **IP_REGISTRATION_RESTRICTIONS.md** - ограничения регистрации
+
+## 🎯 Использование
+
+Эти гайды содержат актуальные инструкции для разработчиков.
+При внесении изменений в функционал - обновляйте соответствующие гайды.
diff --git a/REALTIME_MIGRATION_GUIDE.md b/docs/guides/REALTIME_MIGRATION_GUIDE.md
similarity index 100%
rename from REALTIME_MIGRATION_GUIDE.md
rename to docs/guides/REALTIME_MIGRATION_GUIDE.md
diff --git a/RECIPIENT_PICKER_UX_IMPROVEMENTS.md b/docs/guides/RECIPIENT_PICKER_UX_IMPROVEMENTS.md
similarity index 100%
rename from RECIPIENT_PICKER_UX_IMPROVEMENTS.md
rename to docs/guides/RECIPIENT_PICKER_UX_IMPROVEMENTS.md
diff --git a/WEBSOCKET_UNIFIED_MIGRATION.md b/docs/guides/WEBSOCKET_UNIFIED_MIGRATION.md
similarity index 100%
rename from WEBSOCKET_UNIFIED_MIGRATION.md
rename to docs/guides/WEBSOCKET_UNIFIED_MIGRATION.md
diff --git a/PERSONAL_CALENDAR_FEATURE.md b/docs/in-progress/PERSONAL_CALENDAR_FEATURE.md
similarity index 100%
rename from PERSONAL_CALENDAR_FEATURE.md
rename to docs/in-progress/PERSONAL_CALENDAR_FEATURE.md
diff --git a/PROCUREMENT_IMPLEMENTATION_PLAN.md b/docs/in-progress/PROCUREMENT_IMPLEMENTATION_PLAN.md
similarity index 100%
rename from PROCUREMENT_IMPLEMENTATION_PLAN.md
rename to docs/in-progress/PROCUREMENT_IMPLEMENTATION_PLAN.md
diff --git a/docs/in-progress/README.md b/docs/in-progress/README.md
new file mode 100644
index 00000000..314d8b81
--- /dev/null
+++ b/docs/in-progress/README.md
@@ -0,0 +1,38 @@
+# Задачи в разработке
+
+Активные задачи и функции, находящиеся в процессе реализации.
+
+## 🚧 Текущие задачи
+
+### Модуль закупок
+- **PROCUREMENT_IMPLEMENTATION_PLAN.md** - план реализации модуля закупок
+
+### Система получателей заявок
+- **REQUESTS_RECIPIENTS_PLAN.md** - план разработки
+- **REQUESTS_RECIPIENTS_PROGRESS.md** - текущий прогресс
+- **REQUESTS_RECIPIENTS_TESTING.md** - план тестирования
+
+### Личный календарь
+- **PERSONAL_CALENDAR_FEATURE.md** - функция личного календаря
+
+## 📋 Статус задач
+
+| Задача | Статус | Документация |
+|--------|--------|--------------|
+| Модуль закупок | 🟡 В разработке | PROCUREMENT_IMPLEMENTATION_PLAN.md |
+| Получатели заявок | 🟡 В разработке | REQUESTS_RECIPIENTS_*.md |
+| Личный календарь | 🔵 Планирование | PERSONAL_CALENDAR_FEATURE.md |
+
+## 🎯 Workflow
+
+1. **Планирование** - создается _PLAN.md
+2. **Разработка** - ведется _PROGRESS.md
+3. **Тестирование** - используется _TESTING.md
+4. **Завершение** - файлы перемещаются в `completed/` с суффиксом _COMPLETE.md
+
+## 📝 Примечание
+
+При завершении задачи:
+- Переименуйте документ в *_COMPLETE.md
+- Переместите в `../completed/`
+- Обновите changelog проекта
diff --git a/REQUESTS_RECIPIENTS_PLAN.md b/docs/in-progress/REQUESTS_RECIPIENTS_PLAN.md
similarity index 100%
rename from REQUESTS_RECIPIENTS_PLAN.md
rename to docs/in-progress/REQUESTS_RECIPIENTS_PLAN.md
diff --git a/REQUESTS_RECIPIENTS_PROGRESS.md b/docs/in-progress/REQUESTS_RECIPIENTS_PROGRESS.md
similarity index 100%
rename from REQUESTS_RECIPIENTS_PROGRESS.md
rename to docs/in-progress/REQUESTS_RECIPIENTS_PROGRESS.md
diff --git a/REQUESTS_RECIPIENTS_TESTING.md b/docs/in-progress/REQUESTS_RECIPIENTS_TESTING.md
similarity index 100%
rename from REQUESTS_RECIPIENTS_TESTING.md
rename to docs/in-progress/REQUESTS_RECIPIENTS_TESTING.md
diff --git a/docs/reports/PROJECT_CLEANUP_PLAN.md b/docs/reports/PROJECT_CLEANUP_PLAN.md
new file mode 100644
index 00000000..64c9c2e0
--- /dev/null
+++ b/docs/reports/PROJECT_CLEANUP_PLAN.md
@@ -0,0 +1,367 @@
+# План наведения порядка в проекте 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**
+ ```python
+ # TODO: Реализовать логику голосования
+ ```
+
+2. **realtime/consumers.py:747**
+ ```python
+ # TODO: Реализовать через Redis для производительности
+ ```
+
+3. **feed/notification_signals.py:130**
+ ```python
+ # TODO: реализовать систему подписок
+ ```
+
+4. **employees/ldap/services/sync_service.py:437**
+ ```python
+ # TODO: Реализовать через UserService
+ ```
+
+5. **employees/ldap/services/user_service.py:123**
+ ```python
+ # TODO: Убрать после полного рефакторинга
+ ```
+
+6. **documents/views.py:305**
+ ```python
+ # TODO: добавить проверку членства в отделе через отдельный API запрос
+ ```
+
+7-10. **api/v1/communications/poll_views.py** (4 штуки):
+ ```python
+ # TODO: проверить права пользователя на отправку в чат (L80)
+ # TODO: проверить user_can_access_chat (L242)
+ # TODO: проверить модераторские права (L343)
+ # TODO: user_can_access_chat (L385)
+ ```
+
+**JavaScript (5 штук):**
+
+1-4. **chatMenuActions.js** (4 штуки):
+ ```javascript
+ // TODO: Реализовать API endpoint для закрепления (L77)
+ // TODO: Реализовать API endpoint для управления уведомлениями (L109)
+ // TODO: Создать страницу редактирования чата (L134)
+ // TODO: Реализовать API endpoint для удаления (L144)
+ ```
+
+5. **requestCrudHandler.js:161**
+ ```javascript
+ 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. **Настройка виртуального окружения**
+**Приоритет:** ✅ ВЫПОЛНЕНО
+
+- [x] Создано виртуальное окружение `.venv/`
+- [x] Настроена автоматическая активация в VS Code
+- [x] Создан файл инструкций `.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
+- Добавить архитектурные диаграммы
+
+---
+
+**Примечание:** Этот план можно выполнять поэтапно. Начните с критичных задач (безопасность) и постепенно двигайтесь к улучшениям.
diff --git a/docs/reports/README.md b/docs/reports/README.md
new file mode 100644
index 00000000..e0e90e5e
--- /dev/null
+++ b/docs/reports/README.md
@@ -0,0 +1,35 @@
+# Отчеты и аудиты
+
+Отчеты о выполненных работах по реорганизации и очистке проекта.
+
+## 📋 Список отчетов
+
+### [PROJECT_CLEANUP_PLAN.md](PROJECT_CLEANUP_PLAN.md)
+Комплексный план наведения порядка в проекте:
+- Анализ структуры
+- Найденные проблемы
+- План действий
+- Приоритизация задач
+
+### [REORGANIZATION_REPORT.md](REORGANIZATION_REPORT.md)
+Отчет о реорганизации документации:
+- Создание структуры docs/
+- Перемещение 47+ MD файлов
+- Статистика и результаты
+
+## 🎯 Назначение
+
+Эта папка содержит официальные отчеты о:
+- Проведенных аудитах
+- Реорганизации структуры
+- Выполненных задачах
+- Найденных проблемах и решениях
+
+## 📝 Правила
+
+При создании нового отчета:
+- Используй понятное имя файла
+- Добавь дату создания
+- Укажи статус (завершено/в процессе)
+- Структурируй информацию
+- Добавь статистику "до/после"
diff --git a/docs/reports/REORGANIZATION_REPORT.md b/docs/reports/REORGANIZATION_REPORT.md
new file mode 100644
index 00000000..d3ace626
--- /dev/null
+++ b/docs/reports/REORGANIZATION_REPORT.md
@@ -0,0 +1,185 @@
+# Отчет о реорганизации документации
+
+**Дата:** 26 декабря 2025 г.
+**Задача:** Пункт 3 из PROJECT_CLEANUP_PLAN.md - Реорганизация документации
+
+---
+
+## ✅ Выполнено
+
+### 1. Создана структура папок
+```
+docs/
+├── completed/ # Завершенные задачи
+├── guides/ # Руководства разработчика
+├── architecture/ # Архитектурная документация
+├── diagnostic/ # Диагностические гайды
+└── in-progress/ # Активные задачи
+```
+
+### 2. Статистика перемещения
+
+#### До:
+- ✗ **47 MD файлов** в корне проекта (хаос)
+- ✗ Нет структуры
+- ✗ Дубликаты и устаревшие файлы
+
+#### После:
+- ✅ **2 MD файла** в корне (README.md, PROJECT_CLEANUP_PLAN.md)
+- ✅ **54 MD файла** организованы в docs/
+- ✅ Создано **6 README** файлов для навигации
+
+### 3. Распределение по категориям
+
+| Категория | Количество | Описание |
+|-----------|------------|----------|
+| **completed/** | 28 файлов | Завершенные рефакторинги, исправления, фичи |
+| **guides/** | 11 файлов | Активные руководства и инструкции |
+| **architecture/** | 3 файла | Архитектурная документация |
+| **diagnostic/** | 5 файлов | Диагностические руководства |
+| **in-progress/** | 6 файлов | Задачи в разработке |
+| **Корень** | 2 файла | README.md, PROJECT_CLEANUP_PLAN.md |
+
+---
+
+## 🗂️ Детали перемещения
+
+### Завершенные задачи → `docs/completed/`
+**Рефакторинг (5):**
+- BASE_TEMPLATE_REFACTORING_COMPLETE.md
+- CHAT_LIST_REFACTORING_COMPLETE.md
+- DOCUMENTS_REFACTORING_COMPLETE.md
+- JS_MODULES_REFACTORING_COMPLETE.md
+- REFACTORING_SUMMARY.md
+
+**Исправления (7):**
+- 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
+
+**Фичи (15+):**
+- 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
+- POLL_VOTERS_LIST.md
+- REACTIONS_FROM_DATABASE.md
+- REPLY_UPDATE_ON_EDIT.md
+- и другие...
+
+### Активные гайды → `docs/guides/`
+- LIVE_VALIDATION_GUIDE.md
+- REALTIME_MIGRATION_GUIDE.md
+- WEBSOCKET_UNIFIED_MIGRATION.md
+- MESSENGER_QUICKSTART.md
+- RECIPIENT_PICKER_UX_IMPROVEMENTS.md
+- NAME_VALIDATION.md
+- IP_RESTRICTIONS_README.md
+- IP_REGISTRATION_RESTRICTIONS.md
+- CACHE_OPTIMIZATION_SUMMARY.md
+- CACHING_SETUP.md
+
+### Архитектура → `docs/architecture/`
+- CHAT_PAGE_RENDERING_ARCHITECTURE.md
+- CHAT_RENDERING_ANALYSIS.md
+
+### Диагностика → `docs/diagnostic/`
+- WEBSOCKET_1006_QUICK_GUIDE.md
+- WEBSOCKET_1006_PRIORITY_CHECK.md
+- WEBSOCKET_1006_DIAGNOSTIC_PLAN.md
+- WEBSOCKET_1006_SUMMARY.md
+
+### В разработке → `docs/in-progress/`
+- PROCUREMENT_IMPLEMENTATION_PLAN.md
+- REQUESTS_RECIPIENTS_PLAN.md
+- REQUESTS_RECIPIENTS_PROGRESS.md
+- REQUESTS_RECIPIENTS_TESTING.md
+- PERSONAL_CALENDAR_FEATURE.md
+
+---
+
+## 🗑️ Удаленные файлы
+
+### Устаревшие ANALYSIS файлы (5):
+- ✗ CHAT_LIST_RENDERING_ANALYSIS.md
+- ✗ DOCUMENTS_MODAL_ANALYSIS.md
+- ✗ POLL_LOADING_ANALYSIS.md
+- ✗ BASE_TEMPLATE_REFACTORING.md (план, оставлен COMPLETE)
+- ✗ MESSAGE_EDITING_ANALYSIS.md
+
+### Пустые файлы (1):
+- ✗ SELECTION_FIXES.md
+
+**Всего удалено:** 6 файлов
+
+---
+
+## 📚 Созданная документация
+
+Создано 6 README файлов для навигации:
+
+1. **docs/README.md** - главная страница документации
+2. **docs/completed/README.md** - описание завершенных задач
+3. **docs/guides/README.md** - каталог руководств
+4. **docs/architecture/README.md** - архитектурная документация
+5. **docs/diagnostic/README.md** - диагностические гайды
+6. **docs/in-progress/README.md** - активные задачи
+
+---
+
+## 🎯 Результат
+
+### Преимущества новой структуры:
+
+✅ **Легкая навигация** - понятная категоризация
+✅ **Быстрый поиск** - файлы сгруппированы логически
+✅ **Чистота корня** - только 2 главных файла
+✅ **Документация** - README в каждой категории
+✅ **Масштабируемость** - легко добавлять новые документы
+✅ **История** - завершенные задачи сохранены
+
+### Workflow для будущих задач:
+
+1. **Новая задача** → создать `docs/in-progress/TASK_PLAN.md`
+2. **В процессе** → вести `docs/in-progress/TASK_PROGRESS.md`
+3. **Завершено** → переименовать в `_COMPLETE.md` и переместить в `docs/completed/`
+4. **Гайд** → создать в `docs/guides/`
+
+---
+
+## 📝 Рекомендации
+
+### Поддержка структуры:
+- При завершении задачи перемещать в `completed/`
+- Обновлять README при добавлении новых категорий
+- Удалять устаревшие ANALYSIS после создания COMPLETE версии
+- Использовать понятные имена файлов
+
+### Именование:
+- `*_COMPLETE.md` - завершенные задачи
+- `*_GUIDE.md` - руководства
+- `*_PLAN.md` - планы разработки
+- `*_PROGRESS.md` - текущий прогресс
+- `*_TESTING.md` - планы тестирования
+
+---
+
+## ✨ Итог
+
+**Задача выполнена полностью!**
+
+- ✅ Создана структура папок
+- ✅ Перемещены 47+ файлов
+- ✅ Удалены 6 устаревших файлов
+- ✅ Создано 6 README для навигации
+- ✅ Корень проекта очищен (2 файла вместо 49)
+
+Документация теперь организована, легко находима и готова к дальнейшему развитию!