- court_document_parser.py: парсер судебных документов с извлечением ФИО, номера дела, УИД, суда - court_parser_api.py: API для вызова парсера из n8n - pdf_court_parser.py: парсер PDF документов с извлечением текста - simple_project_updater.php: обновление проектов через CRM API - simple_project_updater_v2.php: обновленная версия с прямыми SQL запросами и S3Client - update_project_from_document.php: альтернативный скрипт обновления - test_input.json: тестовые данные для парсера - README файлы с документацией для всех скриптов Скрипты поддерживают: - Поиск проектов по ФИО, номеру дела, УИД, названию суда - Создание документов в CRM с загрузкой в S3 - Привязку документов к проектам - Логирование всех операций - Работу с n8n через SSH команды
168 lines
5.0 KiB
Bash
Executable File
168 lines
5.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Скрипт синхронизации только CRM Extensions между тестовой и боевой средой
|
|
# Автор: Фёдор
|
|
# Дата: 2025-09-26
|
|
|
|
set -e
|
|
|
|
# Цвета для вывода
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# Пути
|
|
TEST_DIR="/var/www/fastuser/data/www/crm-test.clientright.ru"
|
|
PROD_DIR="/var/www/fastuser/data/www/crm.clientright.ru"
|
|
EXTENSIONS_DIR="crm_extensions"
|
|
|
|
# Функция логирования
|
|
log() {
|
|
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
|
|
}
|
|
|
|
error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
exit 1
|
|
}
|
|
|
|
success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
# Проверка существования директорий
|
|
check_directories() {
|
|
log "Проверка директорий..."
|
|
|
|
if [ ! -d "$TEST_DIR/$EXTENSIONS_DIR" ]; then
|
|
error "CRM Extensions не найдены в тестовой среде: $TEST_DIR/$EXTENSIONS_DIR"
|
|
fi
|
|
|
|
if [ ! -d "$PROD_DIR" ]; then
|
|
error "Продакшн директория не найдена: $PROD_DIR"
|
|
fi
|
|
|
|
success "Директории проверены"
|
|
}
|
|
|
|
# Создание резервной копии текущих Extensions
|
|
backup_current() {
|
|
log "Создание резервной копии текущих CRM Extensions..."
|
|
|
|
if [ -d "$PROD_DIR/$EXTENSIONS_DIR" ]; then
|
|
BACKUP_NAME="crm_extensions_backup_$(date +%Y%m%d_%H%M%S).tar.gz"
|
|
BACKUP_PATH="/var/www/fastuser/data/backups/$BACKUP_NAME"
|
|
|
|
mkdir -p "$(dirname "$BACKUP_PATH")"
|
|
|
|
tar -czf "$BACKUP_PATH" -C "$PROD_DIR" "$EXTENSIONS_DIR"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
success "Резервная копия создана: $BACKUP_PATH"
|
|
else
|
|
error "Ошибка создания резервной копии"
|
|
fi
|
|
else
|
|
warning "CRM Extensions не найдены в продакшн среде, пропускаем бэкап"
|
|
fi
|
|
}
|
|
|
|
# Синхронизация CRM Extensions
|
|
sync_extensions() {
|
|
log "Синхронизация CRM Extensions..."
|
|
|
|
# Удаляем старую версию
|
|
if [ -d "$PROD_DIR/$EXTENSIONS_DIR" ]; then
|
|
rm -rf "$PROD_DIR/$EXTENSIONS_DIR"
|
|
log "Удалена старая версия CRM Extensions"
|
|
fi
|
|
|
|
# Копируем новую версию
|
|
cp -r "$TEST_DIR/$EXTENSIONS_DIR" "$PROD_DIR/"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
success "CRM Extensions скопированы"
|
|
else
|
|
error "Ошибка копирования CRM Extensions"
|
|
fi
|
|
|
|
# Устанавливаем правильные права
|
|
chown -R fastuser:fastuser "$PROD_DIR/$EXTENSIONS_DIR"
|
|
find "$PROD_DIR/$EXTENSIONS_DIR" -type f -exec chmod 644 {} \;
|
|
find "$PROD_DIR/$EXTENSIONS_DIR" -type d -exec chmod 755 {} \;
|
|
find "$PROD_DIR/$EXTENSIONS_DIR" -name "*.sh" -exec chmod 755 {} \;
|
|
|
|
success "Права доступа установлены"
|
|
}
|
|
|
|
# Проверка синхронизации
|
|
verify_sync() {
|
|
log "Проверка синхронизации..."
|
|
|
|
# Проверяем ключевые файлы
|
|
KEY_FILES=(
|
|
"crm_extensions/README.md"
|
|
"crm_extensions/.env.example"
|
|
"crm_extensions/nextcloud_api.php"
|
|
)
|
|
|
|
for file in "${KEY_FILES[@]}"; do
|
|
if [ -f "$PROD_DIR/$file" ]; then
|
|
success "Файл найден: $file"
|
|
else
|
|
warning "Файл не найден: $file"
|
|
fi
|
|
done
|
|
|
|
# Сравниваем размеры директорий
|
|
TEST_SIZE=$(du -s "$TEST_DIR/$EXTENSIONS_DIR" | cut -f1)
|
|
PROD_SIZE=$(du -s "$PROD_DIR/$EXTENSIONS_DIR" | cut -f1)
|
|
|
|
if [ "$TEST_SIZE" = "$PROD_SIZE" ]; then
|
|
success "Размеры директорий совпадают: ${TEST_SIZE}KB"
|
|
else
|
|
warning "Размеры директорий отличаются: тест=${TEST_SIZE}KB, прод=${PROD_SIZE}KB"
|
|
fi
|
|
}
|
|
|
|
# Основная функция
|
|
main() {
|
|
log "Начало синхронизации CRM Extensions"
|
|
|
|
case "${1:-sync}" in
|
|
"sync")
|
|
check_directories
|
|
backup_current
|
|
sync_extensions
|
|
verify_sync
|
|
success "Синхронизация CRM Extensions завершена!"
|
|
;;
|
|
"backup")
|
|
check_directories
|
|
backup_current
|
|
;;
|
|
"verify")
|
|
check_directories
|
|
verify_sync
|
|
;;
|
|
*)
|
|
echo "Использование: $0 {sync|backup|verify}"
|
|
echo " sync - Синхронизация CRM Extensions (по умолчанию)"
|
|
echo " backup - Создание резервной копии"
|
|
echo " verify - Проверка синхронизации"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Запуск основной функции
|
|
main "$@"
|
|
|
|
|