diff --git a/deploy/dalidou/cron-backup.sh b/deploy/dalidou/cron-backup.sh index 059e104..30c7f53 100755 --- a/deploy/dalidou/cron-backup.sh +++ b/deploy/dalidou/cron-backup.sh @@ -82,4 +82,26 @@ else log "Step 3: ATOCORE_BACKUP_RSYNC not set, skipping off-host copy" fi +# Step 4: Batch LLM extraction on recent interactions (optional). +# Runs the LLM extractor (claude -p sonnet) against interactions +# captured since the last batch run. Candidates land as +# status=candidate for human or auto-triage review. +# Fail-open: extraction failure never blocks backup. +# The endpoint tracks its own last-run timestamp in project state. +EXTRACT="${ATOCORE_EXTRACT_BATCH:-true}" +if [[ "$EXTRACT" == "true" ]]; then + log "Step 4: running batch LLM extraction" + EXTRACT_RESULT=$(curl -sf -X POST \ + -H "Content-Type: application/json" \ + -d '{"mode": "llm", "persist": true, "limit": 50}' \ + --max-time 600 \ + "$ATOCORE_URL/admin/extract-batch" 2>&1) && { + log "Extraction result: $EXTRACT_RESULT" + } || { + log "WARN: batch extraction failed (this is non-blocking): $EXTRACT_RESULT" + } +else + log "Step 4: ATOCORE_EXTRACT_BATCH not set to true, skipping extraction" +fi + log "=== AtoCore daily backup complete ==="