- Legg til fase 13 (traits), 14 (publisering), 15 (adminpanel) i avhengighetskartet og blocked_phases-scan - run-tasks.sh prøver automatisk igjen ved API-feil (500/529) med lineær backoff (60s, 120s, ...) opptil 10 forsøk - Skiller mellom bevisst blokkering ([?]/[!]) og krasj — stopper bare ved blokkering, retries ved krasj - systemd-service (synops-tasks) for auto-restart ved feil - Oppdater prompt til å reflektere direkte serverkjøring Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
88 lines
2.9 KiB
Bash
Executable file
88 lines
2.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Kjører oppgaver sekvensielt til ingen flere er tilgjengelige.
|
|
# Venter mellom sesjoner. Stopper når alt er gjort, blokkert, eller trenger avklaring.
|
|
# Ved API-feil (500/529) venter scriptet og prøver igjen automatisk.
|
|
#
|
|
# Bruk:
|
|
# ./scripts/run-tasks.sh # kjør til ferdig/blokkert
|
|
# ./scripts/run-tasks.sh --interval 60 # 60 sek mellom oppgaver (default: 30)
|
|
|
|
set -euo pipefail
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
INTERVAL=30
|
|
MAX_API_RETRIES=10
|
|
API_RETRY_DELAY=60 # sekunder mellom retries ved API-feil
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--interval) INTERVAL=$2; shift 2 ;;
|
|
*) echo "Ukjent flagg: $1"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
cd "$ROOT"
|
|
completed=0
|
|
api_failures=0
|
|
|
|
while true; do
|
|
# Sjekk om det finnes noe å gjøre
|
|
dry_output=$(./scripts/run-next-task.sh --dry 2>&1)
|
|
|
|
if echo "$dry_output" | grep -q "Alle oppgaver er gjort"; then
|
|
echo ""
|
|
echo "=== Alle oppgaver er gjort! ($completed fullført i denne kjøringen) ==="
|
|
./scripts/run-next-task.sh --status
|
|
break
|
|
fi
|
|
|
|
if echo "$dry_output" | grep -q "Ingen tilgjengelige"; then
|
|
echo ""
|
|
echo "=== Ingen tilgjengelige oppgaver. ($completed fullført i denne kjøringen) ==="
|
|
echo "Gjenstående oppgaver er blokkert, har åpne spørsmål, eller venter på pågående arbeid."
|
|
echo ""
|
|
./scripts/run-next-task.sh --status
|
|
break
|
|
fi
|
|
|
|
echo "$dry_output"
|
|
echo ""
|
|
|
|
# Kjør oppgaven
|
|
./scripts/run-next-task.sh
|
|
exit_code=$?
|
|
|
|
if [[ $exit_code -eq 0 ]]; then
|
|
((completed++))
|
|
api_failures=0 # Nullstill ved suksess
|
|
echo ""
|
|
echo "--- Oppgave ferdig (#$completed). Neste om ${INTERVAL}s (Ctrl-C for å stoppe) ---"
|
|
echo ""
|
|
sleep "$INTERVAL"
|
|
else
|
|
# Sjekk om oppgaven ble tilbakestilt (typisk API-feil/krasj)
|
|
# vs. om den ble markert [?] eller [!] (bevisst blokkering)
|
|
status_output=$(./scripts/run-next-task.sh --dry 2>&1)
|
|
if echo "$status_output" | grep -q "Ingen tilgjengelige\|Alle oppgaver er gjort"; then
|
|
# Oppgaven ble blokkert [?]/[!], eller alt er gjort — stopp
|
|
echo ""
|
|
echo "--- Sesjon feilet og ingen oppgaver tilgjengelig. Stopper. ---"
|
|
./scripts/run-next-task.sh --status
|
|
break
|
|
fi
|
|
|
|
# Oppgaven ble tilbakestilt til [ ] — sannsynligvis API-feil
|
|
((api_failures++))
|
|
if [[ $api_failures -ge $MAX_API_RETRIES ]]; then
|
|
echo ""
|
|
echo "--- $MAX_API_RETRIES feil på rad. Stopper. ---"
|
|
./scripts/run-next-task.sh --status
|
|
break
|
|
fi
|
|
|
|
delay=$((API_RETRY_DELAY * api_failures)) # Lineær backoff: 60, 120, 180...
|
|
echo ""
|
|
echo "--- Sesjon feilet (exit $exit_code). Forsøk $api_failures/$MAX_API_RETRIES. Venter ${delay}s... ---"
|
|
echo ""
|
|
sleep "$delay"
|
|
fi
|
|
done
|