# Статус проекта на 2026-04-13 Файл сохранен под историческим именем `STATUS_2026-04-12.md`, но содержимое актуализировано по коду и тестам на 2026-04-13. ## 1) Что уже стабильно в compute-слое - В runtime закреплены exact-маршруты подтвержденного среза на дату: - `payables_confirmed_as_of_date` (`address_payables_confirmed_as_of_date_v1`) - `receivables_confirmed_as_of_date` (`address_receivables_confirmed_as_of_date_v1`) - `vat_payable_confirmed_as_of_date` (`address_vat_payable_confirmed_as_of_date_v1`) - `vat_liability_confirmed_for_tax_period` (`address_vat_liability_confirmed_tax_period_v1`) - `open_contracts_confirmed_as_of_date` (`address_open_contracts_confirmed_as_of_date_v1`) - Для exact-сценариев зафиксирован контракт: - `requested_result_mode = confirmed_balance` - `result_mode = confirmed_balance` - `capability_route_mode = exact` - Для открытых договоров прямой бизнес-вопрос больше не идет в heuristic shortlist: - exact-вопросы маршрутизируются в `open_contracts_confirmed_as_of_date`; - `list_open_contracts` сохранен как диагностический heuristic-слой, а не как substitute для exact-ответа. - Для exact-интентов ожидания маршрутов закреплены в: - `docs/TECH/address_route_expectations_v1.json` ## 2) Что доведено в follow-up и presentation-слое - Короткие follow-up-вопросы продолжают использовать дату среза из контекста, если новая дата явно не задана. - Для debt/VAT/open-contracts контуров сохранена схема `LLM-first normalize -> deterministic compute route`. - Для exact-кейса открытых договоров presentation-слой стал бизнесовее: - появился `net/gross` слой поверх точного среза; - одна детальная строка = один договор, один контрагент, один тип открытого остатка; - смешанные экономические смыслы не склеиваются в одну строку; - отдельными блоками вынесены `финансовые/специальные` и `спорные/некачественно нормализованные` позиции. - Для open-contracts exact-core отделен от heuristic diagnostics: улучшения бизнес-вывода больше не требуют менять сам route. ## 3) Что уже покрыто тестами - Актуальный целевой regression-gate: - `llm_normalizer/backend/tests/addressQueryRuntimeM23.test.ts` - `llm_normalizer/backend/tests/assistantLivingRouter.test.ts` - `llm_normalizer/backend/tests/assistantWave17RunRegression20260411.test.ts` - Текущий кодовый результат: - `367/367` PASS. - В тестах отдельно закрыты: - exact routing для `open_contracts_confirmed_as_of_date`; - отсутствие silent degrade в heuristic для прямого exact-запроса; - business-view блоков `net/gross` и вынос грязных сущностей в спорный блок. ## 4) Известные ограничения (не считать поломкой exact-core) - `query_shape` в части exact-кейсов может оставаться `UNKNOWN` при корректном `intent`; сам вычислительный маршрут при этом работает корректно. - В exact-кейсе открытых договоров главный остаточный риск теперь не в маршрутизации, а в качестве бизнес-сущностей: - неидеальная идентичность `contract_label` / `counterparty_label`; - грязные аналитики по счету `76`; - дальнейшее улучшение executive-summary поверх уже точного среза. - `list_open_contracts` по-прежнему heuristic и должен использоваться только как диагностический слой. - `COMPOUND_FACTUAL_QUERY` остается detection-only: multi-intent execution в runtime пока не включен. ## 5) Что в приоритете дальше 1. НДС-контур: усилить exact evidence layer для ответов “НДС к уплате / обязательство за период/на дату”. 2. Открытые договоры: усилить quality gates для `contract/counterparty identity`, особенно на `76` и специальных расчетах. 3. UI-ответы: довести exact business view до executive-summary уровня без потери доказательности. 4. Compound factual queries: не расширять домены раньше, чем появится контролируемый multi-intent execution. ## 6) Быстрый smoke-check (ручной) 1. `какие есть открытые договора на май 2020` 2. `а по ним кто нам должен и кому должны мы?` 3. `скок надо ндс платить на март 2020` 4. `а на эту же дату` Ожидаемое поведение: - для 1 — exact route `open_contracts_confirmed_as_of_date`, `confirmed_balance`, без подмены на heuristic shortlist; - для 2 — follow-up c сохранением даты и корректным переключением домена; - для 3/4 — exact VAT/payables route с переносом даты среза, если пользователь не задал новую.