feat: stage external source observations
This commit is contained in:
@@ -63,8 +63,15 @@ Detail-страница дополнительно содержит ветер,
|
||||
## Перед продуктивным импортом
|
||||
|
||||
1. Сохранить подтверждение разрешения и согласованные лимиты запросов.
|
||||
2. Добавить миграцию `data_source`/`source_system` и nullable-модель внешнего наблюдения либо обоснованно сделать вес nullable.
|
||||
3. Ввести алиасы рыб и водоёмов по внешним slug, а не только по названию.
|
||||
4. Назначить разные начальные уровни доверия для RF4DB и двух каналов RF4-STAT.
|
||||
5. Добавить идемпотентную staging-загрузку и ручную модерацию перед влиянием на индекс.
|
||||
6. Не хранить и не проксировать изображения без отдельного условия разрешения; на первом этапе достаточно исходной ссылки.
|
||||
2. Ввести алиасы рыб и водоёмов по внешним slug, а не только по названию.
|
||||
3. Согласовать начальные уровни доверия для RF4DB и двух каналов RF4-STAT (в staging записаны консервативные значения 70/65/60, но источники выключены).
|
||||
4. Добавить ручную модерацию и явное преобразование staging-записи перед влиянием на индекс.
|
||||
5. Не хранить и не проксировать изображения без отдельного условия разрешения; на первом этапе достаточно исходной ссылки.
|
||||
|
||||
## Staging
|
||||
|
||||
Миграция `0008` добавляет справочник `data_source` и таблицу `external_observation`. Уникальность `(source_system, source_external_id)` делает повторную загрузку идемпотентной; `first_seen_at` сохраняется, `last_seen_at` и payload обновляются. Вес, координаты и время могут отсутствовать.
|
||||
|
||||
Загрузка принимает только известные источники, HTTPS-ссылки соответствующего домена и значения в допустимых диапазонах. Все записи получают статус `staged`; таблица не связана с расчётом активности. Тест доказывает путь `HTML → ExternalCatch → JSON → external_observation` без потери provenance.
|
||||
|
||||
Контрольная загрузка в PostgreSQL создала 139 staging-записей: 23 `rf4db` с координатами, 100 `rf4stat-fishing` с весом и 16 `rf4stat-post` с весом. Немедленный повтор дал `created=0, updated=139`, подтвердив идемпотентность на реальной БД. Все три источника остались `enabled=false`.
|
||||
|
||||
Reference in New Issue
Block a user