- Раскладка docs/ приведена к канону 2: заведены passport/architecture/ database/security/review и research; docs/specs, drafts, backlog, review/ и BRIEF.md разобраны и удалены, беклог переехал в docs/tasks (34 задачи, 6 целей, слаги на английский). - Нарративы specs удалены как дубли openspec-спек после поимённой сверки; остаток заведён задачами (редактор маппинга ревью, крайние случаи именования), отказ от сущности title промоутнут в ADR. - Проектные копии агентов и скиллов ревью/пайплайна удалены в пользу плагинов av-dev-pm и av-dev-pipeline; в task gate добавлен шаг canon вместо er-schema.
21 lines
1.6 KiB
Markdown
21 lines
1.6 KiB
Markdown
# Фетч .torrent по URL — остаток «единого окна»
|
|
|
|
- **Секция:** ядро продукта
|
|
- **Зачем:** 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`.
|
|
|
|
Связано: specs/architecture.md → «Транспорты» (source_type = magnet|torrent|url уже в
|
|
схеме), пакет ingest, архив change `torrent-file-ingest`.
|