NalogAgent · спека реализации

Своя система задач с Клодом внутри — не бот

Не отдельный telegram-бот, а единая веб-система задач: любой бухгалтер заводит задачу, любой другой заходит и проверяет. Внутри задачи — диалог с Клодом с полным контекстом клиента и файлов. Первый релиз снимает самое дорогое — ручной ввод первички.

Цель: снять ввод первички, а не напоминать Ядро: Claude Sonnet 5 + Tool Runner Хостинг: на сервере 1С (.58), в офисе Старт: фото документа → черновик в 1С
01 — модель взаимодействия

Система задач, а не бот в вакууме

Отдельный чат с ботом не даёт ни прозрачности, ни контекста — диалог видит только тот, кто его начал. Вместо этого — общий список задач, как в трекере: любой заводит, любой проверяет.

Бот в вакууме — тупик

Отдельные чаты без общей истории и контекста.

  • Клод отвечает без контекста клиента — больше галлюцинаций
  • Диалог видит только тот, кто его начал
  • Кто что сделал — не видно, аудита нет

Задача — контейнер контекста

Организация, тип, вложения, вся история, статус, исполнитель — в одном месте.

  • Клод отвечает в контексте конкретной задачи — точнее
  • Любой бухгалтер заходит и проверяет — взаимозаменяемость
  • Весь диалог с Клодом и человеком — аудит из коробки

Принцип

Бухгалтер завёл задачу, заболел или ушёл в отпуск — любой другой открывает её и видит всё: что просил клиент, что отвечал Клод, какие файлы прислали, на чём остановились. Ничего не теряется в личных чатах.

02 — ядро агента

Claude Sonnet 5 через Tool Runner

Внутри задачи с Клодом ведут диалог и присылают файлы. Ядро — гибрид: модель понимает и решает, что делать, детерминированный код считает и пишет.

Понимание — LLM

Claude Sonnet 5 разбирает свободный текст, ветвится по ситуации, видит фото документов нативно — отдельный распознаватель не нужен.

Цифры — код

Даты, суммы, расчёты и запись в 1С — детерминированные инструменты, не «мнение модели». Антигаллюцинация: Клод не называет данные не из инструмента.

Критичное — человек

Кнопка подтверждения на всё, что уходит в 1С. На нестандартном Клод переспрашивает или зовёт человека — не ступорит и не выдумывает.

03 — хостинг

На сервере 1С — рядом с базой, изолированно

Данные остаются в офисе. Сервис стоит на .58, но чётко изолирован от 1С и от остального сервера.

Отдельный аккаунт

Свой сервисный Windows-аккаунт без прав администратора и без RDP. NTFS ACL на свою папку, Windows Firewall — доступ только из офисного LAN и WG.

Своя БД

Отдельный инстанс PostgreSQL, данные — на HDD-диске, не делит ресурсы с 1С и не мешает её работе.

Служба

Работает через NSSM — переживает рестарт сервера, автозапуск, логи отдельно от 1С.

Доступ

Бухгалтеры заходят только через офисный WireGuard. Наружу в интернет система не публикуется.

04 — интеграция с 1С

Через штатный OData, не в обход

Главное решение, отделяющее надёжную систему от костыля: контракт 1С, а не самодеятельность в базе.

СпособОценкаПочему
OData / HTTP-сервисы 1С выбрано Стабильный контракт, переживает обновления конфигурации 1С, соблюдает права и бизнес-логику. Включается публикацией базы на веб-сервере (IIS).
Прямой SQL к боевой базе нельзя Таблицы кодированы (_Reference123), структура меняется при обновлении 1С, нет прав и логики, риск нагрузки и блокировок на рабочей базе.
SQL к read-only реплике запасной Только если OData реально не хватит по объёму. Отдельная реплика PostgreSQL, боевая база не под нагрузкой. Всё равно хрупко к обновлениям.

Два узких юзера, не полный доступ

05 — облако или локально

Проверили локальную модель — точности не хватило

Это уже не открытый вопрос — решение принято по факту теста на реальных документах.

