Главная / Статьи

LangGraph Control Planes против Knowledge Graphs: порядок создания, устойчивый к воздействию среды

Разделяйте графы контрольного потока LangGraph от графов знаний, предусмотрите возможность прерывания действий человеком в моменты проверки состояния, и добавляйте GraphRAG только тогда, когда будут зафиксированы сбои в работе многоэтапных решений типа RAG.

Издатель: REACTAPP.TOP18 мин чтения4078 слов

Источники: Graph Engineering with Claude

Графы управления потоком и графы знаний имеют общее лишь одно понятие, и почти ничего больше. В этом руководстве они разделяются, показано, когда автоматы состояний в стиле LangGraph оправдывают свое использование, и когда графы данных в стиле GraphRAG следует ждать подтвержденных многократных сбоев.

Начните с того, чтобы не создавать дорогой граф

Выбор графа знаний только потому, что он кажется более сложным, — это повторение распространенной ошибки. Тесты простых поисков часто показывают одинаковую эффективность обычных фрагментов текста и поиска в графе, при этом расходы на создание графа не приносят никакой выгоды. Начните с архитектурных графов для управления; добавляйте графы данных только тогда, когда векторный поиск не справляется с вопросами о связях.

Что на самом деле представляет собой агент, основанный на графах

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

Пять шаблонов, стоит запомнить

Маршрутизатор → специализированные инструменты; планировщик → исполнитель; точки утверждения человеком; алгоритмы map-reduce для подзадач; циклические петли улучшения до завершения. Каждый шаблон представляет собой явную политику рёбер, а не скрытую вложенность операторов if.

Механизмы в конкретиках

from langgraph.graph import StateGraph, START, END
from typing_extensions import TypedDict

Общее состояние в виде словаря с типизацией:

class State(TypedDict):
    query: str
    docs: list
    answer: strdef retrieve(state: State):
    return {"docs": kg_search(state["query"])}   # a retrieval nodedef generate(state: State):
    return {"answer": llm(state["query"], state["docs"])}g = (StateGraph(State)
     .add_node("retrieve", retrieve)
     .add_node("generate", generate)
     .add_edge(START, "retrieve")
     .add_edge("retrieve", "generate")
     .add_edge("generate", END)
     .compile())

Прерывания приостанавливают работу внутри графа:

from langgraph.types import interrupt, Command

Пример узла утверждения:

def approval(state):
    ok = interrupt({"question": "Approve?", "amount": state["amount"]})
    return {"status": "approved" if ok else "rejected"}

Управление потоком в формате ASCII:

+-----------+
START --> |  router   |
          +-----------+
           |         |
   (relational)   (simple)
           v         v
      +---------+  +--------+
      | graph   |  | vector |
      | retrieve|  |retrieve|
      +---------+  +--------+
            \         /
             v       v
          +-------------+       +--------------+
          |  reason /   |----> | write-memory |--> KG
          |  generate   |       +--------------+
          +-------------+
                |
         (needs approval?) --> interrupt() --> human
                |
                v
               END

Чекпоинты сами по себе не обеспечивают надёжного выполнения

Хранение состояния в SQLite или Postgres предотвращает исчезновение тикетов при перезагрузке. Это не полноценный движок рабочих процессов с таймерами и очередями, но без него демонстрации с участием человека ведут к ложным выводам относительно готовности решения к использованию в производстве.

Другой тип графа

Графы знаний хранят сущности и связи, извлеченные из корпусов данных. Они помогают отвечать на вопросы о многократных связях и влиянии, но не всегда превосходят метод BM25+векторы при поиске информации вида «что такое X».

Тесты, которые пропускают в презентациях

Когда простой поиск фактов связывает фрагменты текста с методами графов, для обоснования сложности необходим другой набор вопросов. Ещё одной причиной проводить тестирование на собственном трафике являются показатели эффективности, проверенные на предмет смещений, которые снижаются после корректировки оценок с помощью ИИ-моделей.

Что на самом деле даёт гибридный подход

Плотные + лексические + необязательные графовые якоря, объединённые с методом взаимного слияния рангов, покрывают парафразы и идентификаторы. Шаги в графе происходят после якорей идентификаторов, а не перед каждым запросом.

Расчёт затрат

Многоагентные системы могут потреблять примерно в десять раз больше токенов, чем одиночные чаты. Использование метода GraphRAG без измерения изменений приводит к росту расходов, в то время как качество обслуживания запросов остаётся прежним.

Память, знающая время

Точки контроля в потоках отличаются от долгосрочных хранилищ предпочтений и кэшей ответов в стиле CDN. Их смешивание приводит к ботам, которые забывают имена в процессе чата или предоставляют устаревшие правила.

Система 2026 года: честная оценка

LangGraph для управления, проверенные векторные/гибридные хранилища для большинства операций по поиску, графы с учётом онтологии только там, где отношения являются ключом к ответу. Возможность отслеживания использования токенов и механизмы приоритизации важнее, чем новизна самых фреймворков.

Налог для множества агентов

