26 KiB
Да, давай сделаем следующий прогон уже не “на каноничных вопросиках”, а на более злой, предметной и местами провокационной выборке — ближе к тому, как человек реально разговаривает с бухгалтерским ассистентом. И да, архитектуру отчёта тоже сразу зафиксируем, чтобы на выходе был один читаемый MD-файл, который одновременно:
- удобно читать человеку,
- удобно парсить машине,
- удобно сравнивать между прогонами. Опираюсь на выжимку из разговора с главбухом: ядро ценности — не ввод первички, а контроль, сверка, поиск расхождений, анализ счетов, предзакрытие периода и вопросно-ответный интерфейс поверх нормализованной модели 1С.
Что предлагаю сделать
Новый прогон собрать как Benchmark v2 / Creative Stress Run, где вопросы будут:
- более длинные;
- более “человеческие”;
- с доменной неоднозначностью;
- с причинно-следственными цепочками;
- с несколькими сущностями сразу;
- с формулировками не “из теста”, а ближе к живому главбуху.
И на выходе генерировать один отчёт .md следующего типа:
Архитектура итогового отчёта
Имя файла
benchmark_creative_stress_run_accounting_assistant_YYYY-MM-DD.md
Структура файла
1. Паспорт прогона
Короткий верхний блок:
# Creative Stress Benchmark Run — Accounting Assistant
## Паспорт
- run_id: creative_stress_run_2026-03-23
- dataset_version: semantic_v2 + router_fix
- questions_total: 40
- benchmark_profile: creative_hard_human_like
- generated_from: accounting_automation_structured_notes
- mode: validation / stress / pilot-readiness
- executor: <pipeline or person>
- overall_status: pass / pass_with_notes / fail
2. Executive summary
Коротко по-человечески:
- что проверяли;
- что в целом показал прогон;
- где система сильна;
- где ещё спотыкается;
- готовность к следующему этапу.
3. Сводные метрики
Машиночитаемо и читаемо одновременно:
## Сводные метрики
- route_mismatch_count:
- degraded_answers_count:
- batch_route_count:
- live_mcp_drilldown_count:
- hybrid_store_plus_live_count:
- store_canonical_count:
- store_feature_risk_count:
- avg_latency_ms:
- p95_latency_ms:
- pass_rate:
- strongest_zone:
- weakest_zone:
4. Сводка по классам вопросов
Разбивка:
- heavy_analytical
- cross_entity
- drilldown_explain
- period_close_risk
- document_reconciliation
- rule_based_account_control
- anomaly_probe
- ambiguous_human_query
5. Детальный блок Q/A
И вот это главный кусок. Для каждого вопроса — отдельный кейс в одном и том же формате.
Формат одного кейса в отчёте
Вот рекомендованный шаблон.
---
question_id: QH-01
question_class: cross_entity
difficulty: hard
domain_tags: [60, 62, сверка, документы, проводки, period_close]
expected_route: hybrid_store_plus_live
actual_route:
route_match:
latency_ms:
decision_flags:
needs_exact_object_trace:
needs_causal_chain:
needs_cross_entity_join:
needs_full_period_aggregation:
needs_ranking:
needs_anomaly_summary:
needs_runtime_truth:
freshness_sensitive:
ambiguous_object_scope:
store_sufficiency_confident:
precomputed_aggregate_available:
store_sufficiency:
canonical_sufficient:
feature_sufficient:
risk_sufficient:
freshness_ok:
aggregate_level_ok:
ranking_ready:
explanation_ready:
reason_codes: []
answer_quality:
status: pass / partial / fail
confidence: high / medium / low
degraded: false
---
## QH-01. [Короткое название кейса]
**Вопрос:**
Покажи, по каким покупателям у нас на конец июня висят отгрузки без оплаты, и сразу свяжи это с реализациями, договорами и проводками, чтобы было видно, где именно хвост и чем он подтверждается.
**Что хотел проверить этот вопрос:**
Проверка связки 62 ↔ 90 ↔ документы реализации ↔ оплаты ↔ договоры ↔ проводки, то есть не плоский факт, а причинная цепочка.
**Почему вопрос сложный:**
Требует одновременно:
- cross-entity join,
- causal stitching,
- period-end cut,
- объяснимую цепочку источников.
**Как система должна была это понять:**
Это не simple factual и не чистый trend.
Это causal cross-entity scenario → ожидается `hybrid_store_plus_live`.
**Куда ожидали маршрут:**
`hybrid_store_plus_live`
**Куда реально пошёл маршрут:**
`...`
**Почему это корректно / некорректно:**
Короткий человеческий комментарий.
**Краткий ход решения системы:**
1. Определила периодный срез.
2. Определила сущности: покупатель, реализация, оплата, договор, проводка.
3. Проверила sufficiency canonical store.
4. Поняла, что нужен causal join.
5. Пошла в hybrid.
**Что ожидали увидеть в ответе:**
- список покупателей;
- сумма хвоста;
- документы реализации;
- отсутствие / наличие оплат;
- связка с договором;
- подтверждающие проводки;
- указание проблемного периода.
**Что реально получили:**
Короткий summary ответа.
**Вердикт по кейсу:**
pass / partial / fail
**Замечания:**
Что докрутить, если что.
Почему такой формат хороший
Он одновременно:
- удобен для ручного чтения;
- достаточно структурирован для diff между прогонами;
- хранит route-логику рядом с человеческим комментарием;
- позволяет потом быстро делать выжимку по классам ошибок;
- пригоден как для внутреннего техотчёта, так и для демонстрации зрелости системы.
Новый набор вопросов для Creative Stress Run
Ниже даю 40 вопросов, уже заметно более жёстких и ближе к реальному бухгалтерам-режиму. Они построены из тех болей, что были в выжимке: 01/02, 97, 41, 51, 60, 62, 90, 10, сверки, незакрытые хвосты, предзакрытие периода, ошибки дат, отсутствие документов, причинная цепочка.
Блок A. Предзакрытие периода
QH-01
Собери мне предзакрытие июня по-человечески: какие счета сейчас выглядят самыми проблемными, где хвосты, где незакрытые куски и что надо проверить в первую очередь, если период закрывать сегодня.
Класс: heavy_analytical
Ожидаемый route: batch_refresh_then_store
QH-02
Покажи не просто проблемные счета за июнь, а объясни, почему именно они попали в риск-зону: чем это вызвано, какими документами и какими типовыми ошибками это может быть связано.
Класс: heavy_analytical
Ожидаемый route: batch_refresh_then_store
QH-03
Сделай рейтинг самых опасных хвостов на конец июня, чтобы было видно, какие из них могут реально аукнуться при сдаче отчётности, а какие просто технический шум.
Класс: heavy_analytical
Ожидаемый route: batch_refresh_then_store
QH-04
Есть ли у нас на конец июня такие расхождения, которые визуально небольшие, но по природе похожи на системную ошибку, а не на разовый косяк?
Класс: heavy_analytical / anomaly_probe
Ожидаемый route: batch_refresh_then_store
QH-05
Если бы ты был главбухом и у тебя было полчаса перед закрытием периода, какие пять зон ты бы открыл первыми и почему?
Класс: heavy_analytical + explain
Ожидаемый route: batch_refresh_then_store
Блок B. 60 / 62 / сверки / хвосты
QH-06
Покажи, по каким поставщикам у нас не бьются взаиморасчёты, и разложи это не только по суммам, а по конкретным документам, оплатам и отсутствующим закрывающим.
Класс: cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-07
По каким покупателям у нас есть отгрузка, но нет оплаты или нормального закрытия, и как это выглядит в цепочке документ → проводка → взаиморасчёт?
Класс: cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-08
Где по 60 и 62 счётам у нас не просто долг висит, а есть ощущение, что отсутствует какой-то первичный документ, из-за чего цепочка развалилась?
Класс: cross_entity / explain
Ожидаемый route: hybrid_store_plus_live
QH-09
Покажи мне контрагентов, по которым расхождение выглядит подозрительно: то есть не обычная задержка, а именно такая история, где документы, оплаты и сальдо друг другу не соответствуют.
Класс: cross_entity / anomaly_probe
Ожидаемый route: hybrid_store_plus_live
QH-10
Сделай список контрагентов, по которым акт сверки явно напрашивается в первую очередь, и покажи, из каких документов и хвостов это складывается.
Класс: cross_entity / period_close_risk
Ожидаемый route: hybrid_store_plus_live
Блок C. 41 / товары / приход / реализация
QH-11
Где товар уже ушёл в реализацию, а нормального прихода под него в учёте не видно, и как эта проблема выглядит по датам, документам и поставщикам?
Класс: cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-12
Найди мне такие продажи, где себестоимость или приход выглядят подозрительно, как будто накладная запоздала, документ не дошёл или дата заведена криво.
Класс: cross_entity / anomaly_probe
Ожидаемый route: hybrid_store_plus_live
QH-13
Покажи отрицательные или аномальные остатки по товарам не просто списком, а с объяснением, какая цепочка событий к этому привела.
Класс: drilldown_explain / cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-14
Есть ли такие товарные позиции, где проблема тянется не один раз, а повторяется по схожему паттерну: продажа раньше прихода, странный разрыв по датам, неподложенные документы?
Класс: heavy_analytical / anomaly_probe
Ожидаемый route: batch_refresh_then_store
QH-15
Покажи, какие складские или товарные хвосты на конец июня больше всего искажают картину периода.
Класс: heavy_analytical
Ожидаемый route: batch_refresh_then_store
Блок D. 97 / расходы будущих периодов
QH-16
По каким расходам будущих периодов у нас задан срок так, что списание либо идёт криво, либо вообще не должно было так выглядеть?
Класс: rule_based_account_control
Ожидаемый route: store_feature_risk
QH-17
Покажи мне расходы будущих периодов, где ошибка, скорее всего, сидит в дате начала, окончания или вообще в неверно указанном годе.
Класс: rule_based_account_control / anomaly_probe
Ожидаемый route: store_feature_risk
QH-18
Есть ли такие записи на 97 счёте, которые вроде заведены, но по ним нет нормального ежемесячного списания, и с какими исходными документами это связано?
Класс: cross_entity / explain
Ожидаемый route: hybrid_store_plus_live
QH-19
Покажи банковские гарантии, лицензии и похожие истории, которые сидят на 97, но выглядят так, будто срок действия и срок списания друг другу противоречат.
Класс: rule_based_account_control / cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-20
Сделай мне обзор по 97 счёту: что там сейчас выглядит как реальный риск периода, а что просто требует внимания, но не горит.
Класс: heavy_analytical
Ожидаемый route: batch_refresh_then_store
Блок E. 01 / 02 / ОС / амортизация
QH-21
Какие основные средства выглядят заведёнными так, будто амортизационная группа или срок амортизации выбраны сомнительно?
Класс: rule_based_account_control
Ожидаемый route: store_feature_risk
QH-22
Покажи карточки ОС, где параметры похожи на ручную ошибку: группа одна, срок другой, логика начисления не бьётся.
Класс: rule_based_account_control / anomaly_probe
Ожидаемый route: store_feature_risk
QH-23
Есть ли у нас объекты, по которым амортизация должна была идти, но не идёт, и чем это подтверждается в карточке и движениях?
Класс: cross_entity / explain
Ожидаемый route: hybrid_store_plus_live
QH-24
Покажи самые подозрительные случаи по ОС, которые потенциально опасны не потому, что сумма большая, а потому что логика учёта объекта выглядит криво.
Класс: heavy_analytical / explain
Ожидаемый route: batch_refresh_then_store
QH-25
Есть ли системный паттерн ошибок в заведении основных средств, а не просто единичные косяки?
Класс: heavy_analytical / anomaly_probe
Ожидаемый route: batch_refresh_then_store
Блок F. 51 / банк / выписки / отражение в учёте
QH-26
Покажи движения по банку, где есть ощущение, что выписка, документ и проводка не собрались в нормальную цепочку.
Класс: cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-27
Есть ли у нас банковские движения, которые визуально выглядят нормально, но по логике счёта 51 оставляют некорректный хвост или ломают инвариант счёта?
Класс: rule_based_account_control / anomaly_probe
Ожидаемый route: store_feature_risk
QH-28
Найди операции по банку, где, скорее всего, проблема не в сумме, а в том, что что-то не было проведено или не туда легло.
Класс: drilldown_explain / cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-29
Сделай мне список самых подозрительных банковских кейсов июня с коротким объяснением по каждому: в чём суть риска и что бы ты проверил руками первым.
Класс: heavy_analytical
Ожидаемый route: batch_refresh_then_store
QH-30
Покажи, где движение по банку есть, а нормального отражения в учёте не видно, либо наоборот — в учёте что-то есть, а банковской логики под этим не хватает.
Класс: cross_entity
Ожидаемый route: hybrid_store_plus_live
Блок G. 90 / 62 / реализация и неоплата
QH-31
Какие реализации на конец июня зависли без оплаты и уже выглядят не как нормальная отсрочка, а как потенциально проблемный хвост?
Класс: heavy_analytical / cross_entity
Ожидаемый route: batch_refresh_then_store
QH-32
Покажи связку реализация → оплата → договор → проводки по самым крупным незакрытым отгрузкам.
Класс: cross_entity
Ожидаемый route: hybrid_store_plus_live
QH-33
Где по реализации хвост образовался не из-за отсутствия денег как таковых, а из-за разрыва документов, дат или отражения?
Класс: cross_entity / explain
Ожидаемый route: hybrid_store_plus_live
QH-34
Сделай рейтинг самых неприятных незакрытых реализаций: чтобы было видно и сумму, и возраст хвоста, и признаки, что это именно проблема учёта, а не обычная операционка.
Класс: heavy_analytical
Ожидаемый route: batch_refresh_then_store
QH-35
Покажи мне такие кейсы по 90/62, где всё выглядит почти нормально, но если копнуть глубже, видно, что период закрывается на кривой связке.
Класс: anomaly_probe / cross_entity
Ожидаемый route: hybrid_store_plus_live
Блок H. 10 / материалы / списание
QH-36
Что сейчас лежит на 10 счёте так, будто это уже давно просится в списание или хотя бы в ручную проверку?
Класс: rule_based_account_control
Ожидаемый route: store_feature_risk
QH-37
Покажи материалы, по которым можно заподозрить нелогичный остаток: они висят, но движения и хозяйственная логика вокруг них выглядят странно.
Класс: rule_based_account_control / anomaly_probe
Ожидаемый route: store_feature_risk
QH-38
Свяжи по нескольким подозрительным материалам остаток, документы, движения и возможный сценарий, почему они зависли.
Класс: cross_entity / explain
Ожидаемый route: hybrid_store_plus_live
Блок I. Специально неоднозначные человеческие вопросы
QH-39
Где у нас вообще “пахнет ручной ошибкой”, а не нормальной хозяйственной жизнью? Не по одному счёту, а в целом по июню.
Класс: heavy_analytical / anomaly_probe / ambiguous_human_query
Ожидаемый route: batch_refresh_then_store
QH-40
Что сейчас в июне выглядит как история, которую бухгалтер потом будет долго и нервно распутывать, если не проверить заранее?
Класс: heavy_analytical / period_close_risk / ambiguous_human_query
Ожидаемый route: batch_refresh_then_store
Как я предлагаю оформить ответы в прогоне
Не просто “вопрос — route — pass/fail”, а именно гибридный стиль:
Для человека
- нормальный текст вопроса;
- короткое объяснение, что этот вопрос вообще проверяет;
- почему он сложный;
- короткий человеческий вердикт по кейсу.
Для машины
question_idquestion_classexpected_routeactual_routeroute_matchdecision_flagsstore_sufficiencylatency_msanswer_quality.statusdegradedreason_codes
Это как раз даст вам отчёт, который можно:
- читать глазами,
- diff’ать между версиями,
- позже использовать как validation corpus.
Очень важная рекомендация
Я бы в этот новый прогон добавил ещё одно поле, которого раньше, скорее всего, не хватало:
**Проверяемая бухгалтерская гипотеза:**
Какую именно предметную гипотезу должен был подтвердить или опровергнуть ассистент.
Пример:
- “по 97 счёту ошибка сидит в дате начала/окончания”;
- “по 41 счёту продажа опередила приход”;
- “по 60/62 счёту хвост образован отсутствием документа, а не просто неоплатой”.
Это сильно улучшит читаемость именно для предметников.
Мой практический совет по следующему прогону
Сделайте следующий прогон не на всех 40 сразу, а в два прохода:
Проход 1 — 15 вопросов
- QH-01, 03, 06, 07, 11, 16, 18, 21, 23, 26, 29, 31, 33, 39, 40
Это даст:
- heavy,
- cross-entity,
- anomaly,
- rule-based,
- ambiguous human questions.
Проход 2 — все 40 После того как увидите, где он ещё хромает на творческих и длинных формулировках.
Короткий вывод
Да, следующий benchmark надо делать уже не “академическим”, а человекообразным и предметно-злым. И лучший формат отчёта для этого — один MD-файл с карточками кейсов, где рядом живут:
- вопрос,
- предметный смысл,
- ожидаемый маршрут,
- фактический маршрут,
- краткий ход рассуждения системы,
- и итоговый вердикт по качеству ответа. Вся эта логика напрямую вытекает из разговора с главбухом: ваша ценность — это контрольный и аналитический слой по реальным бухгалтерским болям, а не игрушечные вопросы “найди документ номер N”.
Если хочешь, следующим сообщением я сразу превращу это в готовую болванку отчёта в markdown, уже целиком, чтобы вы просто вставили туда результаты прогона.