ops(dev): add audit retention pruning script

Made-with: Cursor
This commit is contained in:
Apple
2026-03-02 09:47:39 -08:00
parent e2c2333b6f
commit 1d18634c01
2 changed files with 228 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
# Runbook: Audit Retention (Sofiia Console)
Ціль: контролювати ріст SQLite (`sofiia.db`) через регулярний prune старих `audit_events`.
## Default policy
- `SOFIIA_AUDIT_RETENTION_DAYS=90` (safe default)
- Працює для `audit_events.ts < now - retention_days`.
## Dry-run (рекомендовано перед виконанням)
```bash
python3 ops/prune_audit_db.py --dry-run
```
Override шляху/періоду:
```bash
python3 ops/prune_audit_db.py --data-dir "/app/data" --retention-days 90 --dry-run
```
## Виконання prune
```bash
python3 ops/prune_audit_db.py --batch-size 5000
```
З VACUUM після видалення:
```bash
python3 ops/prune_audit_db.py --batch-size 5000 --vacuum
```
## CLI параметри
- `--data-dir` — шлях до `SOFIIA_DATA_DIR` (якщо не заданий, бере env або `/app/data`).
- `--retention-days` — override retention (`SOFIIA_AUDIT_RETENTION_DAYS` або 90).
- `--batch-size` — розмір батчу видалення (default `5000`).
- `--dry-run` — лише звіт, без видалення.
- `--vacuum` — VACUUM після видалення.
- `--yes` — reserved no-op (для майбутнього interactive safeguard).
## Exit codes
- `0` — OK
- `1` — error (DB path/schema/permissions/SQL)
## Перевірка розміру DB
```bash
du -h "${SOFIIA_DATA_DIR:-/app/data}/sofiia.db"
```
## Приклад cron (щонеділі вночі, 03:30 UTC)
```cron
30 3 * * 0 cd /opt/microdao-daarion && SOFIIA_DATA_DIR=/app/data SOFIIA_AUDIT_RETENTION_DAYS=90 /usr/bin/python3 ops/prune_audit_db.py --batch-size 5000 >> /var/log/sofiia-audit-prune.log 2>&1
```
## Порядок безпечного запуску
1. `--dry-run`
2. перевірка candidates/min/max ts
3. реальний prune
4. опційно `--vacuum` у low-traffic вікні