AudionAudion

GUI И Workflow Audion Docs AI

GUI_WORKFLOW_RU.md

GUI И Workflow Audion Docs AI

Дата актуализации: 2026-07-16

Этот документ описывает текущий интерфейс Audion Docs AI v3 и то, как пункты GUI связаны с реальными пайплайнами проекта. Source of truth для состава экранов - config\tool_manifest.yaml; бизнес-логика находится в system_core\pipeline.py, system_core\doc_task_runner.py, system_core\document_normalizer.py и сервисном слое system_core\services\audion_docs_service.py.

Назначение GUI

launcher_gui.cmd запускает NiceGUI/desktop shell поверх существующих CLI-движков. GUI не дублирует логику обработки документов: он собирает параметры, показывает статус и живой журнал, а затем вызывает service/CLI-слой.

Основные движки:

Layout

Workbench I/O

Верхний блок слева — канонический Workbench, общий модуль приложений Audion (Office OCR AI, Build Licenses). Источник может быть папкой или отдельным DOCX/PPTX/XLSX/PDF-файлом; назначение выбирается как папка. Выбранные пути передаются прямо в pipeline, TASK и normalization backend без промежуточного копирования в input\. Проектные input\ и output\ остаются маршрутами по умолчанию.

Для источника и назначения доступны история путей, pin/unpin, удаление записи из истории и системный picker.

Канонические названия Workbench

Русские кнопки: Источник, Добавить файл..., Назначение, Сбросить, Удалить, Список.

Английские кнопки: Source, Add file..., Target, Reset, Delete, List.

Сбросить / Reset возвращает маршруты на проектные input\ и output\, очищая только неприкреплённый кэш путей. Эта команда не удаляет документы. Удалить / Delete очищает выбранные Source и Target только после подтверждения; для внешнего источника интерфейс отдельно показывает предупреждение.

Команды без видимых параметров запускаются непосредственно тёмно-янтарными action-кнопками и не открывают пустое дочернее окно. Внутри кнопки находится только название команды, а описание остаётся отдельным текстом справа. Полноценные формы, select-поля и другие параметризованные команды в action-кнопки не превращаются. Radio и checkbox-контролы оформляются как чипы внутри читаемых секционных блоков.

Главное Меню

Текущий верхний уровень:

Быстрая задача и Восстановить регистр после запятых находятся внутри Специализированные команды, а не в корне меню.

Правило документации: названия разделов должны совпадать с интерфейсом. Если пункт переименован в manifest, документация обновляется в тот же заход.

Общие Controls Для Моделей И Ключей

Поля провайдера используют один паттерн для OpenAI, Gemini, xAI и Anthropic Claude:

Добавление ключа:

  1. Нажать + справа от select ключа.
  2. Ввести метку, ключ и комментарий.
  3. Поле ключа - textarea: можно вставить чистый ключ или строку Метка | ключ | комментарий.
  4. После сохранения запись добавляется в файл провайдера:
  1. Новый ключ выбирается в текущем select.

Удаление ключа всегда требует подтверждения. Кэш избранных ключей хранит только refs/метки в config\gui_key_cache.json, сами секреты остаются в config\api_key_*.txt.

Кэши И Fallback

GUI использует локальные кэши:

Если модель не выбрана явно, fallback берётся так:

  1. последняя модель со статусом ok в provider cache;
  2. первая избранная модель;
  3. если fallback невозможен, запуск просит выбрать модель.

Сырой provider model list не используется как auto-default, потому что он может содержать исторические или недоступные модели.

Пайплайн Аудита DOCX/PPTX

GUI-пункты АУДИТ OPENAI, АУДИТ GEMINI, АУДИТ XAI, АУДИТ CLAUDE вызывают run_pipeline_operation с режимом audit и нужным provider. Это основной пользовательский пайплайн.

Вход

Аудит читает рекурсивно поддерживаемые документы из input\:

Office temp-файлы вроде ~$... игнорируются. Для каждого документа строятся относительные пути, чтобы одинаковые имена в разных подпапках не конфликтовали.

Шаг 1. Scan

Режим scan доступен в Подготовка -> Сканировать input.

Что делает:

Когда использовать:

Шаг 2. Render Map

Режим render доступен в Подготовка -> Карта рендера COM.

Что делает для каждого DOCX/PPTX:

Ключевые артефакты:

logs\<relative>\*__block_map.json
logs\<relative>\*__render.json
logs\<relative>\*__render_map.json
logs\<relative>\*__render.log
work\marked_ooxml\<relative>\*__marked.docx|pptx
work\rendered_pdf\<relative>\*.pdf
work\extracted_pdf_text\<relative>\*__pages.json

