# ТЗ для Codex — Validation Run по Accounting Analytics Layer, Orchestration и LLM-like Benchmark

## 1. Назначение документа

Документ фиксирует следующий этап работ после успешного подтверждения runtime semantic bridge к 1С.

Цель этапа:
- довести **жирный monthly slice** до полноценно посаженного аналитического слоя;
- провести **жёсткую верификацию онтологии и mapping-слоя**;
- формализовать **оркестрацию источников данных**;
- подготовить и выполнить **контролируемый benchmark-run** по набору бухгалтерских вопросов;
- выполнить этот benchmark **не на реальной 4o mini**, а через Codex в режиме максимально близкой эмуляции её поведения;
- получить подробный инженерный отчёт о качестве маршрутизации, скорости и полноте ответов.

---

## 2. Контекст

На предыдущих этапах подтверждено:
- runtime semantic bridge работает;
- read-only режим подтверждён;
- критические цепочки `document -> posting -> account`, `posting -> subconto[1..3]`, `saldo -> movements` доказаны;
- `1c-mcp-toolkit` принят со статусом `adopt with restrictions`;
- общая архитектура analytics layer спроектирована, но orchestration-service и насыщение store ещё не доведены до production-ready уровня.

Сейчас задача не в том, чтобы искать новый мост, а в том, чтобы:
1. проверить, что analytics-layer действительно сел на реальный жирный срез;
2. проверить, что ontology и mapping не врут;
3. задать правила оркестрации;
4. провести честный тест пользовательских вопросов.

---

## 3. Главная цель этапа

Этап должен ответить на четыре вопроса:

### Вопрос 1
Насколько качественно и полно **жирный месячный snapshot** садится в canonical/feature/risk слои?

### Вопрос 2
Насколько онтология и mapping-layer действительно покрывают:
- сущности 1С;
- взаимосвязи между ними;
- типизацию связей;
- критические бухгалтерские цепочки?

### Вопрос 3
Можно ли формализовать orchestration так, чтобы система:
- не делала лишних тяжёлых live-вызовов;
- не слала LLM в неправильные источники;
- умела различать простые, сложные, batch-heavy и drill-down сценарии?

### Вопрос 4
Как система ведёт себя на реальном наборе бухгалтерских вопросов по времени, маршруту и качеству ответа, если прогон имитирует поведение `4o mini` без фактического расхода дорогих токенов?

---

## 4. Общая задача для Codex

Codex должен выполнить полный цикл:

1. взять **один жирный monthly slice** как эталонный тестовый срез;
2. довести его до корректной посадки в canonical/feature/risk store;
3. провести **жёсткий ontology + mapping audit**;
4. формализовать orchestration policy;
5. подготовить benchmark-runner под список бухгалтерских вопросов;
6. выполнить benchmark-run в режиме **LLM-like simulation**, максимально приближенном к `4o mini`;
7. вернуть детальный инженерный отчёт.

---

## 5. Жирный slice — обязательный эталон

### Требование
Взять **один жирный месячный snapshot** как основной тестовый срез.

Текущий приоритет:
- июнь 2020, если именно он уже зафиксирован как наиболее объёмный и показательный.

### Что требуется по slice
- посадить его в canonical store полностью;
- посадить в feature store;
- прогнать через risk/anomaly слой;
- убедиться, что slice даёт не просто хранение, а реальный материал для аналитики.

### Что проверить
- количество сущностей;
- количество связей;
- количество типизированных связей;
- количество `Unknown` и иных деградированных target/source entity;
- сколько объектов попало в canonical;
- сколько признаков/feature записано;
- сколько anomaly/risk сигналов получилось;
- какие классы сущностей реально покрыты.

---

## 6. Жёсткая проверка онтологии и mapping

## 6.1. Цель
Провести взрослую верификацию ontology/mapping-слоя.

### Нельзя ограничиться:
- “сущности вообще есть”;
- “связи вообще есть”.

### Нужно проверить:
- корректна ли типизация сущностей;
- корректна ли типизация связей;
- насколько стабильно ложатся документы, проводки, счета, субконто, контрагенты, договоры, склады, номенклатура, регистры;
- насколько корректно разрешаются ссылки;
- нет ли систематических ложных сопоставлений;
- где ontology/mapping врёт.

