feat: update Python processors and add utility scripts
- Update ASR, face, OCR, pose processors - Add release pre-flight check script - Add synonym generation, chunk processing scripts - Add face recognition, stamp search utilities
This commit is contained in:
162
scripts/release_preflight_check.sh
Executable file
162
scripts/release_preflight_check.sh
Executable file
@@ -0,0 +1,162 @@
|
||||
#!/bin/bash
|
||||
# Momentry v1.0.0 Release Pre-flight Check
|
||||
# Checks all required services and models before deployment
|
||||
|
||||
set -e
|
||||
|
||||
PASS=0
|
||||
FAIL=0
|
||||
WARN=0
|
||||
|
||||
check() {
|
||||
local name="$1"
|
||||
local cmd="$2"
|
||||
if eval "$cmd" > /dev/null 2>&1; then
|
||||
echo "✓ $name"
|
||||
PASS=$((PASS + 1))
|
||||
else
|
||||
echo "✗ $name FAILED"
|
||||
FAIL=$((FAIL + 1))
|
||||
fi
|
||||
}
|
||||
|
||||
warn() {
|
||||
local name="$1"
|
||||
echo "⚠ $name (non-critical)"
|
||||
WARN=$((WARN + 1))
|
||||
}
|
||||
|
||||
echo "====================================="
|
||||
echo "Momentry v1.0.0 Pre-flight Check"
|
||||
echo "Date: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "====================================="
|
||||
echo ""
|
||||
|
||||
# --- Core Services ---
|
||||
echo "--- Core Services ---"
|
||||
|
||||
# PostgreSQL
|
||||
check "PostgreSQL" "pg_isready -U accusys -h localhost"
|
||||
|
||||
# Redis
|
||||
check "Redis" "redis-cli -a accusys PING"
|
||||
|
||||
# MongoDB
|
||||
check "MongoDB" "mongosh --quiet --eval 'db.runCommand({ping:1})'"
|
||||
|
||||
# Qdrant (requires API key)
|
||||
QDRANT_API_KEY="${QDRANT_API_KEY:-Test3200Test3200Test3200}"
|
||||
check "Qdrant (port 6333)" "curl -sf -H 'api-key: $QDRANT_API_KEY' http://localhost:6333/collections"
|
||||
|
||||
echo ""
|
||||
|
||||
# --- Inference Engines ---
|
||||
echo "--- Inference Engines ---"
|
||||
|
||||
# Ollama
|
||||
if curl -sf http://localhost:11434/api/tags > /dev/null 2>&1; then
|
||||
check "Ollama (port 11434)" "true"
|
||||
# Check specific model
|
||||
if curl -sf http://localhost:11434/api/tags | grep -q "nomic-embed-text"; then
|
||||
check " Model: nomic-embed-text" "true"
|
||||
else
|
||||
warn " Model: nomic-embed-text not found"
|
||||
fi
|
||||
else
|
||||
FAIL=$((FAIL + 2))
|
||||
echo "✗ Ollama (port 11433) FAILED"
|
||||
echo "✗ Model: nomic-embed-text (Ollama not running)"
|
||||
fi
|
||||
|
||||
# llama-server
|
||||
if curl -sf http://localhost:8081/v1/models > /dev/null 2>&1; then
|
||||
check "llama-server (port 8081)" "true"
|
||||
if curl -sf http://localhost:8081/v1/models | grep -q "gemma4"; then
|
||||
check " Model: gemma4_e4b_q5" "true"
|
||||
else
|
||||
warn " Model: gemma4_e4b_q5 not detected"
|
||||
fi
|
||||
else
|
||||
FAIL=$((FAIL + 2))
|
||||
echo "✗ llama-server (port 8081) FAILED"
|
||||
echo "✗ Model: gemma4_e4b_q5 (llama-server not running)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# --- External Tools ---
|
||||
echo "--- External Tools ---"
|
||||
|
||||
check "ffmpeg" "command -v ffmpeg"
|
||||
check "ffprobe" "command -v ffprobe"
|
||||
|
||||
PYTHON_PATH="${MOMENTRY_PYTHON_PATH:-/opt/homebrew/bin/python3.11}"
|
||||
check "Python 3.11 ($PYTHON_PATH)" "test -f $PYTHON_PATH"
|
||||
|
||||
echo ""
|
||||
|
||||
# --- File Services ---
|
||||
echo "--- File Services ---"
|
||||
|
||||
check "SFTPGo (port 8080)" "curl -sf http://localhost:8080/"
|
||||
|
||||
# Check demo user data directory
|
||||
if [ -d "/Users/accusys/momentry/var/sftpgo/data/demo" ]; then
|
||||
check "SFTPGo demo data directory" "true"
|
||||
else
|
||||
warn "SFTPGo demo data directory not found"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# --- Environment ---
|
||||
echo "--- Environment ---"
|
||||
|
||||
# Check .env file for production
|
||||
if [ -f ".env" ]; then
|
||||
check ".env file exists" "true"
|
||||
else
|
||||
warn ".env file not found (using defaults)"
|
||||
fi
|
||||
|
||||
# Check port 3002 availability
|
||||
if lsof -i :3002 > /dev/null 2>&1; then
|
||||
warn "Port 3002 in use (existing production service running)"
|
||||
else
|
||||
check "Port 3002 available" "true"
|
||||
fi
|
||||
|
||||
# Check port 3003 availability
|
||||
if lsof -i :3003 > /dev/null 2>&1; then
|
||||
warn "Port 3003 in use (playground running)"
|
||||
else
|
||||
check "Port 3003 available" "true"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# --- Disk Space ---
|
||||
echo "--- Disk Space ---"
|
||||
|
||||
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
|
||||
if [ "$DISK_USAGE" -lt 90 ]; then
|
||||
check "Disk usage: ${DISK_USAGE}%" "true"
|
||||
else
|
||||
FAIL=$((FAIL + 1))
|
||||
echo "✗ Disk usage: ${DISK_USAGE}% (CRITICAL - >90%)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "====================================="
|
||||
echo "Summary: $PASS passed, $FAIL failed, $WARN warnings"
|
||||
echo "====================================="
|
||||
|
||||
if [ "$FAIL" -gt 0 ]; then
|
||||
echo ""
|
||||
echo "CRITICAL: $FAIL service(s) failed. Do NOT proceed with release."
|
||||
exit 1
|
||||
else
|
||||
echo ""
|
||||
echo "All critical services ready. Safe to proceed with release."
|
||||
exit 0
|
||||
fi
|
||||
Reference in New Issue
Block a user