Add user catch submission and moderation workflow

This commit is contained in:
ik
2026-09-02 20:33:58 +07:00
parent d3a45248ef
commit 6d536d0ade
13 changed files with 227 additions and 8 deletions
+15 -2
View File
@@ -43,9 +43,11 @@ docker compose up --build
- справочники рыб, водоёмов и приманок;
- Astro SSR-интерфейс с адаптивной главной и страницей точки;
- объяснимые индексы активности и уверенности по формуле спецификации;
- состояния «нет данных» и «источник недоступен».
- состояния «нет данных» и «источник недоступен»;
- идемпотентный импорт официальных записей с журналом запусков;
- публичная страница `/records` с источником и временем последнего импорта.
- публичная страница `/records` с источником и временем последнего импорта;
- форма `/report`, защищённые admin API и журнал модерации;
- honeypot и базовый лимит отправок.
Все пользовательские ники и уловы в seed демонстрационные.
@@ -87,6 +89,17 @@ docker compose --profile tools run --rm importer
Импорт делает до трёх ограниченных попыток, проверяет DOM-контракт и не удаляет ранее сохранённые данные при сбое. Повторный запуск обновляет совпавшие записи по SHA-256 ключу и не создаёт дубликаты. Автоматическое расписание намеренно ещё не включено: сначала требуется согласовать допустимость регулярного опроса официального сайта.
## Пользовательские уловы и модерация
Новая запись из `/report` получает статус `pending` и не участвует в активности до одобрения. Административные методы требуют заголовок `Authorization: Bearer $ADMIN_TOKEN`:
```bash
curl -H "Authorization: Bearer change-me-in-production" \
"http://localhost:8000/api/v1/admin/catch-reports?status=pending"
```
Перед внешним развёртыванием обязательно замените демонстрационный `ADMIN_TOKEN`. Скриншоты пока не принимаются: следующим шагом для них подключается MinIO/S3 с проверкой MIME, размера и очисткой EXIF.
## Исследовательский парсер официальных рекордов
```bash