feat: add RF4MAP and RF4 Posts research parsers
This commit is contained in:
@@ -50,18 +50,22 @@ Detail-страница дополнительно содержит ветер,
|
||||
- `rf4db` + UUID;
|
||||
- `rf4stat-fishing` + числовой ID;
|
||||
- `rf4stat-post` + `post_id:fish_index`.
|
||||
- `rf4map` + числовой ID отдельного наблюдения;
|
||||
- `rf4posts-spot` + `spot_uuid:fish_slug`.
|
||||
|
||||
Следующий слой импорта должен хранить `source_system` отдельно от внешнего ID. Автоматическое объединение RF4DB и RF4-STAT пока запрещено: одна и та же публикация может присутствовать в обоих агрегаторах, но надёжного общего первичного ключа нет.
|
||||
|
||||
## Реализовано
|
||||
|
||||
- `rf4_research/community_sources.py` — три fail-closed HTML-парсера;
|
||||
- `rf4_research/community_sources.py` — пять fail-closed HTML-парсеров;
|
||||
- `parse_rf4db_detail` — отдельное обогащение одного RF4DB-улова;
|
||||
- `python -m rf4_research.community_cli` — read-only CLI одного ограниченного снимка;
|
||||
- обезличенные минимальные фикстуры для каждого контракта;
|
||||
- тесты всех извлекаемых полей, locked-координат и отказа на постороннем HTML;
|
||||
- живой контрольный прогон без сохранения персональных данных и изображений в репозиторий.
|
||||
|
||||
RF4MAP и RF4 Posts остаются исследовательскими: на живых HTML-снимках получены соответственно 30 индивидуальных наблюдений и 6 видов рыб одной точки. Оба результата укладываются в nullable-контракт, имеют отдельные пространства ID и не смешиваются с RF4DB/RF4-STAT. Они не заведены в staging до согласования условий использования; RF4 Posts дополнительно требует отдельного решения, поскольку пост описывает точку, а не индивидуальный улов.
|
||||
|
||||
## Перед продуктивным импортом
|
||||
|
||||
1. Сохранить подтверждение разрешения и согласованные лимиты запросов.
|
||||
|
||||
Reference in New Issue
Block a user