- review.md переведён на словарь меток: вопросы адресованы темам, триггеры профиля стали триггерами метки в три списка, quick/standard/wide → small/ medium/large, профиль deep упразднён - openspec/config.yaml переписан по канонической форме: адреса passport и CLAUDE.md вместо пересказа правил ревью и конвенций - разобраны находки doc-consistency и doc-code-drift: исключение инварианта сверено со спеками, единая точка времени и таблица classifyErr дополнены, MaxTorrentSize получил дом в database.md
1.7 KiB
✨ Принимать ссылку на .torrent и скачивать файл самим (нужен SSRF-гард)
- Тип: feature
- Категория: Ядро продукта
- Зачем: magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
- Теги: goal:ingest-and-review-interfaces
Приём magnet и .torrent-файла уже реализован: ветка TorrentData → torrent.Parse
(internal/ingest/ingest.go), файл-пикер в веб-форме (web/templates/index.html),
приём документа в Telegram (internal/tgbot). Осталась одна ветка «единого окна» —
URL на .torrent: сервис сам скачивает файл по ссылке и заводит загрузку. Была
осознанно вынесена из change torrent-file-ingest, потому что требует исходящего
запроса на пользовательский URL → нужен SSRF-гард (allowlist схем/хостов, запрет
приватных сетей, лимит размера/редиректов).
Идеал по-прежнему — одно поле, куда кидают текст или файл, а сервис разбирает, что
это (magnet / ссылка на .torrent / .torrent-файл / сообщение бота). Сейчас текстовое
поле идёт только через magnet.Parse.
Связано: architecture.md → «Внешние границы и форматы»
(source_type = magnet|torrent|url уже в схеме), пакет ingest, архив change
torrent-file-ingest.