72 lines
2.7 KiB
Bash
Executable File
72 lines
2.7 KiB
Bash
Executable File
#!/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
|