Доки B23: README (010, password_history, таблица политики с колонкой «исполнение»), SETUP_GUIDE (cron бэкапа+purge, alembic 010, диагностика 400-пароль), чек-листы
This commit is contained in:
+18
-3
@@ -153,7 +153,7 @@ docker compose ps # все 4 контейнера Up/healthy
|
||||
|
||||
```bash
|
||||
docker exec vector-backend sh -c 'cd /app/backend && alembic upgrade head'
|
||||
docker exec vector-backend sh -c 'cd /app/backend && alembic current' # 009_e3_operations
|
||||
docker exec vector-backend sh -c 'cd /app/backend && alembic current' # 010_b23_policy
|
||||
```
|
||||
|
||||
Миграции идемпотентны на чистой БД. **Если** БД уже была инициализирована через create_all и `alembic upgrade` падает `DuplicateTable` — применить стемп-скрипт:
|
||||
@@ -330,6 +330,18 @@ docker exec vector-postgres pg_dump -U postgres -d vector_mchs \
|
||||
|
||||
Рекомендация: ежедневный cron прикладного дампа (он небольшой) + еженедельный полный. Хранить копии вне сервера.
|
||||
|
||||
### Cron (рекомендуемый на сервере)
|
||||
|
||||
```cron
|
||||
# 03:10 — ретенция журналов (удаление audit_events/auth_events старше audit_retention_days)
|
||||
10 3 * * * docker exec vector-backend python -m backend.purge_logs >> /var/log/vector-purge.log 2>&1
|
||||
# 03:00 — прикладной дамп (planet_osm_* исключены; OSM восстанавливается b16-import.sh)
|
||||
0 3 * * * docker exec vector-postgres pg_dump -U postgres -d vector_mchs --exclude-table="planet_osm_*" -F c -f /tmp/vector_app_$(date +\%F).dump && docker cp vector-postgres:/tmp/vector_app_$(date +\%F).dump /root/backups/ && find /root/backups -name vector_app_*.dump -mtime +14 -delete >> /var/log/vector-backup.log 2>&1
|
||||
```
|
||||
|
||||
Проверка разового прогона: `docker exec vector-backend python -m backend.purge_logs`
|
||||
→ `purge: {'audit_events': N, 'auth_events': N}` (0 — норма).
|
||||
|
||||
**Docker volume — не backup.** Если сервер умер вместе с диском, volume умер вместе с ним. Что подлежит резервному копированию:
|
||||
|
||||
```text
|
||||
@@ -412,6 +424,8 @@ df -h && free -h # диск/память
|
||||
|
||||
### Диагностика по цепочке (начинать с места проблемы, не с перезапусков)
|
||||
|
||||
**Смена пароля даёт 400 «Пароль должен содержать буквы и цифры» / «совпадает с ранее использованным»** — это B23-политика (`security_settings`), не ошибка: с 25.09.2026 требования сложности и истории исполняются. Пароль, возвращённый ранее, отвергается, пока он в последних `password_history_count` записях.
|
||||
|
||||
**Бэкенд не подключается к БД** — цепочка `backend → docker network → postgres:5432 → authentication → vector_mchs`:
|
||||
|
||||
```bash
|
||||
@@ -490,7 +504,7 @@ docker exec vector-postgres psql -U postgres -d vector_mchs -c \
|
||||
|
||||
- [ ] прикладные логи `vector.*` доступны (`docker compose logs backend`, файл в контейнере)
|
||||
- [ ] аудит 90 дней читается (вкладка «Аудит», право `view_audit`)
|
||||
- [ ] ретенция настроена в `security_settings`
|
||||
- [ ] ретенция **исполняется**: cron purge-логов установлен, `python -m backend.purge_logs` даёт счётчики
|
||||
|
||||
### Backup
|
||||
|
||||
@@ -506,7 +520,8 @@ docker exec vector-postgres psql -U postgres -d vector_mchs -c \
|
||||
- [ ] Код получен (`/root/vector`), `.env` создан из `.env.example`
|
||||
- [ ] `JWT_SECRET` заменён на случайный; пароль БД сменён (compose + DATABASE_URL)
|
||||
- [ ] `docker compose up -d` — 4 контейнера Up
|
||||
- [ ] `alembic current` = `009_e3_operations`
|
||||
- [ ] `alembic current` = `010_b23_policy`
|
||||
- [ ] cron бэкапа И cron purge-логов настроены (`crontab -l`), первый дамп лежит в /root/backups
|
||||
- [ ] `seed_users.py` выполнен, пароль админа сменён при первом входе
|
||||
- [ ] `seed_units.py` выполнен (142 подразделения в селектах)
|
||||
- [ ] PostGIS установлен в контейнере БД, extension создан
|
||||
|
||||
Reference in New Issue
Block a user