Если Office COM не смог построить PDF, pipeline пишет fallback render map. В обычном audit это не всегда фатально, но при строгом require_render_map документ получает статус failed_render_map.

Шаг 3. LLM Audit

Режим audit делает весь практический прогон:

  1. Берёт существующий render map, если он подходит исходному документу.
  2. Если render map нет, строит его.
  3. Загружает активные или выбранные правила аудита.
  4. Делит block map на chunks.
  5. Вызывает выбранного provider:
  1. Пишет progress cache по chunks, если включён resume.
  2. Нормализует сырые ответы модели.
  3. Для русского запуска находит полностью английские или преимущественно английские problem и recommendation.
  4. Отправляет только забракованные поля на дешёвый language-repair: сначала тому же provider, при неуспехе — одному резервному provider.
  5. Привязывает проблемы к block_id, render_map, странице и human location.
  6. Только после успешных проверок пишет JSON, XLSX, DOCX и annotated-копию.

Ключевые артефакты:

cache\<relative>\*__issues__<provider>_<model>_<reasoning>.json
logs\<relative>\*__audit.json
logs\<relative>\*__language_repair.json
logs\<relative>\*__annotation.json
output\<relative>\*__audit_table.xlsx
output\<relative>\*__audit_report.docx
output\<relative>\*__annotated.docx|pptx

LLM cache подписывается не только именем файла. В подпись входят:

Поле «Многозадачность» (--workers) задаёт, сколько частей документа обрабатывается одновременно: части независимы, перекрытие уже вшито в текст каждой. Значение 1 даёт прежнюю последовательную работу, 4 стоит по умолчанию, максимум 32. Ускорение прямое: на 71 части переход с 1 на 8 сокращает прогон примерно с часа до восьми минут, а расход токенов не меняется. Ограничение сверху - лимиты провайдера (запросов и токенов в минуту); при их превышении provider возвращает 429 и отрабатывает штатный retry, поэтому ставить больше, чем позволяет тариф, смысла нет. Результаты собираются по номеру части, так что порядок находок и нумерация не зависят от того, какая часть закончила первой. Уже посчитанные части берутся из cache и при параллельной работе.

Если документ изменился, старый cache считается stale и пересчитывается.

Provider-Особенности

OpenAI:

Gemini:

xAI/Grok:

Anthropic Claude:

Язык И Публикация Отчёта

Русские audit-команды передают report_lang=ru. В этом режиме переводятся заголовки и технические enum-значения, а prompt требует русский язык в человекочитаемых полях. Полностью или преимущественно английский текст в problem или recommendation считается браком ответа модели. Pipeline сначала делает короткий запрос к тому же provider только с дефектными полями. Если запрос упал, пропустил поле или снова вернул английский текст, выполняется ровно один cross-provider fallback. Готовые чанки повторно не отправляются.

Каскад фиксирован: OpenAI и xAI переключаются на gemini-3.6-flash с minimal; Gemini и Anthropic переключаются на gpt-5.6-luna с low. Первая попытка OpenAI/xAI использует low, Gemini — minimal. Если ключ или модель fallback недоступны, это считается второй неудачей.

Исходные и исправленные значения, обе попытки, выбранные provider/model, расход токенов и статус сохраняются в logs\<stem>__language_repair.json. Повторный запуск с тем же точным набором полей использует этот cache без нового API-вызова. Если обе попытки не прошли проверку, pipeline показывает ошибку и не публикует новый audit JSON/XLSX/DOCX.

Точные цитаты из исходного документа, идентификаторы моделей, API-поля и технические значения без пользовательского перевода остаются неизменными.

Живой Журнал Чанков

Python запускается без буферизации. Сразу после старта журнал показывает provider, model, reasoning и report_lang, затем для каждого чанка — start, время завершения, токены, ETA и число найденных строк. Если строки появляются только после завершения всей операции, нарушен unbuffered-запуск или чтение stdout.

Шаг 4. Report

Режим report доступен в Отчёты -> Отчёт из журнала.

Он не вызывает LLM. Он читает logs\**\*__audit.json и заново пишет:

output\<relative>\*__audit_table.xlsx
output\<relative>\*__audit_report.docx

Использовать, если:

Шаг 5. Annotate

Режим annotate доступен в Отчёты -> Аннотация.

Он читает audit logs и block map, затем создаёт annotated-копии с якорями ошибок:

output\<relative>\*__annotated.docx|pptx
logs\<relative>\*__annotation.json

Шаг 6. Report + Annotate

Отчёты -> Отчёт + аннотация выполняет report, затем annotate. LLM не вызывается.

Шаг 7. Strip Anchors

Отчёты -> Снять якоря удаляет якоря ошибок из annotated DOCX/PPTX и пишет чистую копию:

