#!/bin/bash # # Auto Revision Script # Kör konstant revision av alla komponenter # set -e IOM_DIR="/home/bernt/.openclaw/workspace/iom" LOG_FILE="$IOM_DIR/logs/revision.log" DATE=$(date +%Y-%m-%d-%H%M%S) # Skapa logg-katalog mkdir -p "$IOM_DIR/logs" log() { echo "[$DATE] $1" | tee -a "$LOG_FILE" } # === 1. Kodgranskning === log "=== Kodgranskning ===" # Kolla Python-kod if command -v pylint &> /dev/null; then log "Kör pylint..." find "$IOM_DIR" -name "*.py" -not -path "*/venv/*" -not -path "*/node_modules/*" | head -20 | while read f; do pylint "$f" --disable=R,C 2>/dev/null | head -5 >> "$LOG_FILE" || true done fi # Kolla teststatus log "Kollar teststatus..." if [ -f "$IOM_DIR/tests/test_complete.py" ]; then cd "$IOM_DIR" python -m pytest tests/test_complete.py -v 2>&1 | tail -5 >> "$LOG_FILE" || log "Tester misslyckades" fi # === 2. API-granskning === log "=== API-granskning ===" # Kolla om API körs if curl -s -k https://localhost:8000/health > /dev/null 2>&1; then log "API: OK" # Kolla endpoints ENDPOINTS=("/health" "/taxonomy/domains" "/goid/generate") for endpoint in "${ENDPOINTS[@]}"; do STATUS=$(curl -s -k -o /dev/null -w "%{http_code}" "https://localhost:8000$endpoint") log " $endpoint: HTTP $STATUS" done else log "API: NEDKOPPLAD" fi # === 3. Dokumentationsgranskning === log "=== Dokumentationsgranskning ===" # Kolla att alla komponenter har README COMPONENTS=("quixzoom-app" "landvex-dashboard" "integrations/qgis" "integrations/arcgis" "sdk/python" "sdk/javascript") for comp in "${COMPONENTS[@]}"; do if [ -f "$IOM_DIR/$comp/README.md" ]; then log " $comp/README.md: OK" else log " $comp/README.md: SAKNAS" fi done # === 4. Säkerhetsgranskning === log "=== Säkerhetsgranskning ===" # Kolla efter hemligheter if command -v grep &> /dev/null; then SECRETS=$(grep -r "password\|secret\|token\|key" "$IOM_DIR" --include="*.py" --include="*.js" --include="*.yaml" | grep -v "example\|placeholder\|README" | head -5 || true) if [ -n "$SECRETS" ]; then log " ⚠️ Potentiella hemligheter hittade:" echo "$SECRETS" | while read line; do log " $line" done else log " Inga hemligheter hittade" fi fi # === 5. Prestandagranskning === log "=== Prestandagranskning ===" # Kolla API response time if curl -s -k https://localhost:8000/health > /dev/null 2>&1; then TIME=$(curl -s -k -o /dev/null -w "%{time_total}" https://localhost:8000/health) log " API response time: ${TIME}s" if (( $(echo "$TIME > 1.0" | bc -l) )); then log " ⚠️ API är långsamt (>1s)" fi fi # === 6. Versionskontroll === log "=== Versionskontroll ===" # Kolla versionsnummer VERSION_FILES=("api/main.py" "core/goid_generator.py" "visual_geolocation/pipeline.py") for file in "${VERSION_FILES[@]}"; do if [ -f "$IOM_DIR/$file" ]; then VERSION=$(grep -o "version.*=.*['\"][0-9]\+\.[0-9]\+\.[0-9]\+['\"]" "$IOM_DIR/$file" | head -1 || echo "N/A") log " $file: $VERSION" fi done # === 7. Nästa åtgärder === log "=== Nästa åtgärder ===" # Generera todo-lista baserat på granskning TODO_FILE="$IOM_DIR/TODO_AUTO.md" echo "# Auto-genererad TODO ($DATE)" > "$TODO_FILE" echo "" >> "$TODO_FILE" # Kolla om det finns misslyckade tester if grep -q "FAILED" "$LOG_FILE" 2>/dev/null; then echo "- [ ] Fixa misslyckade tester" >> "$TODO_FILE" fi # Kolla om API är nere if ! curl -s -k https://localhost:8000/health > /dev/null 2>&1; then echo "- [ ] Starta om API" >> "$TODO_FILE" fi # Kolla saknad dokumentation for comp in "${COMPONENTS[@]}"; do if [ ! -f "$IOM_DIR/$comp/README.md" ]; then echo "- [ ] Skapa README för $comp" >> "$TODO_FILE" fi done log "Revision klar. Se $LOG_FILE för detaljer." log "TODO-lista: $TODO_FILE" # Skicka sammanfattning echo "" echo "=== REVISIONSSAMMANFATTNING ===" echo "Datum: $DATE" echo "Logg: $LOG_FILE" echo "TODO: $TODO_FILE" echo "" echo "Status: ✅ Revision klar"