593 lines
32 KiB
Markdown
593 lines
32 KiB
Markdown
# ТЗ: MVP-мост между 1С и AI-ассистентом бухгалтерии через OData → канонический слой → MCP
|
||
|
||
## 1. Контекст и цель
|
||
|
||
### 1.1. Что дано
|
||
- Есть отдельная **изолированная копия** базы 1С для экспериментов. Это **не прод**, но контур должен быть приближен к реальному.
|
||
- По предоставленным скриншотам рабочая среда на Windows организована так:
|
||
- `X:\1C\8.3.27.1936` — установленная платформа 1С.
|
||
- `X:\1C\NDC_1C` — целевой отдельный контур под нашу интеграцию и сервисы.
|
||
- `X:\1C\База бухгалтерии` — файловая база 1С.
|
||
- Внутри `X:\1C\База бухгалтерии` присутствует `1Cv8.1CD`, то есть сейчас это **файловая информационная база**, а не SQL-серверная.
|
||
- Есть `.dt`-выгрузка и уже развёрнутая копия базы.
|
||
- Есть Windows-машина, 1С 8.3, Visual Studio Code / Codex, но **нет 1С-разработчика**.
|
||
|
||
### 1.2. Что нужно получить
|
||
Нужно построить **прототип интеграционного контура**, в котором:
|
||
1. 1С доступна **только на чтение**.
|
||
2. Внешний сервис может **самостоятельно получать данные из 1С**, без ручных выгрузок таблиц и отчётов.
|
||
3. Слой интеграции видит не только отдельные сущности, но и **их взаимосвязи**.
|
||
4. Поверх данных можно строить:
|
||
- каноническую модель / "онтологию" бухгалтерии,
|
||
- поисково-аналитический слой,
|
||
- в дальнейшем — **MCP-сервер** для ассистента.
|
||
5. Решение должно быть **минимально инвазивным** к базе и пригодным для перехода от тестового контура к боевому сценарию.
|
||
|
||
### 1.3. Почему выбран такой путь
|
||
По материалам исследования, для подобного MVP ключевой поворот — уйти от ручных выгрузок и перейти к модели **постоянного доступа к данным**, с канонической моделью поверх 1С и прикладными сценариями типа сверок, поиска оснований проводок и контроля аномалий. Для старта быстрее всего использовать **OData** как стандартный интерфейс доступа к сущностям 1С, а дальше уже строить внешний адаптер и AI-слой. fileciteturn4file0
|
||
|
||
Также в исследовании отмечено, что готовой практичной OSS-онтологии 1С-бухгалтерии почти нет, поэтому MVP надо строить вокруг **собственной канонической модели**: `Posting`, `Document`, `Account`, `Subconto`, `Counterparty`, `Contract` и т. д. fileciteturn4file0turn4file1
|
||
|
||
---
|
||
|
||
## 2. Целевая архитектура MVP
|
||
|
||
### 2.1. Архитектурный принцип
|
||
На первом этапе делаем не "AI внутри 1С", а **внешний безопасный мост**:
|
||
|
||
```text
|
||
1С (read-only) -> OData -> Python adapter -> Canonical layer -> MCP/API -> Codex / ассистент
|
||
```
|
||
|
||
### 2.2. Почему именно так
|
||
Это даёт:
|
||
- минимум вмешательства в конфигурацию 1С;
|
||
- быстрый запуск на копии базы;
|
||
- возможность проверить, насколько OData реально раскрывает объекты и связи;
|
||
- возможность потом заменить или усилить внешний слой, не ломая 1С;
|
||
- прямой путь к MCP через OData bridge.
|
||
|
||
Исследование прямо указывает, что MVP-дружелюбный путь — это **OData → внешний коннектор → канонический слой**, а MCP-мосты можно использовать как ускоритель для AI-слоя поверх живых данных. fileciteturn4file0turn4file1
|
||
|
||
### 2.3. Что считается успешным результатом этапа
|
||
Успех этапа = на Windows-машине развёрнут рабочий read-only контур, который умеет:
|
||
- подключаться к 1С без ручных выгрузок;
|
||
- перечислять доступные сущности 1С через OData metadata;
|
||
- читать основные объекты бухгалтерии;
|
||
- извлекать связи между документами, проводками, счетами, контрагентами и договорами;
|
||
- отдавать эти данные наружу через локальный API / MCP-интерфейс.
|
||
|
||
---
|
||
|
||
## 3. Основная гипотеза и ограничения
|
||
|
||
### 3.1. Основная гипотеза
|
||
Гипотеза этапа: **стандартный интерфейс 1С OData даст достаточно данных и связей**, чтобы:
|
||
1. построить MVP-каноническую модель;
|
||
2. дать ассистенту доступ к прикладным сущностям;
|
||
3. подготовить переход к MCP без разработки тяжёлой подсистемы внутри 1С.
|
||
|
||
### 3.2. Что надо доказать тестами
|
||
Нужно проверить:
|
||
- доступны ли через OData основные типы сущностей;
|
||
- доступны ли регистры, документы и ссылочные поля;
|
||
- можно ли строить цепочки типа:
|
||
- документ -> движения / проводки,
|
||
- проводка -> счёт / субконто,
|
||
- документ -> контрагент / договор,
|
||
- документ -> основание / связанный объект,
|
||
- отчётный вопрос -> набор OData-запросов.
|
||
|
||
### 3.3. Что считаем риском
|
||
Главный риск: OData отдаёт только часть сущностей или отдаёт их слишком "плоско", без достаточной глубины взаимосвязей. В этом случае OData остаётся полезным как быстрый тестовый слой, но для production-уровня может понадобиться более жёсткая схема: HTTP-сервисы 1С, шлюз `1c-gateway` или "агент внутри 1С" через интеграционные подсистемы. fileciteturn4file0turn4file1
|
||
|
||
---
|
||
|
||
## 4. Подготовка среды для работы
|
||
|
||
### 4.1. Структура каталогов
|
||
Использовать следующий контур:
|
||
|
||
```text
|
||
X:\1C\
|
||
8.3.27.1936\ # платформа 1С
|
||
База бухгалтерии\ # файловая база-копия с 1Cv8.1CD
|
||
NDC_1C\ # наш рабочий контур интеграции
|
||
```
|
||
|
||
### 4.2. Что создать в `X:\1C\NDC_1C`
|
||
Нужно подготовить структуру проекта:
|
||
|
||
```text
|
||
X:\1C\NDC_1C\
|
||
docs\
|
||
scripts\
|
||
logs\
|
||
config\
|
||
odata_probe\
|
||
canonical_layer\
|
||
mcp\
|
||
tests\
|
||
tmp\
|
||
```
|
||
|
||
### 4.3. Что должно быть установлено на машине
|
||
Обязательно:
|
||
- Windows с доступом к текущей файловой базе 1С.
|
||
- 1С 8.3.27.x.
|
||
- Python 3.11+.
|
||
- Git.
|
||
- VS Code.
|
||
- curl или PowerShell Invoke-WebRequest.
|
||
|
||
Желательно:
|
||
- Postman или Bruno для проверки HTTP/OData.
|
||
- jq для разбора JSON.
|
||
- Docker Desktop — опционально, если позже будем поднимать отдельные сервисы контейнерами.
|
||
|
||
### 4.4. Правило доступа
|
||
Сразу зафиксировать архитектурный принцип:
|
||
- **никакой записи в 1С** на этапе MVP;
|
||
- только **read-only** пользователь / сервисный доступ;
|
||
- никакого выполнения операций изменения документов, проведения, перепроведения, записи справочников.
|
||
|
||
Если библиотека или мост по умолчанию поддерживает `create/edit`, все такие операции должны быть **запрещены на уровне конфигурации доступа и на уровне кода адаптера**. Это особенно важно, поскольку `belov38/1c-odata` демонстрирует не только чтение, но и create/edit-сценарии. Исследование рекомендует использовать read-only контур и тестировать мост именно как безопасный канал чтения. fileciteturn4file0
|
||
|
||
### 4.5. Что нужно сделать в 1С до начала кода
|
||
1. Определить, можно ли включить / опубликовать OData для этой базы.
|
||
2. Создать или выделить отдельного технического пользователя.
|
||
3. Ограничить ему права до чтения.
|
||
4. Зафиксировать, какая именно конфигурация используется:
|
||
- Бухгалтерия предприятия, редакция 2.0 / 3.0 или иная;
|
||
- файловая или серверная база;
|
||
- версия платформы;
|
||
- список основных подсистем.
|
||
5. В Конфигураторе открыть конфигурацию и зафиксировать наличие:
|
||
- документов,
|
||
- справочников,
|
||
- регистров бухгалтерии,
|
||
- регистров накопления,
|
||
- планов счетов,
|
||
- общих модулей,
|
||
- ролей.
|
||
|
||
Результат этого шага — короткий технический отчёт `docs/1c_inventory.md`.
|
||
|
||
---
|
||
|
||
## 5. Техническая стратегия реализации
|
||
|
||
### 5.1. Этап 1 — OData probe
|
||
Первая задача — не строить сразу продукт, а быстро проверить: **что реально видит OData в этой базе**.
|
||
|
||
Для этого делаем маленький сервис / набор скриптов `odata_probe`, который:
|
||
- подключается к OData endpoint;
|
||
- тянет `$metadata`;
|
||
- перечисляет entity sets;
|
||
- пробует читать первые записи по ключевым сущностям;
|
||
- логирует ошибки доступа и ограничения.
|
||
|
||
### 5.2. Этап 2 — canonical layer
|
||
После OData probe строим не "полную онтологию мира", а **каноническую схему MVP**.
|
||
|
||
Минимальный состав сущностей:
|
||
- `Organization`
|
||
- `Document`
|
||
- `Posting`
|
||
- `Account`
|
||
- `Subconto`
|
||
- `Counterparty`
|
||
- `Contract`
|
||
- `BankAccount`
|
||
- `Item`
|
||
- `Department`
|
||
- `Period`
|
||
- `RegisterMovement`
|
||
|
||
Это соответствует подходу из исследования: вместо поиска готовой 1С-онтологии нужно строить свою минимальную модель вокруг проводки, документа и измерений. fileciteturn4file0turn4file1
|
||
|
||
### 5.3. Этап 3 — прикладной query/API слой
|
||
После нормализации поднять API, которое отвечает не сырыми OData-объектами, а прикладными выборками:
|
||
- документы за период;
|
||
- проводки по счёту;
|
||
- движения по контрагенту;
|
||
- документы по договору;
|
||
- цепочка связей по документу;
|
||
- объяснение остатка по счёту;
|
||
- поиск нетипичных корреспонденций.
|
||
|
||
### 5.4. Этап 4 — MCP слой
|
||
После подтверждения, что OData даёт достаточную глубину, добавить MCP-слой.
|
||
|
||
На этом этапе возможны два пути:
|
||
1. **Быстрый мост от OData к MCP**.
|
||
2. Собственный MCP-сервер поверх уже нормализованного API.
|
||
|
||
Для MVP начать с готового моста, но не считать его финальным production-решением.
|
||
|
||
---
|
||
|
||
## 6. Инструменты и репозитории, которые берём в работу
|
||
|
||
### 6.1. Базовый инструмент первого этапа
|
||
#### `belov38/1c-odata`
|
||
GitHub: `https://github.com/belov38/1c-odata` citeturn910914search0turn910914search4
|
||
|
||
Зачем берём:
|
||
- самый быстрый путь проверить 1С OData без разработки тяжёлого клиента;
|
||
- подходит для Python-пробника и первых сервисных вызовов;
|
||
- позволяет быстро читать сущности и проверять фильтры/select/top/skip.
|
||
|
||
Что важно:
|
||
- библиотека умеет и запись, поэтому использовать её **только в режиме чтения**, с ограничением на уровне прав пользователя и без вызова write-операций.
|
||
|
||
### 6.2. Инструмент второго этапа, если OData окажется рабочим
|
||
#### `SysUtils/1c-gateway`
|
||
GitHub: `https://github.com/SysUtils/1c-gateway` citeturn910914search3
|
||
|
||
Зачем нужен:
|
||
- если захочется более типизированный фасад;
|
||
- если понадобится GraphQL / gRPC / нормальный middleware над OData;
|
||
- если нужно преобразовать кириллицу и сырой OData в более удобный internal API.
|
||
|
||
### 6.3. Кандидаты на MCP-слой
|
||
#### `oisee/odata_mcp_go`
|
||
GitHub: `https://github.com/oisee/odata_mcp_go` citeturn910914search2turn910914search18
|
||
|
||
#### `lemaiwo/odata-mcp-proxy`
|
||
GitHub: `https://github.com/lemaiwo/odata-mcp-proxy` (репозиторий подтверждён в стороннем описании экосистемы MCP/OData) citeturn910914search9turn910914search13
|
||
|
||
Зачем нужны:
|
||
- если OData endpoint живой, можно быстро превратить его в MCP tools;
|
||
- это даст ассистенту возможность ходить по данным как по инструментам, а не как по файлам;
|
||
- это ускоряет прототип и позволяет проверить формат взаимодействия ассистента с живой системой.
|
||
|
||
### 6.4. Резервный путь, если OData не взлетит
|
||
Как fallback держать в уме:
|
||
- FoxyLink;
|
||
- Universal Tools;
|
||
- Connector.
|
||
|
||
Их не брать первым шагом, но держать как план B, если OData не даст нужную глубину или окажется недоступен. Исследование прямо раскладывает эти инструменты как сценарий "когда OData недоступен или неудобен". fileciteturn4file0turn4file1
|
||
|
||
---
|
||
|
||
## 7. Что именно нужно сделать Codex'у
|
||
|
||
### 7.1. Создать рабочую структуру проекта
|
||
В `X:\1C\NDC_1C` развернуть каркас:
|
||
- `docs/`
|
||
- `scripts/`
|
||
- `config/`
|
||
- `odata_probe/`
|
||
- `canonical_layer/`
|
||
- `mcp/`
|
||
- `tests/`
|
||
- `logs/`
|
||
|
||
### 7.2. Подготовить Python-окружение
|
||
Примерно так:
|
||
|
||
```powershell
|
||
cd X:\1C\NDC_1C
|
||
py -3.11 -m venv .venv
|
||
.\.venv\Scripts\activate
|
||
python -m pip install --upgrade pip
|
||
pip install odata1cw requests lxml pydantic fastapi uvicorn python-dotenv
|
||
```
|
||
|
||
Если пакет `odata1cw` не ставится из PyPI, Codex должен:
|
||
1. клонировать `belov38/1c-odata`;
|
||
2. проверить способ локальной установки;
|
||
3. зафиксировать реальный рабочий способ установки в `docs/setup.md`.
|
||
|
||
### 7.3. Создать `.env.example`
|
||
Нужен шаблон параметров:
|
||
|
||
```env
|
||
ONEC_BASE_URL=http://localhost
|
||
ONEC_INFOBASE=AccountingBase
|
||
ONEC_USERNAME=readonly_user
|
||
ONEC_PASSWORD=change_me
|
||
ONEC_ODATA_PATH=/odata/standard.odata/
|
||
ONEC_TIMEOUT=30
|
||
ONEC_VERIFY_TLS=false
|
||
```
|
||
|
||
Если OData будет опубликован не на localhost, а на другой машине / IIS / Apache, переменные должны это учитывать.
|
||
|
||
### 7.4. Написать OData probe
|
||
Создать минимальный набор скриптов:
|
||
|
||
- `odata_probe/fetch_metadata.py`
|
||
- `odata_probe/list_entity_sets.py`
|
||
- `odata_probe/probe_entities.py`
|
||
- `odata_probe/dump_sample_links.py`
|
||
|
||
#### `fetch_metadata.py`
|
||
Должен:
|
||
- сходить в `$metadata`;
|
||
- сохранить XML в `logs/metadata.xml`;
|
||
- вытащить список entity sets;
|
||
- сохранить summary в `logs/entity_sets.json`.
|
||
|
||
#### `list_entity_sets.py`
|
||
Должен:
|
||
- прочитать metadata;
|
||
- вывести сущности в консоль и в файл;
|
||
- отметить подозрительно важные сущности по ключевым словам:
|
||
- `Документ`
|
||
- `Справочник`
|
||
- `Регистр`
|
||
- `ПланСчетов`
|
||
- `Хозрасчетный`
|
||
- `Контрагенты`
|
||
- `Договоры`
|
||
- `Организации`
|
||
- `БанковскиеСчета`
|
||
|
||
#### `probe_entities.py`
|
||
Должен:
|
||
- по списку ключевых сущностей сделать запросы `top=3..10`;
|
||
- проверить, какие поля реально приходят;
|
||
- определить, есть ли ссылочные поля на другие сущности;
|
||
- сохранить результаты в `logs/probe_report.json`.
|
||
|
||
#### `dump_sample_links.py`
|
||
Должен:
|
||
- выбрать несколько сущностей;
|
||
- собрать карту полей, которые выглядят как ссылки / GUID / navigation fields;
|
||
- показать, можно ли двигаться от документа к связанным объектам.
|
||
|
||
### 7.5. Реализовать канонический слой
|
||
Создать `canonical_layer/models.py` и `canonical_layer/mappers.py`.
|
||
|
||
Нужна первая версия канонической схемы:
|
||
|
||
```python
|
||
Organization
|
||
Counterparty
|
||
Contract
|
||
Account
|
||
Subconto
|
||
Document
|
||
Posting
|
||
RegisterMovement
|
||
Period
|
||
```
|
||
|
||
Для каждой сущности описать:
|
||
- `source_entity`
|
||
- `source_id`
|
||
- `display_name`
|
||
- ключевые реквизиты
|
||
- набор ссылок на связанные сущности
|
||
|
||
### 7.6. Реализовать тестовый API
|
||
Создать FastAPI-приложение `canonical_layer/app.py`.
|
||
|
||
Минимальные эндпоинты:
|
||
- `GET /health`
|
||
- `GET /metadata/entity-sets`
|
||
- `GET /documents?from=...&to=...`
|
||
- `GET /documents/{id}`
|
||
- `GET /postings?account=...&from=...&to=...`
|
||
- `GET /counterparties/{id}/documents`
|
||
- `GET /graph/document/{id}`
|
||
|
||
`/graph/document/{id}` должен быть первым прикладным доказательством, что система видит **связи**, а не только плоские записи.
|
||
|
||
### 7.7. Подготовить черновой MCP-слой
|
||
В папке `mcp/` подготовить два варианта:
|
||
|
||
#### Вариант A — через готовый OData→MCP мост
|
||
- описать конфиг для `oisee/odata_mcp_go` или `lemaiwo/odata-mcp-proxy`;
|
||
- проверить, можно ли поднять read-only инструменты поверх OData.
|
||
|
||
#### Вариант B — собственный MCP поверх канонического API
|
||
Если готовый мост не подходит, заложить каркас собственного MCP-сервера, который работает уже не с OData напрямую, а с нашими нормализованными эндпоинтами.
|
||
|
||
---
|
||
|
||
## 8. Подробное описание этапов работ
|
||
|
||
### Этап A. Инвентаризация 1С-копии
|
||
**Цель:** понять, что именно перед нами и к чему мы подключаемся.
|
||
|
||
Нужно:
|
||
1. В Конфигураторе открыть конфигурацию.
|
||
2. Зафиксировать список подсистем и ключевых объектов.
|
||
3. Составить инвентаризационный файл:
|
||
- тип базы: файловая;
|
||
- путь к базе;
|
||
- версия платформы;
|
||
- название конфигурации;
|
||
- основные разделы учёта.
|
||
|
||
**Результат:** `docs/1c_inventory.md`
|
||
|
||
### Этап B. Включение и проверка OData
|
||
**Цель:** доказать, что стандартный интерфейс OData вообще доступен.
|
||
|
||
Нужно:
|
||
1. Настроить публикацию OData.
|
||
2. Убедиться, что endpoint отвечает.
|
||
3. Проверить доступ к `$metadata`.
|
||
4. Протестировать авторизацию read-only пользователем.
|
||
|
||
**Результат:** `logs/metadata.xml`, `logs/entity_sets.json`
|
||
|
||
### Этап C. Пробный доступ к сущностям
|
||
**Цель:** понять, достаточно ли глубины для бухгалтерского AI-слоя.
|
||
|
||
Нужно проверить доступ хотя бы к части:
|
||
- организации;
|
||
- контрагенты;
|
||
- договоры;
|
||
- документы;
|
||
- планы счетов;
|
||
- движения / регистры / проводки.
|
||
|
||
**Результат:** `logs/probe_report.json`
|
||
|
||
### Этап D. Тест связей
|
||
**Цель:** понять, можно ли строить граф связей.
|
||
|
||
Нужно доказать минимум такие переходы:
|
||
- от документа к контрагенту;
|
||
- от документа к договору;
|
||
- от документа к организации;
|
||
- от документа к движениям / проводкам;
|
||
- от проводки к счетам и аналитикам.
|
||
|
||
**Результат:** `docs/linkage_report.md`
|
||
|
||
### Этап E. Каноническая модель
|
||
**Цель:** зафиксировать минимальную внутреннюю онтологию MVP.
|
||
|
||
Нужно:
|
||
- описать сущности;
|
||
- описать поля;
|
||
- описать связи;
|
||
- описать правила маппинга из OData в канонический слой.
|
||
|
||
**Результат:** `docs/canonical_model.md`
|
||
|
||
### Этап F. API и прикладные сценарии
|
||
**Цель:** доказать практическую применимость.
|
||
|
||
Нужно реализовать минимум 5 сценариев:
|
||
1. Найти документы по периоду.
|
||
2. Найти проводки по счёту.
|
||
3. Показать документы контрагента.
|
||
4. Показать граф связей документа.
|
||
5. Подготовить базовый сценарий "объясни остаток / основание проводки".
|
||
|
||
**Результат:** рабочий FastAPI-прототип.
|
||
|
||
### Этап G. MVP MCP
|
||
**Цель:** подготовить переход к ассистенту.
|
||
|
||
Нужно:
|
||
- проверить готовый OData→MCP мост;
|
||
- если взлетает — задокументировать способ запуска;
|
||
- если не взлетает — заложить собственный MCP поверх канонического API.
|
||
|
||
**Результат:** `docs/mcp_strategy.md`
|
||
|
||
---
|
||
|
||
## 9. Что именно надо проверить по OData
|
||
|
||
Это ключевой блок, потому что от него зависит весь следующий путь.
|
||
|
||
### 9.1. Проверки доступа
|
||
Нужно ответить на вопросы:
|
||
- отвечает ли `$metadata`;
|
||
- сколько entity sets публикуется;
|
||
- есть ли ограничения по ролям;
|
||
- не режет ли OData важные сущности;
|
||
- не отваливаются ли запросы по таймауту.
|
||
|
||
### 9.2. Проверки структуры
|
||
Нужно понять:
|
||
- насколько имена сущностей и полей понятны;
|
||
- есть ли navigation properties / ссылочные поля;
|
||
- можно ли восстановить структуру документа и его связей;
|
||
- как представлены планы счетов и аналитики.
|
||
|
||
### 9.3. Проверки пригодности для ассистента
|
||
Нужно ответить на главный вопрос:
|
||
|
||
> OData даёт только плоские сущности или даёт достаточно данных и связей, чтобы строить рассуждение и навигацию по бухгалтерскому контексту?
|
||
|
||
Если ответ **да**, то OData остаётся базовым мостом.
|
||
Если ответ **частично**, OData остаётся probe-слоем, а production-слой проектируется через middleware или собственный сервис.
|
||
Если ответ **нет**, идти в fallback: HTTP-сервисы 1С / агент в 1С / 1c-gateway / интеграционные подсистемы.
|
||
|
||
---
|
||
|
||
## 10. Что считать успешным исходом тестов
|
||
|
||
### Успех уровня 1
|
||
- OData опубликован.
|
||
- `belov38/1c-odata` подключается.
|
||
- metadata читается.
|
||
- entity sets видны.
|
||
|
||
### Успех уровня 2
|
||
- читаются ключевые бухгалтерские сущности;
|
||
- у сущностей видны связующие поля;
|
||
- можно собрать простую цепочку связей.
|
||
|
||
### Успех уровня 3
|
||
- построен канонический слой;
|
||
- API возвращает прикладные сущности;
|
||
- можно показать `document graph` и базовый `posting trace`.
|
||
|
||
### Успех уровня 4
|
||
- MCP-слой может ходить по этим данным как по инструментам;
|
||
- ассистент получает не статическую выгрузку, а живой read-only доступ к слою.
|
||
|
||
---
|
||
|
||
## 11. Что не делать на этом этапе
|
||
|
||
Не делать:
|
||
- прямую запись в базу;
|
||
- любые write-операции через OData;
|
||
- попытку сразу завязать ассистента на прод;
|
||
- попытку сразу построить "идеальную онтологию всего предприятия";
|
||
- перенос всех данных в огромную SQL-схему без проверки ценности;
|
||
- тяжёлое внедрение внутренних 1С-подсистем до проверки, что OData реально недостаточен.
|
||
|
||
---
|
||
|
||
## 12. Прикладные сценарии MVP, на которые надо ориентироваться
|
||
|
||
Исследование рекомендует строить MVP вокруг 3–5 операционно полезных сценариев, а не вокруг абстрактного "чат-бота про бухгалтерию". Наиболее подходящие сценарии здесь такие: fileciteturn4file0turn4file1
|
||
|
||
1. **Найти документы и проводки за период.**
|
||
2. **Показать движения по счёту / контрагенту / договору.**
|
||
3. **Показать, какие документы сформировали остаток или отклонение.**
|
||
4. **Найти нетипичные корреспонденции / аномальные паттерны.**
|
||
5. **Найти цепочку “документ -> основание -> движения -> аналитики”.**
|
||
|
||
Именно эти сценарии лучше использовать как критерий, подходит ли выбранный мост для будущего ассистента.
|
||
|
||
---
|
||
|
||
## 13. Deliverables
|
||
|
||
По итогам первой итерации Codex должен выдать:
|
||
|
||
1. `docs/1c_inventory.md`
|
||
2. `docs/setup.md`
|
||
3. `docs/canonical_model.md`
|
||
4. `docs/linkage_report.md`
|
||
5. `docs/mcp_strategy.md`
|
||
6. `logs/metadata.xml`
|
||
7. `logs/entity_sets.json`
|
||
8. `logs/probe_report.json`
|
||
9. Python-код OData probe
|
||
10. FastAPI-прототип канонического слоя
|
||
11. Черновик конфигурации MCP-моста
|
||
|
||
---
|
||
|
||
## 14. Краткое управленческое решение по стеку
|
||
|
||
На текущем этапе решение такое:
|
||
|
||
- **Стартуем с `belov38/1c-odata`** как самого короткого пути проверить 1С OData. citeturn910914search0turn910914search4
|
||
- **Строим внешний read-only адаптер**, а не тяжёлый агент внутри 1С. Это соответствует MVP-подходу из исследования. fileciteturn4file0turn4file1
|
||
- **Проверяем глубину связей**, а не просто чтение сущностей.
|
||
- **Плавно идём к MCP**, но сначала через доказательство пригодности OData.
|
||
- Если OData не даст нужной глубины, **переходим к более жёсткому слою**: `1c-gateway`, HTTP-сервисы 1С или агент внутри 1С. fileciteturn4file0turn4file1
|
||
|
||
---
|
||
|
||
## 15. Команда Codex'у в одном абзаце
|
||
|
||
Развернуть в `X:\1C\NDC_1C` read-only MVP-контур интеграции с 1С на базе OData. Сначала доказать техническую доступность и полноту `belov38/1c-odata`: получить metadata, перечислить сущности, протестировать доступ к ключевым объектам бухгалтерии и проверить, видны ли взаимосвязи между документами, проводками, счетами, контрагентами и договорами. Затем построить минимальный канонический слой и локальный API. После этого подготовить черновой MCP-слой. Главный критерий — не просто чтение записей, а способность строить прикладную навигацию и reasoning по живому read-only слою данных.
|