Уточнение деталей архитектуры

This commit is contained in:
2026-06-13 17:42:25 +03:00
parent 5b53f4e8e8
commit 547940ea59
6 changed files with 220 additions and 30 deletions
+25 -5
View File
@@ -20,9 +20,10 @@
1. **Пред-парс** имени релиза дешёвым парсером (`go-ptn`): черновые
название/год/сезон/серия и качество. Грубо, но бесплатно.
2. **LLM** (Anthropic, structured output): получает все сигналы и
пред-парс, возвращает структурированный план. Хорошо справляется с
русскими релиз-именами, чего не умеет парсер.
2. **LLM** (через провайдер-абстракцию, см. «Провайдер LLM»): получает
все сигналы и пред-парс, возвращает структурированный план в нашей
схеме. Хорошо справляется с русскими релиз-именами, чего не умеет
парсер.
3. **Сверка с базой** (опц., если включена TMDB/TVDB): подтверждаем
название+год, берём официальный id и каноническое имя.
4. **Оценка уверенности** и решение: авто-раскладка или ревью.
@@ -42,6 +43,24 @@ confidence 0..1 — самооценка модели по полям
notes пояснения, неоднозначности
```
## Провайдер LLM
Доступ к LLM — за интерфейсом; конкретная реализация выбирается полем
`[llm].type` в конфиге (дискриминатор). Это позволяет подключать
локальные модели и сторонние (в т.ч. китайские) эндпоинты — ради экономии
и независимости от одного вендора.
- Первый и пока единственный тип — **`openai-compat`**: OpenAI-совместимый
Chat Completions API (`base_url` + `api_key` + `model`). Под него
подходят локальные серверы (LM Studio, llama.cpp, Ollama) и облачные
совместимые провайдеры (DeepSeek, Qwen и др.).
- Структурированный вывод: запрашиваем JSON по нашей схеме
(`response_format` со схемой там, где поддерживается; иначе json-режим
или tool-call), **валидируем в Go** и ретраим при несоответствии —
серверы различаются по поддержке строгих схем.
- Новые типы (напр. нативный `anthropic`) добавляются, не трогая
`recognize`.
## Модель уверенности
Авто-раскладка только если выполнено всё:
@@ -54,8 +73,9 @@ notes пояснения, неоднозначности
- сериал: число серий бьётся с базой (если есть), нумерация S·E
консистентна, без пропусков и дублей.
Иначе план уходит в **review**. На экране подтверждения всегда видно,
*почему* не авто — это страховка на дорогих файлах.
Иначе план уходит в **review** (сценарии — [review-ux.md](review-ux.md)).
На экране подтверждения всегда видно, *почему* не авто — это страховка на
дорогих файлах.
## Что делаем с краёв