add: Custom Command Синхронизация s_hash_id с солью

This commit is contained in:
2026-08-23 17:16:06 +03:00
parent 27049e9ae0
commit 200b81987c
3 changed files with 162 additions and 29 deletions
+28 -1
View File
@@ -65,7 +65,34 @@ poetry run python hypn0/manage.py rescore_hypn0_items --dry-run
---
## 2. Планируемые команды (Roadmap)
## 2. `rehash` — Проверка целостности и перегенерация `s_hash_id`
- **Путь:** `hypn0/hypn0_site/management/commands/rehash.py`
- **Назначение:** Синхронизация публичных коротких хэшей `s_hash_id` в базе данных с текущим значением `HASHIDS_SALT` и `HASHIDS_MIN_LENGTH`.
### Когда требуется запуск:
1. При смене или ротации `HASHIDS_SALT` в `.env` / `settings.py`.
2. При переносе/миграции базы данных между разными окружениями (Dev $\rightarrow$ Prod).
3. При обнаружении записей с пустыми или устаревшими `s_hash_id`.
### Базовый запуск:
```bash
# Тестовая проверка нестыковок (без записи в БД)
poetry run python hypn0/manage.py rehash --dry-run
# Боевая перегенерация
poetry run python hypn0/manage.py rehash
```
### Параметры командной строки (CLI):
| Флаг | Тип | По умолчанию | Описание |
|----------------|--------|--------------|----------------------------------------------------------------|
| `--dry-run` | `flag` | `False` | Только проверить нестыковки без изменения базы данных |
| `--batch-size` | `int` | `500` | Размер пачки для `bulk_update` (оптимизация памяти и скорости) |
---
## 3. Планируемые команды (Roadmap)
- **`cleanup_storage`** — Удаление старых и низкорейтинговых картин (Smart Retention) при превышении квоты хранилища (использует рассчитанный `f_score`).
- **`cleanup_reports`** — Автоматическая изоляция или удаление картин со статусом `SHAMED` после истечения тайм-аута модерации.
+29 -28
View File
@@ -558,34 +558,35 @@ CLI больше не нужен.
## Файлы для создания (итого)
| Файл | Назначение |
|-----------------------------------------------------------|------------------------|
| `hypn0/manage.py` | Django CLI |
| `hypn0/hypn0/__init__.py` | Settings pkg |
| `hypn0/hypn0/settings.py` | Конфиг |
| `hypn0/hypn0/urls.py` | URL routing |
| `hypn0/hypn0/wsgi.py` | WSGI entry |
| `hypn0/hypn0/templates/base.html` | Базовый шаблон |
| `hypn0/hypn0_site/__init__.py` | App pkg |
| `hypn0/hypn0_site/urls.py` | URL app |
| `hypn0/hypn0_site/views.py` | Views |
| `hypn0/hypn0_site/forms.py` | Forms |
| `hypn0/hypn0_site/models.py` | TbHypn0Item, TbVote... |
| `hypn0/hypn0_site/services/halftone.py` | Ядро |
| `hypn0/hypn0_site/templates/halftone/index.html` | Главная |
| `hypn0/hypn0_site/management/commands/rescore_hypn0_items.py` | Скоринг и детекция аномалий |
| `hypn0/hypn0_site/management/commands/cleanup_storage.py` | Очистка SmartRetention |
| `hypn0/hypn0_site/management/commands/cleanup_reports.py` | Очистка по жалобам |
| `_blueprint/management-commands.md` | Документация CLI-команд|
| `public/static/css/site.css` | Стили |
| `public/static/js/site.js` | JS |
| `.env.sample` | Env template |
| `Dockerfile` | Сборка |
| `docker-compose.local.yml` | Dev |
| `docker-compose.prod.yml` | Prod |
| `config/nginx/hypn0-app--external-nginx.conf` | Nginx |
| `.gitea/workflows/docker-publish.yaml` | CI/CD |
| `database/.gitignore` | Игнор БД |
| Файл | Назначение |
|---------------------------------------------------------------|---------------------------------|
| `hypn0/manage.py` | Django CLI |
| `hypn0/hypn0/__init__.py` | Settings pkg |
| `hypn0/hypn0/settings.py` | Конфиг |
| `hypn0/hypn0/urls.py` | URL routing |
| `hypn0/hypn0/wsgi.py` | WSGI entry |
| `hypn0/hypn0/templates/base.html` | Базовый шаблон |
| `hypn0/hypn0_site/__init__.py` | App pkg |
| `hypn0/hypn0_site/urls.py` | URL app |
| `hypn0/hypn0_site/views.py` | Views |
| `hypn0/hypn0_site/forms.py` | Forms |
| `hypn0/hypn0_site/models.py` | TbHypn0Item, TbVote... |
| `hypn0/hypn0_site/services/halftone.py` | Ядро |
| `hypn0/hypn0_site/templates/halftone/index.html` | Главная |
| `hypn0/hypn0_site/management/commands/rescore_hypn0_items.py` | Скоринг и детекция аномалий |
| `hypn0/hypn0_site/management/commands/rehash.py` | Синхронизация s_hash_id с солью |
| `hypn0/hypn0_site/management/commands/cleanup_storage.py` | Очистка SmartRetention |
| `hypn0/hypn0_site/management/commands/cleanup_reports.py` | Очистка по жалобам |
| `_blueprint/management-commands.md` | Документация CLI-команд |
| `public/static/css/site.css` | Стили |
| `public/static/js/site.js` | JS |
| `.env.sample` | Env template |
| `Dockerfile` | Сборка |
| `docker-compose.local.yml` | Dev |
| `docker-compose.prod.yml` | Prod |
| `config/nginx/hypn0-app--external-nginx.conf` | Nginx |
| `.gitea/workflows/docker-publish.yaml` | CI/CD |
| `database/.gitignore` | Игнор БД |
## Файлы для модификации