- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI - Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код) - Установлен PHPWord для красивого форматирования документов - Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале) - Замена пробелов на подчеркивания в именах папок - Создана документация для AI и разработчиков - Добавлены API для работы с шаблонами Nextcloud
11 KiB
11 KiB
🚨 КРИТИЧЕСКИЙ ОТЧЁТ: МАССОВОЕ УДАЛЕНИЕ ФАЙЛОВ
📅 ДАТА ИНЦИДЕНТА:
30 октября 2025, ~10:09
📊 МАСШТАБ ПРОБЛЕМЫ:
Цифры:
- 1,015 проектов имеют файлы в БД CRM
- 1,003 проекта (~99%) в корзине Nextcloud
- 10,532 файлов записей в БД
- 10,375 файлов физически в корзине
- 12 GB данных в корзине
География удаления:
/var/lib/docker/volumes/root_nextcloud_data/_data/data/admin/files_trashbin/files/
🔍 ЧТО ПРОИЗОШЛО:
- 30 октября 2025 произошло массовое удаление папок проектов из Nextcloud
- Все файлы остались в корзине (не удалены окончательно)
- В CRM записи в БД остались, но ссылки на S3/Nextcloud битые
- Пользователи видят файлы в CRM, но не могут их открыть
📂 ТОП-20 ПРОЕКТОВ ПО КОЛИЧЕСТВУ ФАЙЛОВ В КОРЗИНЕ:
| ID проекта | Файлов | Размер (MB) |
|---|---|---|
| 3624 | 27 | 98.73 |
| 42049 | 26 | 6.46 |
| 14388 | 26 | 70.32 |
| 57349 | 25 | 4.21 |
| 22734 | 25 | 47.68 |
| 83455 | 24 | 25.31 |
| 28221 | 24 | 34.36 |
| 338978 | 23 | 20.08 |
| 18319 | 23 | 25.75 |
| 4313 | 23 | 58.6 |
| 80291 | 23 | 8.81 |
| 17925 | 22 | 24.2 |
| 27220 | 22 | 25.5 |
| 354597 | 22 | 13.56 |
| 35512 | 21 | 31.86 |
| 362324 | 21 | 9.49 |
| 58462 | 21 | 26.34 |
| 7517 | 21 | 58.2 |
| 28104 | 21 | 11.37 |
| 332945 | 20 | 27.37 |
⚠️ ТЕКУЩАЯ ПРОБЛЕМА:
Проект 390983 (Макарова):
- ✅ ВОССТАНОВЛЕН вручную на S3
- ✅ ACL исправлены
- ✅ HTML entities исправлены в БД
- ✅ Кнопка "Через Nextcloud" работает
Проект 62315 (Крылов):
- ✅ НАЙДЕНЫ все 16 файлов в корзине
- ❌ НЕ ВОССТАНОВЛЕНЫ (TWC Storage не принимает кириллицу через API)
Остальные 1001 проект:
- ❌ НЕ ПРОВЕРЕНЫ
- ❌ НЕ ВОССТАНОВЛЕНЫ
🎯 ПЛАН ВОССТАНОВЛЕНИЯ:
Вариант 1: МАССОВОЕ ВОССТАНОВЛЕНИЕ ЧЕРЕЗ NEXTCLOUD WEB UI
Рекомендуется для срочности
- Войти в Nextcloud Web: https://office.clientright.ru:8443
- Зайти в корзину (Deleted files)
- Выбрать все папки проектов
- Нажать "Restore"
- Запустить индексацию Redis
Плюсы:
- ✅ Быстро (1-2 клика)
- ✅ Все файлы вернутся на место
- ✅ Кириллица не проблема
Минусы:
- ❌ Nextcloud СТАРЫЙ, нужно проверить куда восстановятся
Вариант 2: МИГРАЦИЯ НА S3 С ТРАНСЛИТЕРАЦИЕЙ
Рекомендуется для долгосрочной стабильности
- Создать скрипт транслитерации путей
- Обновить БД (filename, s3_key) на новые пути
- Загрузить файлы на S3 с ASCII именами
- Установить ACL public-read
- Обновить Redis индекс
Плюсы:
- ✅ Совместимость с S3 API
- ✅ Нет проблем с кириллицей
- ✅ Проще для автоматизации
Минусы:
- ❌ Долго (нужно обработать 10K файлов)
- ❌ Риск ошибок при массовой операции
- ❌ Нужно изменять БД
Вариант 3: КОПИРОВАНИЕ В НОВЫЙ NEXTCLOUD
Временное решение
- Скопировать из корзины в новый Nextcloud External Storage
- Запустить индексацию
- Обновить Redis
Плюсы:
- ✅ Быстро
- ✅ Кириллица работает
Минусы:
- ❌ Файлы остаются в старом Nextcloud
- ❌ Дублирование данных
🔧 ТЕХНИЧЕСКИЕ ДЕТАЛИ:
Пути в корзине:
/var/lib/docker/volumes/root_nextcloud_data/_data/data/admin/files_trashbin/files/
├── Крылов_ЧОУ_ДПО_..._62315.d1761989314/ (16 файлов)
├── Макарова_ИП_..._390983.d1761989645/ (8 файлов)
├── ... (1001 папка)
Пример имени папки:
Крылов_ЧОУ_ДПО_ОБРАЗОВАТЕЛЬНЫЕ_ТЕХНОЛОГИИ_СКИЛБОКС_(КОРОБКА_НАВЫКОВ)_62315.d1761989314
└─┬─┘ └────┬────┘
Project ID Timestamp
Timestamp расшифровка:
date -d @1761989314 → 2025-10-30 10:09:12
🚀 РЕКОМЕНДУЕМЫЕ ДЕЙСТВИЯ (СРОЧНО):
1. НЕМЕДЛЕННО:
- НЕ ОЧИЩАТЬ КОРЗИНУ NEXTCLOUD!
- Сделать бэкап корзины:
tar -czf /backup/nextcloud_trashbin_$(date +%Y%m%d).tar.gz /var/lib/docker/volumes/root_nextcloud_data/_data/data/admin/files_trashbin/ - Решить: какой вариант восстановления использовать
2. ВОССТАНОВЛЕНИЕ (выбрать вариант):
- Вариант 1: Restore через Nextcloud Web UI
- Вариант 2: Миграция на S3 с транслитерацией
- Вариант 3: Копирование в новый Nextcloud
3. ПОСЛЕ ВОССТАНОВЛЕНИЯ:
- Запустить индексацию Redis:
node crm_extensions/file_storage/nextcloud_fileid_indexer.js - Проверить 10-20 проектов вручную
- Настроить автоматический бэкап Nextcloud
📝 ПОЛНЫЙ СПИСОК ПРОЕКТОВ:
Сохранён в /tmp/trashbin_report.json (1003 проекта)
🔗 СВЯЗАННЫЕ ДОКУМЕНТЫ:
PROJECT_390983_FIXED.md- пример восстановления проекта МакароваNEXTCLOUD_BUTTON_FIX_REDIS.md- исправление кнопки "Через Nextcloud"ИСТОРИЯ_КОСЯКА_С_REDIS.md- история проблем с Redis кешем
⏰ ВРЕМЯ СОЗДАНИЯ ОТЧЁТА:
date '+%Y-%m-%d %H:%M:%S'
2025-11-02 23:33:44
🔍 РАССЛЕДОВАНИЕ: КАК ЭТО ПРОИЗОШЛО
📅 ХРОНОЛОГИЯ СОБЫТИЙ:
-
22 октября 2025 - Миграция файлов на S3/Nextcloud
(найдено множество бэкапов:backup_before_migration_2025-10-22_*.sql) -
30 октября 2025, 10:09:12 - МАССОВОЕ УДАЛЕНИЕ
- 1003 папки проектов перемещены в корзину Nextcloud
- Timestamp в именах папок:
.d1761808152(30.10.2025 10:09)
-
31 октября - 1 ноября - Дополнительные удаления
- Timestamp
.d1761933470(31.10.2025 20:57) - Timestamp
.d1761987435(01.11.2025 11:57)
- Timestamp
🕵️ ЧТО МОГЛО СТАТЬ ПРИЧИНОЙ:
Версия 1: Автоматическая очистка Nextcloud
- Nextcloud имеет функцию автоочистки External Storage
- Возможно, 30 октября сработал cron job
- При переносе на S3 файлы могли быть "отключены" от Nextcloud
- Nextcloud решил "удалить" несуществующие файлы
Версия 2: Ручное удаление
- Кто-то зашёл в Nextcloud Web UI
- Выбрал все папки проектов
- Нажал Delete
- Маловероятно: слишком много папок (1003)
Версия 3: Скрипт миграции
- При миграции мог быть скрипт очистки старых файлов
- Скрипт сработал с задержкой (22.10 → 30.10 = 8 дней)
- Возможно: cron job запускается раз в неделю
🔬 ДОКАЗАТЕЛЬСТВА:
# Timestamp удаления
1761808152 → 2025-10-30 10:09:12
# Системные логи за это время
окт 30 00:21:45 ... "cleaning up after shim disconnected"
окт 30 00:21:45 ... "cleanup warnings"
# Docker контейнеры перезапускались
окт 30 00:20:56 ... "Container nextcloud-redis is not running"
окт 30 00:21:45 ... ignoring event /tasks/delete
💡 ВЫВОДЫ:
- Файлы НЕ ПОТЕРЯНЫ - все в корзине Nextcloud
- Удаление было автоматическим - слишком синхронное (1003 папки одновременно)
- Скорее всего - cron job Nextcloud или скрипт очистки
- Проблема в миграции: файлы остались в старом Nextcloud, но не были корректно проиндексированы
⚠️ РИСКИ:
КОРЗИНА NEXTCLOUD ОЧИЩАЕТСЯ АВТОМАТИЧЕСКИ ЧЕРЕЗ 30 ДНЕЙ!
- Удалено: 30 октября 2025
- Автоочистка: ~30 ноября 2025
- ОСТАЛОСЬ ~28 ДНЕЙ до безвозвратной потери
🚀 РЕКОМЕНДУЕМЫЕ СРОЧНЫЕ ДЕЙСТВИЯ:
1. НЕМЕДЛЕННО (в течение 24 часов):
# Сделать бэкап корзины (ГОТОВО ✅)
/backup/nextcloud_trashbin_20251102_233351.tar.gz
2. ЗАВТРА (в течение 48 часов):
Выбрать вариант восстановления и восстановить файлы
3. ПОСЛЕ ВОССТАНОВЛЕНИЯ:
- Отключить автоочистку Nextcloud
- Настроить правильную индексацию S3 External Storage
- Проверить cron jobs Nextcloud
- Настроить автоматический бэкап Nextcloud