## 6.2. Обязательные метрики ontology audit
Codex должен посчитать и отдать:
- общее число entity classes;
- число covered entity classes;
- число uncovered entity classes;
- число relation types;
- число корректно типизированных relations;
- число `Unknown` и аналогичных деградированных маппингов;
- число конфликтных mappings;
- процент link coverage;
- процент semantic coverage;
- список самых проблемных типов сущностей и связей.

## 6.3. Жёсткая цель
Онтология должна быть:
- переносимой;
- не привязанной к одной компании;
- пригодной для других 1С-контуров, как минимум того же класса;
- не собранной “под один snapshot вручную”.

---

## 7. Формализация оркестрации

## 7.1. Цель
Сформировать правила orchestration layer:
- что считается простым запросом;
- что считается drill-down запросом;
- что считается heavy analytical запросом;
- когда идти в OData;
- когда идти в MCP/runtime bridge;
- когда работать по snapshot/canonical store;
- когда использовать feature/risk/anomaly store;
- когда запускать batch refresh/analysis.

## 7.2. Источники, которые надо развести
Нужно развести по ролям:

### A. OData
Использовать как:
- discovery layer;
- быстрый широкий обзор структуры;
- fallback для типовых сущностей, если это быстрее и дешевле;
- лёгкий слой навигации.

### B. MCP / Runtime Bridge
Использовать как:
- live semantic bridge;
- drill-down;
- доступ к документу, проводке, счёту, subconto, saldo;
- точечные запросы;
- ситуации, когда нужен актуальный runtime truth.

### C. Snapshots / Canonical Store
Использовать как:
- основной слой для already-loaded истории;
- источник для быстрых аналитических ответов;
- источник для cross-period анализа;
- источник для вопросов, где не нужна свежесть в секунду.

### D. Feature / Risk / Anomaly Store
Использовать как:
- быстрый источник готовых аналитических выводов;
- anomaly-first ответы;
- risk-based маршрутизацию;
- summarized insight layer.

## 7.3. Обязательный результат
Codex должен оформить:
- **decision tree оркестрации**;
- список правил маршрутизации;
- источники по приоритету;
- fallback logic;
- timeout budget;
- max retrieval budget;
- политика retry/replan;
- политика отказа от неадекватно тяжёлых live-запросов.

---

## 8. LLM-like benchmark без реальной 4o mini

## 8.1. Главная идея
Нужно выполнить benchmark-run так, чтобы Codex **приблизил своё поведение к профилю `4o mini`**, но без реального расхода токенов OpenAI.

## 8.2. Важно
Это не “настоящая 4o mini”.
Это controlled emulation / simulation.

## 8.3. Требование к Codex
Codex должен надеть на себя **ограничения и поведенческие правила**, максимально похожие на рабочий режим дешёвой быстрой модели:

### Ограничения по мышлению и маршрутизации
- не уходить в бесконечную глубину;
- делать компактную декомпозицию вопроса;
- не генерировать чрезмерно сложные планы, если вопрос можно решить проще;
- отдавать предпочтение уже существующим store-layer ответам, если они достаточны;
- использовать live bridge только по необходимости;
- минимизировать число round-trips;
- минимизировать контекст;
- не строить “идеальную академическую” стратегию, если хватит практичной.

### Ограничения по ответу
- отвечать короче и практичнее;
- не делать длинных философских объяснений;
- давать инженерно полезный ответ;
- явно помечать, когда ответ построен на store, а когда на live data.

### Ограничения по стоимости / latency simulation
Codex должен действовать так, как будто:
- запрос дорогой;
- шаги надо экономить;
- retrieval budget ограничен;
- слишком тяжёлые запросы надо сворачивать или бить на этапы.

## 8.4. Что нужно получить
Не “магически стать 4o mini”, а:
- получить benchmark в **сравнимом дешёвом профиле рассуждения**.

---

## 9. Набор бухгалтерских вопросов

Codex должен прогнать набор **35 тестовых бухгалтерских вопросов**.

### Требования к набору
Вопросы должны быть:
- разношёрстные;
- от простых к тяжёлым;
- от конкретных к общим;
- от точечных к аналитическим;
- от single-object к whole-slice;
- покрывать разные маршруты системы.

