- 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 команды
54 lines
1.8 KiB
Bash
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"
|