NODEDC_1C/docs/ARCH/1 - bootstrap_pipeline_new_...

8.8 KiB
Raw Permalink Blame History

Bootstrap Runbook: Полный пайплайн запуска с нуля (новая машина)

Дата: 2026-03-23
Статус: рабочий контур подтвержден (adopt with restrictions)
Цель: поднять наш текущий live read-only bridge к 1С с нуля на новой Windows-машине.

1. Что в итоге должно работать

После выполнения шагов должны одновременно работать:

  1. Python proxy (onec_mcp_toolkit_proxy) на http://127.0.0.1:6003
  2. 1С:Предприятие с открытой обработкой MCP_Toolkit.epf в режиме Прокси
  3. Успешные read-only вызовы:
    • get_metadata
    • execute_query
    • get_link_of_object
    • get_object_by_link

Важно: это live request/response мост, не оффлайн-реплика.

2. Архитектура (минимум)

Клиент/ассистент -> HTTP -> Python Proxy (6003) -> /1c/poll,/1c/result -> MCP_Toolkit.epf -> База 1С

3. Что нужно на новой машине

  1. Windows (рекомендуемо 64-bit).
  2. Установленная платформа 1С (в нашем контуре: 8.3.27.1936).
  3. Тестовая база 1С (БП 2.0) и рабочий пользователь с read-only правами.
  4. Git.
  5. Miniconda.
  6. Доступ к репозиторию ROCTUP/1c-mcp-toolkit.

4. Рекомендованная структура папок

X:\1C\
  NDC_1C\
    docs\
    external\
      1c-mcp-toolkit\

Если диска X: нет, можно использовать любой путь, но держать единую структуру.

5. Установка и подготовка окружения

5.1 Клонировать toolkit

git clone https://github.com/ROCTUP/1c-mcp-toolkit X:\1C\NDC_1C\external\1c-mcp-toolkit

5.2 Проверить .epf артефакты

Get-ChildItem X:\1C\NDC_1C\external\1c-mcp-toolkit\build

Ожидаемые файлы:

  • MCP_Toolkit.epf (x64)
  • MCP_Toolkit_x86.epf (x86 fallback)

5.3 Создать изолированную conda-среду

& 'C:\Users\<USER>\miniconda3\Scripts\conda.exe' create -y -n ndc_1c_toolkit python=3.11

5.4 Установить зависимости proxy

& 'C:\Users\<USER>\miniconda3\envs\ndc_1c_toolkit\python.exe' -m pip install --upgrade pip
& 'C:\Users\<USER>\miniconda3\envs\ndc_1c_toolkit\python.exe' -m pip install -r X:\1C\NDC_1C\external\1c-mcp-toolkit\requirements.txt

6. Запуск proxy (read-only профиль)

Запускать из PowerShell:

$env:PORT='6003'
$env:TIMEOUT='180'
$env:ALLOW_DANGEROUS_WITH_APPROVAL='false'
$env:ANONYMIZATION_ENABLED='false'
$env:RESPONSE_FORMAT='json'
$env:LOG_LEVEL='INFO'
& 'C:\Users\<USER>\miniconda3\envs\ndc_1c_toolkit\python.exe' -m onec_mcp_toolkit_proxy

Проверка:

Invoke-WebRequest http://127.0.0.1:6003/health -UseBasicParsing

Ожидаемо: HTTP 200 и status=healthy.

7. Запуск 1С и обработчика

7.1 Открыть 1С:Предприятие

Открывать в режиме Предприятия (не Конфигуратор).
Если UI обработки не появляется в обычном режиме, запускать в управляемом приложении.

7.2 Открыть внешнюю обработку

Файл -> Открыть -> X:\1C\NDC_1C\external\1c-mcp-toolkit\build\MCP_Toolkit.epf

7.3 Настроить форму MCP Toolkit

  1. Режим: Прокси
  2. Адрес сервера: http://127.0.0.1:6003
  3. Идентификатор канала: default (или ваш фиксированный channel)
  4. Нажать Подключиться