### Классы вопросов
Нужно включить:

1. **Простые factual**
   - по документу;
   - по счёту;
   - по проводке;
   - по контрагенту;
   - по договору.

2. **Explain / drill-down**
   - объяснить saldo;
   - объяснить движение;
   - показать цепочку документа;
   - показать, почему запись попала туда.

3. **Cross-entity**
   - связать документ и проводки;
   - контрагента и договор;
   - номенклатуру и склад;
   - регистр и первичный документ.

4. **Period / trend**
   - изменения за месяц;
   - сравнение с предыдущим периодом;
   - необычные движения;
   - всплески активности.

5. **Anomaly / control**
   - найти аномалии;
   - найти нетипичные корреспонденции;
   - найти незакрытые хвосты;
   - найти коллизии.

6. **Heavy analytical**
   - анализ всего среза;
   - анализ всех счетов;
   - анализ компаний/контрагентов;
   - поиск отклонений от baseline.

7. **Ambiguous / fuzzy**
   - криво сформулированные вопросы;
   - вопросы с недостатком контекста;
   - вопросы, где нужна маршрутизация и уточнение.

---

## 10. Что должен вернуть benchmark

Для **каждого** вопроса Codex должен вернуть запись со следующими полями:

1. `question_id`
2. `question_text`
3. `question_class`
4. `expected_route`
5. `actual_route`
6. `sources_used`
7. `refresh_needed`
8. `latency_ms`
9. `planning_time_ms`
10. `retrieval_time_ms`
11. `response_generation_time_ms`
12. `context_size`
13. `answer_text`
14. `answer_quality_assessment`
15. `route_quality_assessment`
16. `issues_detected`
17. `recommended_fix`

---

## 11. Отчёт по итогам benchmark-run

Codex должен собрать **максимально подробный отчёт**, где будут:

### 11.1. Общая статистика
- число вопросов;
- среднее время ответа;
- медиана;
- p90;
- p95;
- средний размер контекста;
- число live-route вопросов;
- число store-route вопросов;
- число неправильных маршрутизаций;
- число деградированных ответов.

### 11.2. Анализ качества оркестрации
- где маршрутизация сработала правильно;
- где OData использован правильно;
- где MCP использован правильно;
- где snapshot/store было бы лучше;
- где система дёрнула не тот источник;
- где слишком дорого / долго.

### 11.3. Анализ онтологии и мэппинга
- где ontology помогла;
- где mapping сломал ответ;
- какие типы сущностей и связей проблемны;
- какие relation patterns надо чинить.

### 11.4. Итоговые рекомендации
- что надо чинить первым;
- что можно отложить;
- какие маршруты уже production-usable;
- какие маршруты нельзя пока давать живому пользователю.

---

## 12. Deliverables

Codex должен вернуть:

1. `slice_ingestion_report.md`
2. `ontology_mapping_audit.md`
3. `orchestration_policy_spec.md`
4. `llm_like_simulation_profile.md`
5. `benchmark_questions_35.md`
6. `benchmark_run_results.json`
7. `benchmark_run_report.md`
8. `benchmark_route_analysis.md`
9. `benchmark_final_verdict.md`

---

## 13. Критерии приёмки

Этап считается успешным, если:

1. жирный slice полноценно посажен в canonical/feature/risk store;
2. ontology + mapping прошли жёсткий аудит;
3. orchestration policy формализована;
4. Codex выполнил benchmark-run в LLM-like профиле;
5. по каждому вопросу есть route trace, timing и quality trace;
6. можно честно сказать:
   - какие маршруты уже хорошие;
   - какие требуют доработки;
   - где bottleneck;
   - где слабое место онтологии;
   - где слабое место оркестрации.

---

## 14. Резюме

Это не этап “подключили LLM и надеемся на чудо”.

Это этап:
- доведения жирного среза;
- взрослой проверки ontology/mapping;
- формализации orchestration;
- controlled benchmark-run с модель-подобным профилем;
- инженерной оценки готовности системы к реальному пользовательскому контуру.

Главная задача:
**получить честную, измеримую и трассируемую картину того, насколько система готова к следующему шагу.**