Дополнительные агенты должны приобретать измеримую степень верности или преимущества в задержках. В противном случае структура графа сокращается.

Возникающие сбои

Потеря прерываний без точек контроля; циклы в маршрутизаторе; ложные аргументы, генерируемые инструментами; вымышленные рёбра, создаваемые извлекателями графов; веса фьюжн, настроенные в ноутбуках, которые так и не проверялись в фиксированных конфигурациях.

Этапный путь с порогами

  1. Реализовать граф управления + гибридный метод поиска.
  2. Собрать информацию о сбоях, помеченных как связи против чанкинга.
  3. Добавить граф знаний только для проверенных многократных переходов.
  4. Провести тестирование с оценками по уровням, а не сравнением результатов работы LLM в парах.

Чему следует не доверять

Утверждениям о том, что «графы всегда более совершенны», показателям успеха демо-версий без аудита на предмет предвзятости, а также конструкциям с множеством агентов, которые не могут показать изменения количества токенов.

Храните настройки для принятия решений маршрутизатором и возобновления прерванных операций в CI. Рассматривайте хранилища контрольных точек как производственные данные с резервными копиями. При добавлении GraphRAG измеряйте изменение количества токенов в реальных условиях перед тем, как радоваться количеству сущностей.

Составьте руководства по устранению застрявших прерываний и одиноких потоков.

Предпочитайте меньше узлов с четкими обязанностями вместо глубоких иерархий.

Записывайте выборы ребер для последующей обработки с целью создания детерминистичных маршрутизаторов.

Отделяйте трафик оценки от потоков клиентов в хранилище контрольных точек.

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

Документируйте, какой граф — управляющий или данных — соответствует каждому слайду.

Составьте руководства по устранению застрявших прерываний и одиноких потоков.

Предпочитайте меньше узлов с четкими обязанностями вместо глубоких иерархий.

Записывайте выборы ребер для последующей обработки с целью создания детерминистичных маршрутизаторов.

Разделяйте трафик оценки от потоков клиентов в механизме проверки.

Пересмотрите значение максимальной одновременности при появлении сбоев в показателях обслуживания.

Задокументируйте, что означает каждый слайд — контрольная или данных графика.

Напишите руководства по работе с застрявшими прерываниями и потоками-сиротами.

Предпочитайте меньше узлов с четкими обязанностями вместо глубоких иерархий.

Записывайте выборы на ребрах сети для последующей преобразования в детерминистичные маршрутизаторы.

Разделяйте трафик оценки от потоков клиентов в механизме проверки.

Пересмотрите значение максимальной одновременности при появлении сбоев в показателях обслуживания.

Задокументируйте, что означает каждый слайд — контрольная или данных графика.

Напишите руководства по работе с застрявшими прерываниями и потоками-сиротами.

Предпочитайте меньше узлов с четкими обязанностями вместо глубоких иерархий.

Записывайте выборы на ребрах сети для последующей преобразования в детерминистичные маршрутизаторы.

Разделяйте трафик оценки от потоков клиентов в механизме проверки.

Пересмотрите значение максимальной одновременности при появлении сбоев в показателях обслуживания.

Задокументируйте, что означает каждый слайд — контрольная или данных графика.

Напишите руководства по работе с застрявшими прерываниями и потоками-сиротами.

Предпочитайте меньше узлов с четкими обязанностями вместо глубоких иерархий.

Записывайте выборы на ребрах сети для последующей преобразования в детерминистичные маршрутизаторы.

Разделяйте трафик оценки от потоков клиентов в механизме проверки.

Пересмотрите значение максимальной одновременности при появлении сбоев в показателях обслуживания.

Задокументируйте, что означает каждый слайд — контрольная или данных графика.

Напишите руководства по работе с застрявшими прерываниями и потоками-сиротами.

Предпочитайте меньше узлов с четкими обязанностями вместо глубоких иерархий.

Записывайте выборы на ребрах сети для последующей преобразования в детерминистичные маршрутизаторы.

Разделяйте трафик оценок от потоков клиентов в механизме проверки.

Пересмотрите значение максимальной одновременности при появлении сбоев в показателях обслуживания.

Опишите, какой график — управляющий или данных — отражает каждый слайд.

Размещайте сопоставленные показатели оценок и отказов рядом с показателем задержки, чтобы стоимость и качество отображались на одном листе.

Размещайте сопоставленные показатели оценок и отказов рядом с показателем задержки, чтобы стоимость и качество отображались на одном листе.

Размещайте сопоставленные показатели оценок и отказов рядом с показателем задержки, чтобы стоимость и качество отображались на одном листе.

Размещайте сопоставленные показатели оценок и отказов рядом с показателем задержки, чтобы стоимость и качество отображались на одном листе.

Размещайте сопоставленные показатели оценок и отказов рядом с показателем задержки, чтобы стоимость и качество отображались на одном листе.

Размещайте сопоставленные показатели оценок и отказов рядом с показателем задержки, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одной таблице.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.

Храните сопоставленные оценки и показатели отклонений рядом с задержкой, чтобы стоимость и качество отображались на одном листе.