Files
crm.clientright.ru/crm_extensions/file_storage/run_batch_s3_metadata.sh
Fedor dabcd43a00 Добавлены скрипты для парсинга судебных документов и обновления проектов в CRM
- 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 команды
2025-09-30 19:54:37 +03:00

54 lines
1.8 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT="/var/www/fastuser/data/www/crm.clientright.ru"
PHP_BIN="php"
SCRIPT="$ROOT/crm_extensions/file_storage/populate_s3_metadata.php"
LOG_DIR="$ROOT/logs"
RUN_LOG="$LOG_DIR/s3_metadata_runner.log"
mkdir -p "$LOG_DIR"
# Tunables
LIMIT="${LIMIT:-500}"
OFFSET="${OFFSET:-500}" # Start from 500 since we already did 0-499
SLEEP_SEC="${SLEEP_SEC:-2}"
DRY_RUN="${DRY_RUN:-0}"
SWITCH_TO_EXTERNAL="${SWITCH_TO_EXTERNAL:-0}"
echo "[runner] Starting S3 metadata population: $(date "+%Y-%m-%d %H:%M:%S")" | tee -a "$RUN_LOG"
echo "[runner] LIMIT=$LIMIT OFFSET=$OFFSET DRY_RUN=$DRY_RUN SWITCH_TO_EXTERNAL=$SWITCH_TO_EXTERNAL" | tee -a "$RUN_LOG"
trap 'echo "[runner] Caught termination at $(date "+%Y-%m-%d %H:%M:%S")" | tee -a "$RUN_LOG"; exit 0' TERM INT
batch_index=0
while true; do
echo "[runner] Batch #$batch_index | offset=$OFFSET | $(date "+%Y-%m-%d %H:%M:%S")" | tee -a "$RUN_LOG"
CMD=(nice -n 10 ionice -c2 -n7 "$PHP_BIN" "$SCRIPT" --limit="$LIMIT" --offset="$OFFSET" --dry-run="$DRY_RUN" --switch-to-external="$SWITCH_TO_EXTERNAL")
echo "[runner] Exec: ${CMD[*]}" | tee -a "$RUN_LOG"
# Capture output to parse updated count
output="$(${CMD[@]} 2>&1 | tee -a "$LOG_DIR/s3_metadata_runner.out")"
# Parse "- Updated: N" from output
updated=$(echo "$output" | sed -n 's/.*- Updated: \([0-9]\+\).*/\1/p' | tail -n1)
if [[ -z "$updated" ]]; then
# Fallback: assume full batch to continue once
updated="$LIMIT"
fi
echo "[runner] Updated reported: $updated" | tee -a "$RUN_LOG"
if (( updated < LIMIT )); then
echo "[runner] Last batch smaller than LIMIT ($updated < $LIMIT). Finishing." | tee -a "$RUN_LOG"
break
fi
OFFSET=$((OFFSET + LIMIT))
batch_index=$((batch_index + 1))
sleep "$SLEEP_SEC"
done
echo "[runner] Done at $(date "+%Y-%m-%d %H:%M:%S")" | tee -a "$RUN_LOG"