WORK 07 · Current
Порталы и платформы · Legal / contract intelligence
AIARM: документный workspace, анализаторы и AI team
AIARM: области, ~35 анализаторов, AI-команда, претензии — v0→v3 оболочки.
Роль: Архитектура модульного монолита
- 16сервис-модулей
- ~35анализаторов
- 2 режимаtools vs AI-команда
- RBACобласти
Задача
Нужен доверяемый разбор договоров и опциональный LLM без потери ролей, аудита и воспроизводимости. «Чат с PDF» не проходит юридическую приёмку и смешивает магию промпта с ответственностью.
Результат
16 apps + MPA: Области, договоры как задачи, анализаторы, AI-команда (Explainer/RCA), approvals, claims, BYOK/Celery AI — SEO-воронка без обхода RBAC.
- Django
- Celery
- Redis
- REST API
- analyzers
Не чат с PDF
Юрист и закупщик платят за воспроизводимый след проверки, не за разговорчивую модель. Ошибка в договоре дороже красивого UI.
AIARM («Интеллектуальный анализ документов», aiarm.ru) — документный портал: hybrid MPA на Django SSR + vanilla JS и 16 сервис-apps под /api/…. Ставка продукта: детерминированные анализаторы и процесс дают базу доверия; LLM ускоряет объяснения под BYOK и ролями. Смешать это в одну кнопку — потерять приёмку.
Ниже — инвентарь того, что построено в docproject: области, договоры как задачи, сетка проверок, AI-команда, согласования, претензии, эволюция оболочки. Не пересказ лендинга и не обещание «200 живых tools».
- Сначала проверяемый инструмент и процесс
- Потом управляемый AI под ключами клиента
- Публичная воронка не открывает чужие документы
Эволюция оболочки: v0 → v3
Четыре эпохи UI на одном ядре: монолитный workspace → секции документа → Tools Home → workspace-first Области.
v0 — крупный project workspace в одном экране. v1 — документ разбит на задачи (сводка, проверка, финансы, сроки…). v2 — /app/ Tools Home, tool chrome, дашборд «Договоры» как инструмент. v3 — post-login /workspaces/, Области в навигации, typed projects, deep-link /app/open/….
Стек зафиксирован: SSR + острова JS, без React/Vue. AI-команда отдельно пережила редизайн каталог vs рабочая область. Менялась оболочка — не ломали доменные границы apps и API.
- v0 — монолитный workspace.html
- v1 — документ как набор экранов-задач
- v2 — /app/ registry + tool chrome
- v3 — Области и typed projects
Области и RBAC
Контейнер дел с ролями владелец / редактор / наблюдатель — blast radius на уровне области и проекта.
Области (/workspaces/) — центр v3: участники, приглашения, файлы области, переключатель в шапке. Типизированные проекты: договор, претензии, AI-команда, изображения, Explainer, RCA. «Договоры» в продукте — linked tool на dashboard, не личный чат с файлом.
На уровне проекта — owner/admin/editor/viewer. Компании и контрагенты живут отдельным контуром рядом. Это B2B-сценарий с аудитом доступа, а не «залил PDF и спросил модель».
- Роли области: владелец / редактор / наблюдатель
- Typed projects: договор, претензии, AI, Explainer, RCA…
- Участники, приглашения, файлы области
- Права на уровне проекта (collaboration)
Документ как задачи
Upload → extract → phase 1 safe → confirm type → phase 2 full; карточка документа — отдельные экраны, не одна простыня.
File processing вытаскивает текст из PDF/DOC/DOCX/XLS/изображений. Типы документов задают пайплайн анализаторов. Карточка: сводка, проверка, финансы, сроки, условия, структура, таблицы, о документе, согласование.
Тяжёлый анализ договоров идёт синхронно в gunicorn с flock-lock (OOM/spaCy), не в Celery. Пользователь видит статусы фаз; NLP-кэш и clause parse держат повторяемость. Search и compare — отдельные входы в продукт.
- Extract + preprocess
- Phase 1: безопасный старт анализаторов
- Phase 2: полный разбор по типу документа
- Секции карточки вместо одного бесконечного экрана
~35 анализаторов как база доверия
Шесть UI-групп: финансы, сроки, юридическое, извлечение, документ, безопасность — f(input)→output для приёмки.
Зарегистрированная сетка детерминированных проверок проходит юридическую приёмку лучше, чем «модель подумала». Рядом — keywords/типовые пункты и отдельные compare-API: текст, реквизиты, спецификации, cross-doc, НДС/валюта — мощный слой вне основного registry, который легко недооценить.
Конструктор договоров и compliance-контуры дополняют сценарии «собрать» и «проверить». Сознательно не подменяли анализаторы одним промптом на всё.
- Финансы / даты / юридическое / извлечение / документ / безопасность
- Compare: text, requisites, spec, cross-doc
- Keywords и clauses по проекту
- Конструктор шаблонов рядом с разбором
AI-команда отдельно
Помощник · рабочая область · шаблоны · история · каталоги: packs, skills, workflows — не смешивать с детерминированными tools.
AI-команда: состав, готовые сценарии, скилы, мои команды. Backend — packs/agents/workflows/sessions/artifacts. Связанные продукты: AI-изображения, Explainer-статьи, RCA / 5 Whys с export. UX разделяет каталог и workspace-цепочку запуска.
Два режима ценности на одном портале. Если LLM снова станет «главной кнопкой», доверие к сетке анализаторов размоется — граница держится намеренно.
- IA: помощник / область / шаблоны / история
- Packs, agents, WorkflowRun, sessions
- Explainer, RCA, AI-изображения
- Отдельный контур от ANALYZERS registry
Согласования и версии
Approval routes, цепочка версий и diff — процесс ограничивает ошибку сильнее внимательности.
Маршруты согласования на проект: шаги sequential/parallel, дедлайны, вкладка на документе. Versioning фиксирует, какая редакция ушла на утверждение; сравнение редакций уменьшает спор «мы утверждали другое».
Журнал активности, уведомления и summary ведут к деталям анализаторов. Export ZIP пакует документы (и опционально претензию/опись) — артефакт для согласования важнее стриминга чата.
- ApprovalService: маршруты и шаги
- Цепочка версий + TextDiff
- Activity / notifications
- Export ZIP проекта
Претензии и протоколы разногласий
Отдельный bounded context: типы претензий, статусы, связь с файлами — не комментарии к PDF.
Претензии: просрочка, качество, оплата, неустойка, расторжение и др.; фильтры по области, AI-блок создания. Протоколы разногласий — соседний контур (disagreement), связанный в навигации, но отдельный app.
Конструктор и export рядом замыкают цикл «разобрать → собрать → выгрузить». Это пример модульного монолита: границы apps уже есть, микросервисы «по слайду» не резали до независимых команд и SLO.
- Claims с типами и статусами
- Протоколы разногласий
- Связь с областью и документами
- Конструктор + export в том же продукте
BYOK и очереди AI
Ключи клиента шифруются; Celery только для AI (ai_fast / ai_slow); лимит параллельных jobs — без спонсорства чужих токенов.
Настройки AI-провайдеров: BYOK, баннер «нужен API-ключ». run_team_session → ai_fast, image generation → ai_slow. AIJob: queued → processing → completed/failed. Тяжёлый анализ договоров остаётся sync — Celery не маскирует стоимость NLP.
Честно: Stripe/prepaid SaaS-биллинга в backend нет; лендинговый «тариф 5 документов» не стоит читать как enforcement в коде. Продаём архитектуру ключей и очередей, не выдуманный биллинг.
- BYOK + шифрование ключей окружения
- Очереди ai_fast / ai_slow / default
- Лимит параллельных AI-job на пользователя
- Нет shipped MCP / нет Stripe в services
Публичная воронка без дыры
Features, guides, tools, solutions — SEO-каталог; рабочие мосты есть, но каталог ≠ все live.
Публичная шапка ведёт в возможности, руководства, инструменты, решения, сценарии. Реальные API-мосты (analyze, проверка подписи, курсы ЦБ) показывают пользу без онбординга в область клиента.
Внутри репозитория аудит tools-reality фиксирует: большая часть публичного каталога — SEO/find-stubs. В кейсе это важно: воронка греет трафик и доверие, но не обходит RBAC и не равна «200 зрелым продуктам». Маркетинговый tool не должен стать дырой в workspace.
- Хабы: features / guides / tools / solutions / use-cases
- Рабочие мосты: analyze, digital signature, CBR
- Честно: много публичных URL — SEO, не полный auth-паритет
- Изоляция публички от областей и документов
Итог
Итог
AIARM держит линию: сначала проверяемый инструмент и процесс, потом управляемый AI. Документный портал выигрывает областями, анализаторами и границами apps — не скоростью ответа чата.
Покупаете воспроизводимый след проверки, RBAC и согласования; AI-команда под BYOK — когда Explainer и RCA нужны без потери приёмки.
Request this case
Соберём архитектуру под вашу задачу
Вакансии не рассматриваю. Создаю галеру. Лично — консультации и проектирование. Форм на сайте нет — пишите в Telegram или на почту.