mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
32 lines
2.4 KiB
Markdown
32 lines
2.4 KiB
Markdown
## Purpose
|
|
|
|
Чтение публичных Telegram-каналов через Telethon (MTProto) для сбора новостей с метриками
|
|
популярности. Дополняется поддержкой «своих» источников (own: true) — контент пользователя.
|
|
|
|
## ADDED Requirements
|
|
|
|
### Requirement: Источники своего контента
|
|
Краулер MUST распознавать источники с `own: true` в sources.yaml и для их постов
|
|
проставлять `is_own=1`, `is_own_canonical=1`. Для таких источников медиа MUST
|
|
скачиваться (контент принадлежит пользователю).
|
|
|
|
#### Scenario: Краулинг своего канала
|
|
- **WHEN** источник slug=dedinit имеет own: true
|
|
- **THEN** посты сохраняются с is_own=1 и is_own_canonical=1; медиа скачивается;
|
|
инкрементальный обход и дедуп работают как обычно
|
|
|
|
#### Scenario: Чужой форвард в своём канале
|
|
- **WHEN** пост в своём канале — форвард из чужого канала
|
|
- **THEN** пост сохраняется с is_own=1 (это пост пользователя, он его переслал) и с
|
|
fwd_from_channel_id/fwd_from_post_id; медиа не скачивается (содержимое чужое),
|
|
атрибуция оригинала сохраняется в fwd-полях
|
|
|
|
### Requirement: Канонический экземпляр своего контента
|
|
Если пост пользователя (is_own=1) позже встречается во внешнем канале (тот же sha256/url),
|
|
внешний экземпляр MUST сохраняться как «упоминание» с is_own=0; каноническим остаётся
|
|
первичный (is_own_canonical=1).
|
|
|
|
#### Scenario: Свой пост запостили в чужой канал
|
|
- **WHEN** краулер находит в чужом канале пост с текстом, совпадающим с is_own-постом
|
|
- **THEN** создаётся запись is_own=0 (упоминание) без дублирования контента; веб видит
|
|
оба экземпляра, но кандидатом на публикацию считается канонический (is_own_canonical) |