#!/bin/bash # Master runner for 5-coop / 10-floor daily processing set -u SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" export PYTHONPATH="$SCRIPT_DIR/src" if [ -f "$SCRIPT_DIR/venv/bin/python" ]; then PYTHON="$SCRIPT_DIR/venv/bin/python" else PYTHON="python3" fi DATE="${1:-$(date +%Y-%m-%d)}" MODE="${2:-parallel_processes}" # Auto-discover all configured floors in configs/floor_config/ (sorted naturally: K1-L1, K1-L2, K1-L3, etc.) CONFIGS=() for cfg in $(ls -1 "$SCRIPT_DIR/configs/floor_config/"K*-L*.yaml 2>/dev/null | sort -V); do CONFIGS+=("configs/floor_config/$(basename "$cfg")") done echo "=================================================================" echo " Starting Multi-Floor Batch Processing for Date: $DATE" echo " Discovered Floors (${#CONFIGS[@]} total): ${CONFIGS[*]}" echo " Execution Mode: $MODE" echo "=================================================================" SUCCESS_COUNT=0 SKIPPED_COUNT=0 for config in "${CONFIGS[@]}"; do if [ -f "$SCRIPT_DIR/$config" ]; then echo "" echo ">>> [PROCESSING] Location Config: $config <<<" if $PYTHON -m chicken_counter.cli batch --config "$config" --date "$DATE" --mode "$MODE"; then SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) else echo "⚠️ [SKIPPED / ERROR] $config for date $DATE (video not found or error occurred)." SKIPPED_COUNT=$((SKIPPED_COUNT + 1)) fi fi done echo "" echo "=================================================================" echo " Multi-Floor Batch Summary: $SUCCESS_COUNT completed, $SKIPPED_COUNT skipped." echo " Database: db/chicken_counts.db" echo "================================================================="