a8aa79e75f
Повод: 26.06.2026 параллельная сессия выполнила yc managed-postgresql database delete liderra + recreate на боевом кластере → переналила схему со старыми небезопасными RLS-политиками → вход в портал лёг (см. db/CHANGELOG_schema.md v8.57). - .claude/hooks/prod-db-guard.mjs (PreToolUse Bash|PowerShell): блокирует ТОЛЬКО снос/пересоздание боевой базы/кластера (yc database/cluster delete, DROP DATABASE liderra). Обычную работу (чтение, запросы, тесты на liderra_testing, migrate) НЕ трогает. Override владельца: маркер PROD-DESTROY-OK или env ALLOW_PROD_DB_DESTROY=1. Проверено 7 сценариями + живым запуском (echo с паттерном заблокирован). - .claude/hooks/prod-db-pointer.mjs (SessionStart): инжектит указатель «живая база = кластер c9q2cvtjpq3hgq6l0r96, старая копия на VM не трогать, тесты на liderra_testing» — чтобы сессия не путала актуальную БД со stale-копией и не «пересобирала». - .claude/settings.json: deny-паттерны (yc database/cluster delete) + оба хука. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
1.8 KiB
JavaScript
28 lines
1.8 KiB
JavaScript
#!/usr/bin/env node
|
|
// SessionStart: указатель «где сейчас живая боевая база» — чтобы любая сессия
|
|
// не путала актуальный кластер со старой rollback-копией на VM и не пыталась
|
|
// её «пересобирать». Только инъекция контекста, ничего не блокирует.
|
|
|
|
const context = [
|
|
'ОРИЕНТИР ПО БАЗЕ ЛИДЕРРЫ (важно перед любой работой с БД):',
|
|
'- ЖИВАЯ боевая база = Yandex Managed PG, кластер c9q2cvtjpq3hgq6l0r96',
|
|
' (rw-endpoint *.rw.mdb.yandexcloud.net:6432). Доступ — через app/.env',
|
|
' (роли crm_app_user / crm_supplier_worker). Это ЕДИНСТВЕННЫЙ источник',
|
|
' актуальных данных портала.',
|
|
'- На прод-VM (127.0.0.1:5432) лежит СТАРАЯ rollback-копия (до переезда 26.06).',
|
|
' НЕ путать с живой, НЕ менять там данные. `sudo -u postgres psql` на VM = старая копия.',
|
|
'- Для тестов — ОТДЕЛЬНАЯ база liderra_testing (через php artisan migrate),',
|
|
' НИКОГДА не прод `liderra`.',
|
|
'- НИКОГДА не удалять/пересоздавать боевую базу/кластер',
|
|
' (yc managed-postgresql database/cluster delete, DROP DATABASE liderra) —',
|
|
' это снесёт портал (инцидент 26.06, см. db/CHANGELOG_schema.md v8.57).',
|
|
' Хук prod-db-guard это блокирует; осознанный снос владельцем — маркер PROD-DESTROY-OK.',
|
|
].join('\n');
|
|
|
|
process.stdout.write(JSON.stringify({
|
|
hookSpecificOutput: {
|
|
hookEventName: 'SessionStart',
|
|
additionalContext: context,
|
|
},
|
|
}));
|