feat: environment modes gating (Stage 0)#66
Conversation
There was a problem hiding this comment.
Sorry @sonra44, your pull request is larger than the review limit of 150000 diff characters
|
Caution Review failedFailed to post review comments 📝 WalkthroughОбзорДанный PR вводит комплексную систему управления инцидентами, поддержку чата QIKI и режимов окружения (FACTORY/MISSION) для оператора ORION. Добавлены новые модули для загрузки и валидации правил инцидентов из YAML, хранилища инцидентов с обработкой событий, сервиса QIKI Chat через NATS, и обновлены существующие компоненты с новыми подписками и методами публикации. Расширена документация дизайна с описанием политик сокращений, макетов, протоколов и контрактов взаимодействия. Изменения
Диаграмма последовательностиsequenceDiagram
participant Operator as Оператор<br/>(ORION UI)
participant NATS as NATS<br/>Message Bus
participant QCore as Q_Core Agent<br/>(Intent Bridge)
participant QChat as QIKI Chat<br/>Service
Operator->>NATS: Публикует окружение<br/>(EnvironmentSetV1)<br/>qiki.environment.v1.set
activate QCore
NATS->>QCore: Новое окружение
QCore->>QCore: Обновляет режим (FACTORY/MISSION)
QCore->>NATS: Публикует снимок<br/>(EnvironmentSnapshotV1)<br/>qiki.environment.v1
NATS->>Operator: Получает текущий режим
deactivate QCore
Operator->>NATS: Отправляет интент<br/>(IntentV1)<br/>qiki.intent.v1
activate QCore
NATS->>QCore: Получает интент
QCore->>QCore: Создаёт stub предложения<br/>на основе режима
QCore->>NATS: Публикует предложения<br/>(ProposalsBatchV1)<br/>qiki.proposals.v1
NATS->>Operator: Отображает предложения<br/>в UI
deactivate QCore
Operator->>NATS: Отправляет QIKI чат<br/>(QikiChatRequestV1)<br/>qiki.chat.v1
activate QChat
NATS->>QChat: Получает чат-запрос
QChat->>QChat: Обрабатывает запрос<br/>build deterministic ответ
QChat->>NATS: Отправляет ответ<br/>(QikiChatResponseV1)<br/>reply
NATS->>Operator: Получает ответ,<br/>отображает в UI
deactivate QChat
sequenceDiagram
participant UI as ORION<br/>Operator Console
participant Store as Incident<br/>Store
participant Rules as Rules<br/>Repository
participant YAML as incident_rules.yaml
Note over Rules: На старте приложения
Rules->>YAML: Загружает правила
YAML-->>Rules: Возвращает конфиг
Rules->>Store: Инициализирует хранилище<br/>с IncidentRulesConfig
Store->>Store: Готово к обработке событий
Note over Store: При поступлении события
UI->>Store: Вызывает ingest(event)
Store->>Store: Итерирует enabled правила<br/>проверяет совпадение
alt Событие совпадает с правилом
Store->>Store: Применяет правило<br/>обновляет pending/cooldown
Store->>Store: Создаёт или обновляет<br/>Incident запись
Store-->>UI: Возвращает список<br/>созданных инцидентов
else Событие не совпадает
Store-->>UI: Возвращает пустой список
end
Note over UI: Операции над инцидентами
UI->>Store: ack(incident_id)
UI->>Store: clear(incident_id)
UI->>Store: refresh() для auto_clear
Store->>Store: Обновляет состояние,<br/>применяет cooldown
Store-->>UI: Отображает обновлённый<br/>список инцидентов
Оценка усилий при рецензировании🎯 4 (Сложный) | ⏱️ ~60 минут Поэма
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Comment |
Stage 0: implement gating logic for environment modes. This update adds gating to ensure the operator console displays N/A when data is unavailable, aligning sensor suite with canonical specs.
Summary by CodeRabbit
Примечания к выпуску
Новые функции
Документация
Улучшения
✏️ Tip: You can customize this high-level summary in your review settings.