feat: Добавлен инструмент генерации документов для AI Ассистента

- Создан API create_document_with_text.php для создания DOCX/XLSX/PPTX с текстом от AI
- Поддержка Markdown форматирования (заголовки, жирный, курсив, списки, код)
- Установлен PHPWord для красивого форматирования документов
- Исправлены пути сохранения (crm2/CRM_Active_Files/... без /crm/ в начале)
- Замена пробелов на подчеркивания в именах папок
- Создана документация для AI и разработчиков
- Добавлены API для работы с шаблонами Nextcloud
This commit is contained in:
Fedor
2025-11-12 19:46:06 +03:00
parent 75912e5cfb
commit cd90b0d58a
307 changed files with 17246 additions and 417 deletions

View File

@@ -0,0 +1,283 @@
# 🚨 КРИТИЧЕСКИЙ ОТЧЁТ: МАССОВОЕ УДАЛЕНИЕ ФАЙЛОВ
## 📅 ДАТА ИНЦИДЕНТА:
**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/
```
---
## 🔍 ЧТО ПРОИЗОШЛО:
1. **30 октября 2025** произошло массовое удаление папок проектов из Nextcloud
2. Все файлы остались **в корзине** (не удалены окончательно)
3. В CRM **записи в БД остались**, но ссылки на S3/Nextcloud **битые**
4. Пользователи видят файлы в 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
**Рекомендуется для срочности**
1. Войти в Nextcloud Web: https://office.clientright.ru:8443
2. Зайти в корзину (Deleted files)
3. Выбрать все папки проектов
4. Нажать "Restore"
5. Запустить индексацию Redis
**Плюсы:**
- ✅ Быстро (1-2 клика)
-Все файлы вернутся на место
- ✅ Кириллица не проблема
**Минусы:**
- ❌ Nextcloud СТАРЫЙ, нужно проверить куда восстановятся
---
### Вариант 2: МИГРАЦИЯ НА S3 С ТРАНСЛИТЕРАЦИЕЙ
**Рекомендуется для долгосрочной стабильности**
1. Создать скрипт транслитерации путей
2. Обновить БД (filename, s3_key) на новые пути
3. Загрузить файлы на S3 с ASCII именами
4. Установить ACL public-read
5. Обновить Redis индекс
**Плюсы:**
- ✅ Совместимость с S3 API
- ✅ Нет проблем с кириллицей
- ✅ Проще для автоматизации
**Минусы:**
- ❌ Долго (нужно обработать 10K файлов)
- ❌ Риск ошибок при массовой операции
- ❌ Нужно изменять БД
---
### Вариант 3: КОПИРОВАНИЕ В НОВЫЙ NEXTCLOUD
**Временное решение**
1. Скопировать из корзины в новый Nextcloud External Storage
2. Запустить индексацию
3. Обновить Redis
**Плюсы:**
- ✅ Быстро
- ✅ Кириллица работает
**Минусы:**
- ❌ Файлы остаются в старом Nextcloud
- ❌ Дублирование данных
---
## 🔧 ТЕХНИЧЕСКИЕ ДЕТАЛИ:
### Пути в корзине:
```bash
/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 расшифровка:
```bash
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
---
## 🔍 РАССЛЕДОВАНИЕ: КАК ЭТО ПРОИЗОШЛО
### 📅 ХРОНОЛОГИЯ СОБЫТИЙ:
1. **22 октября 2025** - Миграция файлов на S3/Nextcloud
(найдено множество бэкапов: `backup_before_migration_2025-10-22_*.sql`)
2. **30 октября 2025, 10:09:12** - МАССОВОЕ УДАЛЕНИЕ
- **1003 папки проектов** перемещены в корзину Nextcloud
- Timestamp в именах папок: `.d1761808152` (30.10.2025 10:09)
3. **31 октября - 1 ноября** - Дополнительные удаления
- Timestamp `.d1761933470` (31.10.2025 20:57)
- Timestamp `.d1761987435` (01.11.2025 11:57)
### 🕵️ ЧТО МОГЛО СТАТЬ ПРИЧИНОЙ:
#### Версия 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 запускается раз в неделю
### 🔬 ДОКАЗАТЕЛЬСТВА:
```bash
# 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
```
### 💡 ВЫВОДЫ:
1. **Файлы НЕ ПОТЕРЯНЫ** - все в корзине Nextcloud
2. **Удаление было автоматическим** - слишком синхронное (1003 папки одновременно)
3. **Скорее всего - cron job Nextcloud** или скрипт очистки
4. **Проблема в миграции:** файлы остались в старом Nextcloud, но не были корректно проиндексированы
### ⚠️ РИСКИ:
**КОРЗИНА NEXTCLOUD ОЧИЩАЕТСЯ АВТОМАТИЧЕСКИ ЧЕРЕЗ 30 ДНЕЙ!**
- Удалено: 30 октября 2025
- Автоочистка: ~30 ноября 2025
- **ОСТАЛОСЬ ~28 ДНЕЙ** до безвозвратной потери
---
## 🚀 РЕКОМЕНДУЕМЫЕ СРОЧНЫЕ ДЕЙСТВИЯ:
### 1. НЕМЕДЛЕННО (в течение 24 часов):
```bash
# Сделать бэкап корзины (ГОТОВО ✅)
/backup/nextcloud_trashbin_20251102_233351.tar.gz
```
### 2. ЗАВТРА (в течение 48 часов):
Выбрать вариант восстановления и восстановить файлы
### 3. ПОСЛЕ ВОССТАНОВЛЕНИЯ:
- [ ] Отключить автоочистку Nextcloud
- [ ] Настроить правильную индексацию S3 External Storage
- [ ] Проверить cron jobs Nextcloud
- [ ] Настроить автоматический бэкап Nextcloud
---