#!/bin/bash # VIMS Quick Start Script # Complete setup and first upload set -e API_URL="${VIMS_API_URL:-http://localhost:3450}" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo -e "${BLUE}" echo "╔══════════════════════════════════════════╗" echo "║ VIMS - Quick Start Guide ║" echo "║ Visual Infrastructure Monitoring ║" echo "╚══════════════════════════════════════════╝" echo -e "${NC}" # Check if server is running echo -e "${YELLOW}Checking server...${NC}" if ! curl -s "$API_URL/health" > /dev/null 2>&1; then echo -e "${RED}Server not running!${NC}" echo "" echo "Start server with:" echo " cd vims-backend" echo " docker-compose up -d postgres redis minio" echo " npm run dev" exit 1 fi echo -e "${GREEN}✓ Server running${NC}" # Step 1: Create object echo "" echo -e "${YELLOW}Step 1: Creating ATM object...${NC}" OBJECT_RESPONSE=$(curl -s -X POST "$API_URL/api/v1/objects" \ -H "Content-Type: application/json" \ -d '{ "objectTypeId": "atm-type-uuid", "customerId": "demo-customer", "name": "ATM Quick Start", "externalId": "ATM-QUICK-001", "location": { "latitude": 59.3368, "longitude": 18.0555 }, "address": "Stureplan 4, Stockholm" }') OBJECT_ID=$(echo "$OBJECT_RESPONSE" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) if [ -z "$OBJECT_ID" ]; then echo -e "${RED}Failed to create object${NC}" echo "$OBJECT_RESPONSE" exit 1 fi echo -e "${GREEN}✓ Object created: $OBJECT_ID${NC}" # Step 2: Check if photo provided if [ -z "$1" ]; then echo "" echo -e "${YELLOW}Step 2: Upload photo${NC}" echo "" echo "To upload a photo, run:" echo " $0 /path/to/photo.jpg" echo "" echo "Example:" echo " $0 ~/photos/atm-front.jpg" echo "" echo "Object ID for manual upload: ${GREEN}$OBJECT_ID${NC}" echo "" echo "Or use the upload script:" echo " ./scripts/upload-photo.sh -f photo.jpg -o $OBJECT_ID -a front" exit 0 fi PHOTO="$1" if [ ! -f "$PHOTO" ]; then echo -e "${RED}Photo not found: $PHOTO${NC}" exit 1 fi # Step 2: Upload photo echo "" echo -e "${YELLOW}Step 2: Uploading photo...${NC}" UPLOAD_RESPONSE=$(curl -s -X POST "$API_URL/api/v1/observations" \ -F "images=@$PHOTO" \ -F "objectId=$OBJECT_ID" \ -F "angle=front") if echo "$UPLOAD_RESPONSE" | grep -q "error"; then echo -e "${RED}Upload failed${NC}" echo "$UPLOAD_RESPONSE" exit 1 fi echo -e "${GREEN}✓ Photo uploaded${NC}" # Step 3: Process observation OBS_ID=$(echo "$UPLOAD_RESPONSE" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) echo "" echo -e "${YELLOW}Step 3: Processing observation...${NC}" PROCESS_RESPONSE=$(curl -s -X POST "$API_URL/api/v1/observations/$OBS_ID/process") echo -e "${GREEN}✓ Observation processed${NC}" # Step 4: Show results echo "" echo -e "${YELLOW}Step 4: Results${NC}" echo "" # Get object status OBJECT_STATUS=$(curl -s "$API_URL/api/v1/objects/$OBJECT_ID") STATUS=$(echo "$OBJECT_STATUS" | grep -o '"currentStatus":"[^"]*"' | cut -d'"' -f4) echo "Object Status: ${GREEN}$STATUS${NC}" # Get detections DETECTIONS=$(curl -s "$API_URL/api/v1/detections?observationId=$OBS_ID") DETECTION_COUNT=$(echo "$DETECTIONS" | grep -o '"detections"' | wc -l) echo "Detections: $DETECTION_COUNT" # Get alerts ALERTS=$(curl -s "$API_URL/api/v1/alerts?objectId=$OBJECT_ID") ALERT_COUNT=$(echo "$ALERTS" | grep -o '"alerts"' | wc -l) echo "Alerts: $ALERT_COUNT" echo "" echo -e "${GREEN}✓ Quick start complete!${NC}" echo "" echo "Object ID: ${BLUE}$OBJECT_ID${NC}" echo "Observation ID: ${BLUE}$OBS_ID${NC}" echo "" echo "View details:" echo " Object: curl $API_URL/api/v1/objects/$OBJECT_ID" echo " Detection: curl $API_URL/api/v1/detections?observationId=$OBS_ID" echo " Alerts: curl $API_URL/api/v1/alerts?objectId=$OBJECT_ID"