НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2836] AIProvider/AIModel policy и routing📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Новые возможности | 2026.3 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: ИРБИС 128. Модуль AI - Искусственный интеллект
Завершено: 07.09.2026 08:48
Нужно расширить существующие модули AIProvider и AIModel так, чтобы они стали authoritative source для provider/model metadata, capabilities, availability, model policy и explainable routing AI-операций ИРБИС 128.
Выбор модели не должен быть строкой в коде, произвольной настройкой профиля или неявным fallbackом. Runtime AIоперации должен получать объяснимое решение: какой provider и model выбраны, почему они допустимы для политики операции, какие ограничения учтены, какие fallback-кандидаты отклонены, какие emergency switches или feature flags применены и почему запуск безопасен или запрещен.
В системе уже должен существовать AIgovernance core: реестр AIопераций, policy runtime, preflight/governance API, explainable decision, AISuggestion, audit envelope и invariant ручного подтверждения результата. Этот срез не заменяет AI runtime, а дает ему промышленный источник данных о поставщиках, моделях, policy и routing.
AIProvider описывает поставщика модели: локальный runtime, внешний endpoint, внутренний сервис, offlineprovider, тестовый provider или другой поддержанный тип. AIModel описывает конкретную модель у providerа: model id, capabilities, limits, стоимость, качество, контекст, language support, availability и lifecycle. AIModelPolicy описывает правила выбора модели для операции или проекта.
Основное промышленное правило: AI runtime не должен обращаться к provider adapter до того, как routing policy проверила права, feature flags, external/local/offline ограничения, readiness, cost/context limits, secrets readiness и emergency switches. Если безопасного route нет, операция должна завершиться explainable denial до вызова provider-а.
Нужно реализовать промышленную модель записи AIProvider. Provider должен иметь stable key, название, описание, provider type, endpoint kind, local/external/offline признаки, supported auth mode, ссылку на secret reference без хранения секрета в записи provider-а, capabilities, runtime requirements, health endpoint или диагностический способ проверки, owner/admin group, status, lifecycle, system/user origin, Help reference и TestA reference.
Нужно реализовать промышленную модель записи AIModel. Model должна иметь stable key, provider key, provider model id, название, описание, model family, model type, supported modalities, supported languages, context window, output limits, cost profile, quality profile, latency profile, data retention class, external transfer class, tool support, structured output support, streaming support, batch support, local runtime requirements, status, lifecycle, deprecation policy, Help reference и TestA reference.
Нужно реализовать AIModelPolicy как декларативное правило выбора модели. Policy должна поддерживать allowed providers, denied providers, allowed models, denied models, required capabilities, required modalities, language policy, localonly/offlineonly/external-allowed режимы, max cost, max latency, min quality class, context requirements, fallback order, emergency switch binding, feature flag binding и поведение при отсутствии допустимого route.
Нужно реализовать explainable routing API. AI runtime должен передавать operation key, actor/context, project/workflow context, requested policy, required capabilities, approximate input size, response format requirements, trace id и режим запуска. Routing должен возвращать selected route или safe denial: выбранный provider/model, причины выбора, rejected candidates, warnings, policy decisions, readiness state, estimated cost class, external transfer decision, trace id и diagnostic codes.
Нужно запретить неявный fallback на внешнюю, платную, более дорогую, менее безопасную или более permissive модель. Любой fallback должен быть явно разрешен AIModelPolicy, должен быть объяснимым, попадать в audit и иметь диагностируемую причину: preferred model unavailable, context overflow, disabled provider, missing capability, degraded local runtime или другая структурированная причина.
Нужно поддержать localonly и offlineonly режимы. Offlineonly policy должна запрещать external providers, external tools, external memory, remote logging raw payload и fallback во внешний provider. Localonly policy должна разрешать только локальные или внутренние providerы, явно отмеченные как допустимые для локальной обработки. Нарушение этих ограничений должно быть blockerdenial до вызова provider adapter.
Нужно интегрировать provider/model routing с Security. Просмотр, создание, редактирование, публикация, deprecate/archive/block providerа или модели, просмотр endpoint metadata, запуск readinesscheck, просмотр cost diagnostics, preview routing и export должны проверяться через Security. Секреты provider-ов не должны читаться напрямую из AIProvider/AIModel; проверка доступности секрета должна идти через Secrets и возвращать только безопасный readiness state.
Нужно интегрировать provider/model routing с Secrets. AIProvider должен хранить только secret reference, secret scope и auth mode metadata. Секрет не должен попадать в export, Jira description, HealthCheck report, Observability signal, audit payload, TestA expected output или Help-пример. При отсутствии или недоступности секрета readiness должен стать failed/degraded, а routing должен отказать или выбрать fallback только по явной policy.
Нужно интегрировать provider/model routing с Flags и emergency switches. Должны быть выключатели уровня всего AI, provider-а, model family, конкретной модели, external providers, paid providers, experimental models, streaming, tools, batch и project/operation binding. Выключатель должен применяться до вызова provider adapter и фиксироваться в routing decision.
Нужно реализовать lifecycle providerа и модели: draft, active, deprecated, disabled, archived, blocked. Production routing должен использовать только active provider/model, если policy явно не разрешает dryrun или preview deprecated route. Disabled и blocked provider/model не должны использоваться runtime. Deprecated route может обслуживать pinned operation до миграции, но HealthCheck должен показывать warning.
Нужно реализовать readiness diagnostics. Проверки должны показывать доступность provider endpoint, auth secret readiness, model availability, local runtime requirements, supported capabilities, context/cost limits, health endpoint result, last successful check, degraded state, reason codes и recommended action. Readiness diagnostics не должны раскрывать секреты, raw provider response с чувствительными данными или пользовательский prompt payload.
Нужно реализовать preview и dry-run routing без вызова модели. Администратор или разработчик должен иметь возможность выбрать operation/policy, контекст проекта, required capabilities, примерный размер входа и режим внешней передачи, а затем увидеть selected route или denial, rejected candidates, fallback path, estimated cost/latency class, missing secret, disabled provider/model и diagnostic codes.
Нужно реализовать whereused для providerа, модели и policy. AIProvider/AIModel должны показывать, какие AIоперации, model policies, system definitions, TestAсценарии, Helpстраницы, workflow transitions, taskspecific operations и API methods используют provider/model/policy. Удаление, блокировка или archive используемой модели должны быть запрещены или требовать safe migration.
Нужно реализовать import/export и system definitions для provider/model/policy. Системные definitions должны поддерживать dry-run import, diff, conflict system/user copy, защиту системной записи от прямого редактирования без developer mode и пользовательскую копию там, где это разрешено. Export не должен включать secrets, raw provider responses, cost account ids, access tokens, private endpoint credentials или audit payload.
Нужно реализовать migration policy для старых provider/model/profileструктур, если live readback перед разработкой подтвердит их наличие. Миграция должна иметь dryrun, отчет различий, mapping старых provider/model keys к новым AIProvider/AIModel records, сохранение audit explainability и запрет постоянного compatibility fallback как части нового промышленного контракта.
Нужно интегрировать provider/model routing с TraceContext. Trace id должен попадать в routing request, routing decision, readiness diagnostics, HealthCheck provider results, audit envelope, AISuggestion metadata и Observability signals. AIProvider/AIModel не должны создавать собственный частный trace-идентификатор, если общий TraceContext доступен.
Нужно публиковать safe signals в Observability: routing requested, route selected, route denied, fallback used, provider disabled, model disabled, missing capability, missing secret, readiness failed, deprecated model used, external route denied, cost limit denied, context limit denied и emergency switch applied. Signals не должны содержать prompt text, user data, secrets, raw provider payload или скрытые поля.
Нужно подготовить HealthCheck provider для AIProvider/AIModel. Проверки должны находить provider без active models, model без providerа, битые secret references, disabled provider/model used by operation, deprecated route without migration plan, missing required capability, impossible policy, external fallback without explicit policy, localonly policy with external model, model без TestA/Help, outdated readiness check и dangerous permissive defaults.
Нужно подготовить TestAсценарии: successful route to active model, denied external route under offlineonly policy, denied route because missing secret, denied route because disabled provider, denied route because missing capability, fallback allowed by explicit policy, fallback denied without policy, deprecated model warning, emergency switch denial, readiness degraded state, dry-run without model call, system definition import/export and absence of secrets in logs/audit/diagnostics.
Нужно обновить Help модулей AIProvider, AIModel и AI-governance. Документация должна объяснять администратору и разработчику provider/model registry, model policy, route preview, fallback, external/local/offline режимы, emergency switches, readiness diagnostics, secret references, Security, TraceContext, Observability, HealthCheck, TestA и границы с AI core, AIPrompt, AIInputProfile, AITool и доменными модулями.
AIProvider владеет provider registry: stable provider keys, provider type, endpoint metadata, local/external/offline признаки, supported auth mode, secret reference metadata, provider capabilities, runtime requirements, provider lifecycle, provider readiness diagnostics, system definitions providerов, import/export provider definitions и providerпроверками HealthCheck.
AIModel владеет model registry: stable model keys, provider binding, provider model id, model family/type, modalities, languages, context/output limits, cost/quality/latency profiles, data retention/external transfer class, tool/structured/streaming/batch support, lifecycle, deprecation, model readiness diagnostics, system definitions моделей и provider-проверками HealthCheck.
AIModelPolicy владеет правилами выбора provider/model: allowed/denied providers/models, required capabilities, local/external/offline policy, cost/context/quality/latency limits, fallback order, emergency switch binding, feature flag binding и explainable route denial.
AI владеет governance runtime, operation registry, общей точкой запуска AI-операции, audit envelope, AISuggestion, human confirmation invariant и вызовом provider adapter после успешного routing decision. AI не должен хранить provider/model metadata как частную настройку, если она относится к AIProvider/AIModel.
AIPrompt владеет prompt registry, prompt versions, variables, response format и safe render contract. AIProvider/AIModel не рендерят prompt, не версионируют promptшаблоны и не определяют переменные promptа.
AIInputProfile и AI input/masking/consent runtime владеют сбором входного пакета, data-class policy, masking/redaction и consent. Provider/model routing может учитывать external/local/offline constraints и approximate input size, но не читает record fields, комментарии, вложения или FT напрямую.
AITool владеет tool allowlist, input/output schema, side effects, confirmation policy, required rights, limits и безопасным execution pipeline. AIProvider/AIModel могут фиксировать, поддерживает ли модель tools, но не исполняют tools и не принимают решения о side effects.
Security владеет правами, grants/denies, field/view security, service account policy, masking policy и audit доступа. AIProvider/AIModel обязаны вызывать Security для операций просмотра, редактирования, публикации, preview, export и readiness diagnostics, но не реализуют собственный параллельный механизм прав.
Secrets владеет хранением, masking, rotation, access policy и diagnostics секретов. AIProvider хранит только secret reference и auth metadata; секреты не копируются в записи AIProvider/AIModel, export, audit, Observability или Help.
Flags владеет системными feature flags и rollout policy. AIProvider/AIModel используют flag/emergency-switch binding в routing decision, но не реализуют отдельный механизм feature flags.
TraceContext владеет созданием, приемом, распространением и диагностическим объединением trace id. AIProvider/AIModel только принимают и передают trace id в routing/readiness decisions, audit и diagnostics.
Observability владеет routing, хранением, агрегацией, retention, dashboards и diagnostic packages. AIProvider/AIModel публикуют только safe signals по routing, readiness, fallback и denial decisions.
HealthCheck владеет общим механизмом запуска и агрегации проверок. AIProvider/AIModel поставляют providerпроверки для provider/model registry, policies, capabilities, secrets readiness, lifecycle, system definitions и whereused.
TestA владеет общим тестовым каркасом. AIProvider/AIModel поставляют сценарии, fixtures и expected results для routing, fallback, readiness, lifecycle, system definitions, Security decisions и absence of leakage.
Tasks и другие доменные модули владеют taskspecific AI operations, пользовательским UX, доменными ограничениями и применением подтвержденного результата. AIProvider/AIModel не должны знать внутреннюю структуру записи Tasks и не должны применять AIрезультат к доменной БД.
Не входит реализация AI-governance core, operation registry, AISuggestion, policy runtime верхнего уровня и invariant ручного подтверждения.
Не входит реализация AIInputProfile, сбор входных данных, field keys, masking/redaction, consent и external transfer policy на уровне входного пакета.
Не входит реализация AIPrompt registry, prompt versioning, prompt variables, response format и safe prompt render contract.
Не входит реализация AITool policy, allowlist инструментов, tool execution pipeline и write-tool side effects.
Не входит реализация конкретных AI-операций Tasks: классификация задачи, поиск похожих задач, резюме истории, черновик ответа или комментария.
Не входит доменный UI Tasks для показа AI-предложения, редактирования результата и применения изменений.
Не входит хранение секретов provider-ов внутри AIProvider/AIModel. Секреты должны оставаться в модуле Secrets; этот срез хранит только references и readiness state.
Не входит lifecycle delivery через EventBus, фоновое выполнение через Queue, retry/deadletter, batch processing и longrunning AI jobs.
Не входит внешний APM/SIEM, BI, capacity planning, model marketplace, обучение моделей, GPUcluster management, RAGхранилище и конкретные внешние AI-интеграции.
Не входит постоянная поддержка старого AI.ProfilesJson как compatibility fallback. Если перед реализацией будут подтверждены действующие provider/modelнастройки в старых структурах, миграция должна быть оформлена отдельным этапом с dryrun и отчетом различий.
В модулях AIProvider и AIModel есть промышленные сущности provider/model со stable key, названием, описанием, provider/model type, capabilities, local/external/offline признаками, lifecycle, readiness metadata, Help reference, TestA reference и признаками system definition.
AIProvider хранит только secret reference и auth metadata; provider secrets не сохраняются в AIProvider/AIModel, export, audit, Observability, HealthCheck, TestA output или Help examples.
AIModel описывает provider binding, provider model id, modalities, languages, context/output limits, cost/quality/latency profiles, data retention class, external transfer class, tool/structured/streaming/batch support и deprecation policy.
AIModelPolicy поддерживает allowed/denied providers/models, required capabilities, localonly/offlineonly/external-allowed режимы, max cost, max latency, min quality class, context requirements, fallback order, emergency switch binding и feature flag binding.
Routing API возвращает selected route или safe denial с provider/model, reasons, rejected candidates, warnings, policy decisions, readiness state, estimated cost class, external transfer decision, trace id и diagnostic codes.
AI runtime не вызывает provider adapter до успешного routing decision.
Неявный fallback на внешнюю, платную, более дорогую, менее безопасную или permissive модель запрещен; любой fallback разрешается только явной AIModelPolicy и фиксируется в audit.
Offline-only policy запрещает external providers, external tools, external memory, remote logging raw payload и fallback во внешний provider.
Localonly policy разрешает только локальные или внутренние providerы, явно отмеченные как допустимые для локальной обработки.
Просмотр, создание, редактирование, публикация, deprecate/archive/block, readiness-check, preview routing и export проверяются через Security.
Secrets readiness проверяется через модуль Secrets; routing безопасно отказывает или выбирает fallback только по явной policy при missing/unavailable secret.
Flags и emergency switches применяются до вызова provider adapter и отражаются в routing decision.
Поддержан lifecycle draft, active, deprecated, disabled, archived, blocked; production routing использует только active provider/model, кроме явно разрешенного dry-run/preview режима.
Readiness diagnostics показывают endpoint availability, auth secret readiness, model availability, local runtime requirements, capabilities, context/cost limits, last successful check, degraded state, reason codes и recommended action без раскрытия секретов и raw payload.
Preview/dry-run routing работает без вызова модели и показывает selected route или denial, rejected candidates, fallback path, estimated cost/latency class, missing secret, disabled provider/model и diagnostic codes.
Whereused показывает AIоперации, model policies, system definitions, TestAсценарии, Helpстраницы, workflow transitions, task-specific operations и API methods, использующие provider/model/policy.
Удаление, блокировка или archive используемого provider/model запрещены или требуют safe migration.
System definitions поддерживают dry-run import, diff, conflict system/user copy, защиту системной записи и пользовательскую копию там, где это разрешено.
Export provider/model/policy definitions не включает secrets, raw provider responses, cost account ids, access tokens, private endpoint credentials или audit payload.
Migration policy для старых provider/model/profileструктур имеет dryrun, отчет различий, mapping старых keys к новым AIProvider/AIModel records и не вводит постоянный compatibility fallback.
TraceContext проходит через routing request, routing decision, readiness diagnostics, HealthCheck provider results, audit envelope, AISuggestion metadata и Observability signals.
Observability получает только safe signals по routing, fallback, readiness, missing capability, missing secret, external route denial, cost/context limit denial и emergency switch decisions.
HealthCheck provider AIProvider/AIModel находит provider без active models, model без providerа, битые secret references, disabled/deprecated usage, missing capability, impossible policy, external fallback without explicit policy, localonly policy with external model, model без TestA/Help, outdated readiness check и dangerous permissive defaults.
TestA покрывает successful route, denied external route under offlineonly policy, missing secret denial, disabled provider denial, missing capability denial, explicit fallback success, fallback denied without policy, deprecated model warning, emergency switch denial, readiness degraded state, dryrun without model call, system definition import/export и absence of secrets in logs/audit/diagnostics.
Help содержит руководство администратора и разработчика по AIProvider/AIModel registry, model policy, route preview, fallback, external/local/offline режимам, emergency switches, readiness diagnostics, secret references, Security, TraceContext, Observability, HealthCheck и TestA.
-
Реализован первый срез AI-governance core в модуле AI.
Что сделано:
Проверка:
-
Реализован промышленный readonly/dryrun срез provider/model routing для AI-governance.
Проверки:
[I128-2838] AI-операции задач в модуле Tasks
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2793] Ввести TraceContext для сквозной трассировки операций
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2797] Расширить Security для проектных прав, полей, действий и аудита доступа
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2798] Реализовать HealthCheck для workflow-проектов и задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2799] Подготовить TestA-контракты системных JSON и end-to-end сценариев
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2818] Реализовать наблюдаемость Observability для промышленных модулей
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2828] Расширить Flags для системных feature flags и rollout policy
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2829] Расширить Security для системного хранения и ротации секретов интеграций
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2833] AI-governance core: policy runtime и реестр AI-операций
Статус: Завершено | Автор: Ilya Mikhaylenko