Перейти к содержанию

Модель системы

Доменная модель

Основные участники:

Сущность Роль
Executive User Задаёт аналитический вопрос и получает ответ прототипа
Domain Owner Предполагаемый проверяющий выводы по домену: finance, delivery, PMO, ITSM
Platform Admin Роль целевой системы для источников, доступов, диагностических путей и инструментов; в PoC не реализована
Diagnostic path / концепт playbook Ограничивает диагностический процесс, доступные инструменты и доменную рамку
Tool Контролируемая операция над данными: метрика, RAG, агрегированный результат
Diagnostic Run Один запуск анализа с run details, выбранным путём, историей вызовов инструментов и финальным ответом
Evidence Item Факт, расчёт, документальный чанк или ограничение, связанное с выводом
Claim Утверждение в ответе, которое должно ссылаться на доказательство

Diagnostic run в этом прототипе — это single-turn аналитический запрос. Модель не описывает durable multi-turn conversation.

Синтетический датасет

В PoC используется синтетический датасет fashion-v1, концептуально расширенный в сторону FashionCo Group / fashionco-enterprise.

Домен компании:

  • Премиум одежда / малое-среднее производство;
  • B2B / B2B2C через дистрибьюторов, бутики, шоурумы и партнеров маркетплейсов;
  • период данных: 2024-2025;
  • бизнес-домены связаны в едином enterprise-контуре.

Основные домены данных:

Домен Содержание
core customers, products, sales orders, order items
crm companies, contacts, deals, activities, tasks
finance invoices, payments, accounts receivable, COGS
production production orders, operations, materials, supplier deliveries
documents document objects, invoice files, metadata
rag RAG documents and chunks
delivery epics, tasks, transitions, rework, cycle time
itsm incidents, SLA, affected services, business impact
pmo roadmap items, milestones, slippage, status reports
meetings decisions, action items, decision-to-action gaps
goals KPI, objectives, ownership, conflicts — target/extension
semantic metric definitions, business entities, calculation rules
system dataset version, runtime metadata
eval scenario truth, expected claims, forbidden claims — not exposed to normal tools

Модель данных

Упрощённая ERD-логика:

flowchart LR
    SalesOrder[core.sales_orders] --> SalesItem[core.sales_order_items]
    SalesOrder --> Invoice[finance.invoices]
    SalesOrder --> Payment[finance.payments]
    SalesOrder --> Deal[crm.deals]
    Deal --> Roadmap[pmo.roadmap_items]
    Roadmap --> Epic[delivery.epics]
    Epic --> Task[delivery.tasks]
    Task --> Transition[delivery.task_transitions]
    Roadmap --> Incident[itsm.incidents]
    Roadmap --> Decision[meetings.decisions]
    Decision --> Action[meetings.action_items]
    Document[documents.document_objects] --> Chunk[rag.rag_chunks]
    Chunk --> Roadmap
    Chunk --> Incident
    Chunk --> Decision

API-контракты

Agent endpoint

POST /agent/check-hypothesis
Content-Type: application/json

Пример запроса:

{
  "question": "Почему в марте 2025 просела валовая маржа?",
  "hypothesis": "Падение маржи связано со скидками",
  "context": {
    "period": "2025-03",
    "domain": "finance"
  }
}

Пример ответа:

{
  "selected_playbook": "financial_operations",
  "verdict": "partially_supported",
  "final_answer": "...",
  "evidence": [
    {
      "type": "metric",
      "tool_id": "metric_gross_margin",
      "period": "2025-03",
      "summary": "gross margin decreased compared with baseline"
    }
  ],
  "tool_calls": [
    {
      "tool_id": "metric_gross_margin",
      "args": { "period": "2025-03" },
      "status": "ok"
    }
  ],
  "limitations": [
    "Analysis is based on synthetic dataset only"
  ]
}

Поле selected_playbook отражает прототипный концепт playbook-routing, а не полноценный playbook engine.

Tool-server health

GET /health

Назначение: проверка доступности tool-server.

Gross margin tool

POST /tools/metric/gross-margin
Content-Type: application/json

Поддерживаемые формы запроса:

{ "period": "2025-03" }
{ "start_date": "2025-02-01", "end_date": "2025-03-31", "group_by": ["month"] }

Логика расчёта:

revenue = SUM(core.sales_orders.net_amount_rub)
cogs = SUM(core.sales_orders.cogs_amount_rub)
gross_margin = revenue - cogs
gross_margin_rate = gross_margin / revenue

RAG search tool

POST /tools/rag-search
Content-Type: application/json

Пример запроса:

{
  "query": "решение по Definition of Ready для промо-функции",
  "filters": {
    "domain": "delivery",
    "source_type": "meeting_minutes",
    "period": "2025-Q1"
  }
}

Ожидаемый ответ:

{
  "status": "ok",
  "results": [
    {
      "document_id": "DOC-PMO-2025-03-12",
      "chunk_id": "CHUNK-001",
      "title": "PMO weekly meeting notes",
      "score": 0.82,
      "object_key": "executive-demo-docs/pmo/2025-03-12.md",
      "snippet": "..."
    }
  ]
}