#!/bin/bash
# Aria User Update (V5 Sprint 2, 08.05.2026)
# Wöchentlich (Sonntag 04:00) — schlaegt USER.md-Updates aus 7-Tage-Daily-Logs vor.
#
# Strategy:
#   - Liest 06-Daily/ der letzten 7 Tage
#   - Sammelt Mentions und neue Aussagen
#   - Schreibt Vorschlag nach 00-Inbox/user-update-YYYY-MM-DD.md
#   - Aria reviewed beim nächsten Boot, integriert manuell in USER.md
#   - Bei Major-Update: USER.md → USER.archive/USER.vN.md, neuer USER.md

set -e

BRAIN="${ARIA_BRAIN:-/root/aria/brain}"
DAILY_DIR="${BRAIN}/06-Daily"
INBOX="${BRAIN}/00-Inbox"
USER_FILE="${BRAIN}/USER.md"
DATE=$(date +%Y-%m-%d)
PROPOSAL="${INBOX}/user-update-${DATE}.md"
LOG="/var/log/aria-user-update.log"

mkdir -p "$INBOX"

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') $*" >> "$LOG"
}

log "=== aria-user-update gestartet ==="

if [ ! -d "$DAILY_DIR" ]; then
    log "Daily-Verzeichnis fehlt: $DAILY_DIR — abort"
    exit 1
fi

# Sammle 7 Tage Daily-Logs
DAILIES=$(find "$DAILY_DIR" -name "*.md" -newermt "7 days ago" 2>/dev/null | sort)

if [ -z "$DAILIES" ]; then
    log "Keine Daily-Logs in den letzten 7 Tagen"
    DAILY_COUNT=0
else
    DAILY_COUNT=$(echo "$DAILIES" | wc -l)
fi

log "Daily-Logs analysiert: $DAILY_COUNT"

# Schreibe Vorschlag
cat > "$PROPOSAL" << EOF
---
title: USER.md Update-Vorschlag ${DATE}
type: inbox
tags: [user-update, autonomous, dialectic]
date: ${DATE}
status: pending
related: [[USER]], [[brain/CLAUDE]]
---

# USER.md Update-Vorschlag ${DATE}

> Wöchentlicher autonomer Scan der 06-Daily/-Logs.
> Generator: \`/root/aria/scripts/aria-user-update.sh\` (V5 Sprint 2).
> Aria reviewed beim nächsten Boot. Integration manuell in \`USER.md\`.

## Daily-Logs analysiert

EOF

if [ "$DAILY_COUNT" -eq 0 ]; then
    cat >> "$PROPOSAL" << EOF
Keine Daily-Logs in den letzten 7 Tagen gefunden.

**Empfehlung**: Daily-Log-Schreiben re-aktivieren. Heute (${DATE}) sollte ein
Tages-Log angelegt werden mit:
- Was wurde gemacht
- Welche Pattern sind erkennbar
- Wo bleibt offen
EOF
else
    cat >> "$PROPOSAL" << EOF
$DAILY_COUNT Daily-Log(s):

\`\`\`
$DAILIES
\`\`\`

EOF

    # Pro Daily-Log: extrahiere TODO/Pattern/Decision-Sätze als Update-Kandidaten
    while IFS= read -r daily; do
        DAILY_NAME=$(basename "$daily")
        DAILY_SIZE=$(wc -c < "$daily")
        cat >> "$PROPOSAL" << EOF
### Aus ${DAILY_NAME} (${DAILY_SIZE} Bytes)

EOF
        # Extrahiere Sätze mit Pattern-Indikatoren
        if [ "$DAILY_SIZE" -gt 50 ]; then
            grep -E "(Kais|Kais|will|möchte|braucht|frustriert|Pattern|Regel|Korrektur|Pinning)" "$daily" 2>/dev/null | head -10 | sed 's/^/- /' >> "$PROPOSAL" || echo "(keine Pattern-Indikatoren gefunden)" >> "$PROPOSAL"
        else
            echo "(Daily-Log zu kurz für sinnvolle Pattern-Extraktion: $DAILY_SIZE Bytes)" >> "$PROPOSAL"
        fi
        echo "" >> "$PROPOSAL"
    done <<< "$DAILIES"
fi

cat >> "$PROPOSAL" << EOF

## Aktuelle USER.md-Version

EOF

if [ -f "$USER_FILE" ]; then
    USER_VERSION=$(grep -oE '^\| ?v[0-9]+\:' "$USER_FILE" | tail -1 | tr -d ' :|' || echo "?")
    USER_SIZE=$(wc -c < "$USER_FILE")
    echo "USER.md aktuelle Version: \`${USER_VERSION:-v1}\` (${USER_SIZE} Bytes)" >> "$PROPOSAL"
else
    echo "USER.md existiert noch nicht. **Empfehlung**: USER.md initial anlegen." >> "$PROPOSAL"
fi

cat >> "$PROPOSAL" << EOF

## Vorschläge für USER.md-Update

1. **Neue Pattern aus Daily-Logs**: oben aufgelistete Sätze prüfen, ob sie Pattern-würdig sind (LRN-Kandidaten).
2. **Widersprüche check**: Gab's in den 7 Tagen Aussagen die existing USER.md "Widersprüche"-Sektion ergänzen?
3. **Communication-Style-Drift**: Hat sich Kais' Tonalität/Format-Präferenz verschoben?
4. **Tool-Stack-Updates**: Neue Werkzeuge erwähnt? Welche aus Stack obsolet?
5. **Aktive Themen rotieren**: Was ist abgeschlossen? Was neu?

## Approval-Pfad

Aria reviewed diese Datei beim nächsten Boot, prüft die Vorschläge gegen
Memory-Save-Rubric (3 Kriterien, 2/3-Regel), integriert in USER.md, archiviert
alte Version nach \`USER.archive/USER.v<N>.md\`.

Wenn Aria autonom eine Major-Änderung macht: explizit in HANDOFF.md dokumentieren.
EOF

log "Vorschlag geschrieben: $PROPOSAL"
log "=== aria-user-update fertig ==="

echo "OK USER.md-Update-Vorschlag: $PROPOSAL"
echo "Daily-Logs analysiert: $DAILY_COUNT"
