feat: display provenance and incomplete signals
This commit is contained in:
@@ -66,6 +66,7 @@
|
||||
- [x] Проверить списочные API по требованию раздела 12: все выдачи имеют ограниченные `limit`/`offset`, детерминированный tie-breaker и типизированные фильтры; фильтр категории рекордов перенесён до пагинации.
|
||||
- [x] Добавить составные индексы PostgreSQL для activity, модерации, официальных рекордов, staging, импорта, аудита и очистки rate limit (миграция `0011`); бюджет и процедура проверки планов зафиксированы в `docs/query-performance.md`.
|
||||
- [x] Включить все пять разрешённых community-источников и автоматическую публикацию полных наблюдений по ранее подтверждённым алиасам без межисточникового склеивания (миграция `0012`, 7 сентября 2026).
|
||||
- [x] Добавить обязательную публичную атрибуцию записей и агрегатов, а также отдельную ленту неполных community-наблюдений с явным перечнем отсутствующих полей без влияния на индекс активности (7 сентября 2026).
|
||||
- [x] Провести security-проверку admin-аутентификации, CORS, headers, загрузок, контейнерных пользователей и секретов: двойная защита admin web/API, constant-time token, no-store, non-root API/web и отдельные MinIO root/app credentials; остаточные ограничения записаны в `docs/security-review.md`.
|
||||
- [x] Проверить авторизацию повторной загрузки скриншота: используется отдельный одноразовый случайный токен, в БД хранится только SHA-256, UUID заявки недостаточно.
|
||||
- [x] Определить сроки хранения ников, исходных payload, staging-наблюдений, moderation events и submission attempts; добавлены настраиваемая dry-run-first очистка, тест и `docs/data-retention.md`.
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
- Разрешённый технический контур: получение публичного HTML, извлечение текстовых сведений об уловах, хранение исходной ссылки и нормализованных полей в закрытом staging.
|
||||
- Изображения: не скачиваются, не проксируются и не архивируются без отдельного явно зафиксированного условия.
|
||||
- Атрибуция: опубликованный улов обязан сохранять `source_system`, внешний ID и прямой `source_url` в provenance.
|
||||
- Публичное отображение: каждая запись и агрегат обязаны показывать источник; неполные staging-наблюдения разрешено отображать сразу с прямой ссылкой, явной пометкой неполноты и перечнем отсутствующих полей, но без влияния на индекс активности.
|
||||
- Объединение источников: автоматическое склеивание RF4DB и RF4-STAT запрещено, пока нет надёжного общего идентификатора.
|
||||
- Публикация: автоматически по ранее вручную подтверждённым алиасам источника либо вручную; обязательны рыба, водоём, координаты и вес.
|
||||
|
||||
@@ -19,6 +20,7 @@
|
||||
- Частота: не чаще одного получения страницы каждого источника раз в 30 минут.
|
||||
- Разрешённый контур: публичные HTML-страницы, нормализация в `ExternalCatch` и закрытый staging; запрещённые в `robots.txt` API не запрашиваются.
|
||||
- Изображения: сохраняются только исходные URL доказательств; файлы не скачиваются и не проксируются.
|
||||
- Атрибуция и неполнота: на каждой публичной карточке показываются источник и ссылка; неполные наблюдения могут появляться сразу, если визуально отделены от подтверждённых данных и не участвуют в расчёте активности.
|
||||
- Публикация: автоматически по подтверждённым алиасам либо вручную и только при выполнении общего требования рыба + водоём + координаты + вес. Текущие записи RF4MAP/RF4 Posts не имеют веса и остаются в staging.
|
||||
- Семантика RF4 Posts: несколько видов одного поста остаются связанными с одним UUID точки и не считаются отдельными подтверждёнными взвешиваниями.
|
||||
|
||||
|
||||
+2
-1
@@ -14,7 +14,8 @@ RF4 Spotter обрабатывает официальные публичные
|
||||
- IP не хранится: rate limit использует HMAC-отпечаток с секретом сервера;
|
||||
- из изображений удаляются EXIF и прочие метаданные;
|
||||
- query string, authorization headers и пользовательские payload не попадают в HTTP-лог;
|
||||
- community-наблюдения сначала поступают в изолированный staging; полные записи автоматически публикуются только по ранее вручную подтверждённым алиасам источника, остальные требуют ручной проверки.
|
||||
- community-наблюдения сначала поступают в staging; неполные можно сразу видеть в отдельной публичной ленте с источником и перечнем отсутствующих полей, но они не влияют на индекс активности. Полные записи автоматически входят в основной индекс только по ранее вручную подтверждённым алиасам источника, остальные требуют ручной проверки.
|
||||
- любая карточка улова, рекорда или агрегированной активности показывает первоисточник либо полный список вошедших в агрегат источников.
|
||||
|
||||
## Источники и атрибуция
|
||||
|
||||
|
||||
Reference in New Issue
Block a user