# recognition Specification ## MODIFIED Requirements ### Requirement: Разбор сигналов LLM в структурированный план Система SHALL передавать LLM недоверенные сигналы (имя торрента, дерево файлов с размерами, текстовый контекст и накопленные подсказки, пред-парс) и получать структурированный план в схеме: `type` (`movie`|`series`), `title`, `original_title`, `year`, `provider_hint`, `files[]` и `confidence`. Каждый элемент `files[]` SHALL нести `src`, `role` (`main`|`episode`|`subtitle`|`extra`|`sample`|`ignore`) и, для сериала, per-file `season`/`episode` (отдельного скалярного `season` быть SHALL NOT — так выражаются мультисезонные паки и спецвыпуски). План SHALL приниматься только если каждый `files[].src` совпадает с реальным файлом торрента. План MAY дополнительно нести опциональное скалярное поле `director` (режиссёр). Это поле НЕ требуется от LLM и НЕ участвует в структурной валидации или гейте авто-раскладки; его заполняют подтверждённый матч метабазы (авто) или закреплённый в ревью выбранный источник (через override, см. `metadata-match`/`review`) как недоверенное косметическое значение для вывода отображаемого имени. Как недоверенное человекочитаемое поле, `director` SHALL NOT входить в plan-санитайзинг (он чистит `title`/`original_title`/`provider_hint`); очистка режиссёра применяется при рендере имени. Пустой `director` SHALL быть штатным (режиссёр неизвестен). #### Scenario: План сериала с per-file нумерацией - **GIVEN** сезон-пак из 10 видеофайлов - **WHEN** LLM возвращает план - **THEN** `type` = `series`, а каждый видеофайл несёт свои `season`/`episode` #### Scenario: Несуществующий src отклоняется - **GIVEN** ответ LLM, где `files[].src` не совпадает ни с одним файлом торрента - **WHEN** план разбирается - **THEN** такой план не принимается как валидный #### Scenario: Режиссёр не требуется от LLM и не влияет на гейт - **GIVEN** ответ LLM без поля `director` - **WHEN** план разбирается и оценивается - **THEN** разбор успешен, `director` пуст - **AND** отсутствие режиссёра не влияет на структурную валидацию и решение auto/review