ВариантТочность на документахСкоростьИтог
Qwen2.5-VL (локально, obuch) Путает тип документа, ИНН/КПП ~38 сек/документ не хватает
Claude Sonnet 5 (облако) Точность достаточна на тестовых образцах секунды выбрано

Egress

Трафик к api.anthropic.com идёт через обход блокировок на роутере — уже настроен и работает (split на hEX), отдельной подготовки не требует. Локальная модель остаётся аварийным запасным вариантом, а не основным путём.

06 — MVP-флоу

Первый релиз: фото → черновик в 1С

Реально снимает ручной ввод — самую дорогую по времени рутину.

Бухгалтерзадача «первичка», грузит фото
→
Клодраспознаёт реквизиты в диалоге задачи
→
Черновик в 1Снепроведённый документ через OData
→
Бухгалтероткрывает, проверяет, проводит

Список задач

Фильтры по организации, статусу, исполнителю. Видно, что в работе и что зависло.

Роли

Бухгалтер и руководитель. Вход по логину, не открытый бот без входа.

Аудит

Каждое сообщение и каждое действие — в журнал: кто, что, когда.

07 — модель данных

Компактная схема + чёткие инструменты

Один тип задачи = промпт + разрешённые инструменты. Новый тип рутины — это конфиг, не новый код.

# чтение — безопасно, read-only
get_task_context(task_id)       # организация, история, вложения текущей задачи
search_org(query)              # нечёткий поиск организации по названию/ИНН
read_org_context(org_id)       # реквизиты, режим налогообложения из 1С
escalate_to_human(reason)      # не уверен → зовёт человека, а не гадает

# изменения — двухшаговые, через подтверждение в задаче
propose_draft_from_photo(photo) # распознал документ → предложил реквизиты
create_draft_in_1c(fields)      # узкий юзер, только непроведённый документ

Стек: FastAPI + htmx/SSE (server-rendered, не SPA — с запасом хватает на 10 пользователей) + PostgreSQL.

08 — дорожная карта

Поэтапно, от максимума разгрузки

Каждая фаза — новый модуль поверх одного ядра (доступы, модель данных, БД). Ранние фазы не переписываются.

MVP

Система задач + приём первички

Список задач, карточка-диалог с Клодом, роли, аудит, вход по логину. Флоу «первички»: фото → распознавание → черновик в 1С на проверку. Главная разгрузка первого релиза.

Фаза 2

Разноска банка + кабинет клиента

Автосопоставление платежей выписки с контрагентами и договорами — черновик разноски. Клиенту — свой доступ: сейчас его нет, клиент сможет сам заводить задачи и прикладывать документы.

Фаза 3

Мониторинг ФНС · зарплата · контрагенты · дашборд

Сальдо ЕНС через 1С:ЕНС и Калугу Астрал, зарплата и кадры, проверка контрагентов, сводный дашборд для руководителя по клиентам и нагрузке.

09 — риски

Честно про слабые места

Не скрываем — закладываем в план, а не узнаём по факту сбоя.

RAM впритык

На .58 — 32 ГБ, 1С уже занимает почти всё. Системе ставим жёсткий лимит памяти, но при пиковой нагрузке 1С возможна конкуренция за ресурсы.

Зависимость от офиса

Система живёт на офисном сервере — доступность зависит от офисного интернета и самого сервера, а не от отдельного облачного VPS.

OData ещё не опубликован

Сейчас 1С в клиент-серверном режиме без веб-публикации. Публикация через IIS — отдельный шаг перед стартом, ещё не сделан.

10 — с чего начинаем

Первые пять шагов

1
Подтвердить точность облачного Claude на реальных документах.Прогнать те же образцы, что тестировали на Qwen2.5-VL, через Claude vision.
2
Опубликовать 1С OData + завести служебных юзеров.Read-only и отдельный узкий юзер для черновиков — до старта разработки.
3
Скелет системы задач.Модель данных, список задач, карточка-диалог — в dev на кроватке.
4
Собрать MVP-флоу первички целиком.Фото → распознавание → черновик → проверка бухгалтером.
5
Деплой на .58 с изоляцией.Сервисный аккаунт, firewall, доступ только через офисный WG.