#!/bin/bash
# kb-audit-propose — прогоняет последний drift-отчёт через Claude Opus,
# получает предложенные правки в inventory-файл.
# Запускать ПОСЛЕ kb-audit.py.
# Работает на code-server (где есть claude CLI с Max подпиской).

set -u
VAULT="$(cd "$(dirname "$0")/.." && pwd)"
DATE=$(date +%Y-%m-%d)
DRIFT="$VAULT/audit/${DATE}-drift.md"
OUT="$VAULT/audit/${DATE}-proposed.md"

if [ ! -f "$DRIFT" ]; then
    echo "drift-отчёт не найден: $DRIFT. Запусти сначала kb-audit.py" >&2
    exit 1
fi

# если уже есть сегодняшний proposed — skip (не дёргаем Opus попусту)
if [ -f "$OUT" ] && [ "$OUT" -nt "$DRIFT" ]; then
    echo "proposed уже свежее drift: $OUT" >&2
    exit 0
fi

cd "$VAULT" || exit 1

PROMPT="Ниже: а) отчёт drift-аудита инфраструктуры Proxmox, б) актуальный файл inventory.
Задача: предложи конкретные правки в projects/dttb/proxmox-inventory.md чтобы устранить drift.
НЕ правь файл сам. Выдай:
1. Краткое резюме (1-3 предложения) что изменилось
2. Список конкретных блоков для добавления/удаления/изменения (формат markdown diff блоков с пояснением)
3. Предупреждения если что-то неоднозначное

Не выдумывай данных которых нет в drift-отчёте. Используй factual IP/hostname только из отчёта."

{
    echo "$PROMPT"
    echo ""
    echo "---"
    echo "## DRIFT-ОТЧЁТ"
    echo ""
    cat "$DRIFT"
    echo ""
    echo "---"
    echo "## ТЕКУЩИЙ INVENTORY"
    echo ""
    cat "$VAULT/projects/dttb/proxmox-inventory.md"
} | claude -p --permission-mode plan > "$OUT.tmp" 2>&1

if [ -s "$OUT.tmp" ]; then
    {
        echo "---"
        echo "date: $DATE"
        echo "type: audit-proposed"
        echo "source: kb-audit-propose.sh (Opus 4.7)"
        echo "tags: [audit, proposed, inventory]"
        echo "---"
        echo ""
        echo "# Предложенные правки inventory — $DATE"
        echo ""
        echo "Сгенерировано Claude Opus на основе [[${DATE}-drift|drift-отчёта]]."
        echo "**Правки НЕ применены.** Ревью — ты. Apply — вручную."
        echo ""
        cat "$OUT.tmp"
    } > "$OUT"
    rm "$OUT.tmp"
    echo "proposed saved: $OUT"
else
    echo "Claude вернул пустой ответ" >&2
    rm -f "$OUT.tmp"
    exit 2
fi