output\<relative>\*__unanchored.docx|pptx

Использовать после ревью, если нужен документ без служебных маркеров.

Правила Аудита

Правила лежат в:

config\audit_rules\

Активный default:

config\audit_rules\active_audit_rules.md

Раздел Правила аудита позволяет:

Пустой выбор правил в audit-экране берёт активный файл.

Пайплайн Document TASK

TASK-пункты:

TASK runner читает рекурсивно:

PDF используется как read-only источник текста через PyMuPDF. Поле Страниц PDF ограничивает чтение первых страниц, по умолчанию - 5.

TASK-Инструкция

Managed инструкции лежат в:

config\doc_tasks\

Активная инструкция:

config\doc_tasks\active_doc_task.md

В GUI можно:

TASK Scope

Охват задачи:

TASK Run

Пайплайн TASK:

  1. Читает выбранную или активную инструкцию.
  2. Добавляет уточнение из поля Уточнение к TASK.
  3. Строит block map для DOCX/PPTX/XLSX/PDF.
  4. Делит данные на chunks.
  5. Вызывает OpenAI/Gemini/xAI/Claude.
  6. Собирает rows, findings и replacements.
  7. Пишет aggregate report.
  8. При включённой опции замен применяет безопасные DOCX replacements.

Выход:

output\_doc_tasks\<timestamp>__doc_task.json
output\_doc_tasks\<timestamp>__doc_task.xlsx
output\_doc_tasks\<timestamp>__doc_task.docx
output\_doc_tasks\<timestamp>__doc_task.md

Для пофайловых задач также используются per-document cache-файлы:

cache\<relative>\*__doc_task__<provider>_<model>.json

Для corpus-задач:

cache\_doc_tasks\corpus__<cache_id>__<provider>_<model>.json

TASK cache подписывается source hash, инструкцией, уточнением, provider/model, chunk-параметрами, лимитом PDF-страниц и системным prompt.

Точные Замены DOCX

Опция Найти и заменить текст в документах DOCX применяет только пары old_text -> new_text, которые вернула модель. Замены выполняются безопасно:

Чистая Таблица По Шаблону

Опция Чистая таблица по шаблону пишет дополнительный чистый экспорт по DOCX/XLSX-шаблону из input\.

Правила:

Выход:

output\_doc_tasks\<timestamp>__doc_task_clean.json
output\_doc_tasks\<timestamp>__doc_task_clean.xlsx
output\_doc_tasks\<timestamp>__doc_task_clean.docx

DOCX clean output пишется только если шаблон был DOCX.

Быстрая Задача

Быстрая задача нужна для inline-инструкций без создания Markdown-файла.

Можно:

История и избранное живут в config\gui_doc_task_quick_cache.json.

Нормализация Документов

Пункты:

Нормализация не вызывает LLM. Она читает готовые audit logs:

logs\**\*__audit.json

Фильтр provider берётся из meta.provider.

Применяются только безопасные исправления:

Выход:

output\_normalization\<timestamp>__normalization_<provider>.json
output\_normalization\<timestamp>__normalization_<provider>.xlsx
output\_normalization\<timestamp>__normalization_<provider>.docx
output\_normalization\<timestamp>__normalization_<provider>.md
report\document_normalization\<timestamp>__normalization_patch_plan_<provider>.json
report\document_normalization\latest_normalization_patch_plan_<provider>.json

Сомнительные случаи попадают в Unresolved Items; скрипт не угадывает замену сам.

Восстановить Регистр После Запятых

Раздел находится в Специализированные команды.

Он работает с готовыми артефактами DocFlow и не запускает DocFlow повторно. Подробности в docs\COMMA_LOWERCASE_RESTORE_RU.md.

Режимы источника решений:

Локальный скрипт только применяет решение restore или keep по координатам. Смысловое решение принимает LLM или человек.

Отчёты И Якоря

Раздел Отчёты работает только с уже созданными logs:

LLM на этих шагах не вызывается.

Подготовка

Раздел Подготовка:

Использовать перед большим аудитом, если нужно заранее поймать проблемы Office COM, пустой input или неверную структуру папок.

Проверка Моделей

ПРОВЕРИТЬ МОДЕЛЬ отправляет маленький provider-запрос и сохраняет результат в config\gui_model_cache.json.

Статусы:

Проверка модели не заменяет refresh списка. Refresh отвечает на вопрос "что provider сейчас перечисляет", smoke-check отвечает на вопрос "эта модель реально запускается с этим ключом".

Проверки После GUI-Изменений

Минимум:

runtime\python.exe -m compileall system_core tests
runtime\python.exe -m unittest discover -s tests

Визуальный smoke:

Cleanup И Init Folders

Все проекты