Ожидаемо в логе формы:

  • Подключение к серверу: http://127.0.0.1:6003
  • Успешное подключение к серверу

8. Smoke-проверка после подключения

8.1 Metadata

Invoke-WebRequest "http://127.0.0.1:6003/api/get_metadata?channel=default&meta_type=Документ&limit=20" -UseBasicParsing

Ожидаемо: success=true.

8.2 Query

$body = @{ query = "ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК Test"; limit = 1 } | ConvertTo-Json
Invoke-WebRequest "http://127.0.0.1:6003/api/execute_query?channel=default" `
  -Method POST -ContentType "application/json; charset=utf-8" -Body $body -UseBasicParsing

Ожидаемо: success=true, Test=1.

  1. Получить object_description (например, из execute_query).
  2. Вызвать get_link_of_object.
  3. Передать ссылку в get_object_by_link.

Ожидаемо: объект документа читается.

9. Ежедневный рабочий цикл (операторский)

Старт дня

  1. Запустить proxy.
  2. Проверить /health.
  3. Запустить 1С и открыть MCP_Toolkit.epf.
  4. Проверить статус Подключено.
  5. Выполнить быстрый test query.

Стоп дня

  1. Отключиться в форме MCP Toolkit.
  2. Закрыть 1С.
  3. Остановить proxy (Ctrl+C/Stop-Process).

10. Траблшутинг (частые проблемы)

10.1 Ошибка Не могу установить соединение в форме 1С

Причина: proxy не запущен или не слушает 6003.
Проверка:

Invoke-WebRequest http://127.0.0.1:6003/health -UseBasicParsing

10.2 timeout waiting for 1C response на API

Причина: нет активного .epf в том же channel, форма закрыта, либо канал не совпадает.

10.3 UI не показывается при открытии .epf

Обработка имеет управляемые формы.
Запускать в 1С:Предприятии (управляемый режим), не в Конфигураторе для рабочего контура.

Нюанс текущего ответа proxy; вызов рабочий, ссылку можно нормализовать при постобработке.

11. Жёсткие правила безопасности

  1. Только read-only операции.
  2. Не использовать execute_code.
  3. Не выставлять 6003 во внешний интернет.
  4. Держать ALLOW_DANGEROUS_WITH_APPROVAL=false.
  5. Работать под отдельным техпользователем с минимальными правами чтения.

12. Что это даёт и чего не даёт

Даёт

  • Живой доступ к текущим данным 1С по запросу.
  • Runtime metadata + deep read semantics (документы, проводки, субконто, сальдо).

Не даёт

  • Мгновенный “весь срез компании” в одном запросе для тяжёлой аналитики.
  • Автоматическую фоновой репликацию без отдельного слоя витрин/снэпшотов.

13. Рекомендованный next step после bootstrap

  1. Добавить one-click старт скрипт (Start-NDC1CBridge.ps1).
  2. Добавить one-click smoke скрипт (Test-NDC1CBridge.ps1).
  3. Поднять плановую аналитическую витрину (например, 15/60 минут) для тяжёлых задач.

Итог bootstrap: на новой машине поднимаем контур за последовательность
Proxy -> MCP_Toolkit.epf -> Подключение -> Smoke
и получаем рабочий live read-only мост к 1С на текущем этапе проекта.


ЗАПУСК ПРКСИ ПЕРЕД ПОДКЛЮЮЧЕНИЕМ К ТУЛКИТ 1С


Запускай так в PowerShell:

$env:PORT='6003' $env:TIMEOUT='180' $env:ALLOW_DANGEROUS_WITH_APPROVAL='false' $env:ANONYMIZATION_ENABLED='false' $env:RESPONSE_FORMAT='json' $env:LOG_LEVEL='INFO' & 'C:\Users\DCTOUCH\miniconda3\envs\ndc_1c_toolkit\python.exe' -m onec_mcp_toolkit_proxy

Проверка, что поднялся:

Invoke-WebRequest http://127.0.0.1:6003/health -UseBasicParsing

Должен вернуть status":"healthy".

Остановить:

в том же окне Ctrl + C.