Skip to content

Feature/orion na quality pr6#65

Open
sonra44 wants to merge 5 commits into
masterfrom
feature/orion-na-quality-pr6
Open

Feature/orion na quality pr6#65
sonra44 wants to merge 5 commits into
masterfrom
feature/orion-na-quality-pr6

Conversation

@sonra44
Copy link
Copy Markdown
Owner

@sonra44 sonra44 commented Jan 8, 2026

Summary by CodeRabbit

Заметки о выпуске

Новые функции

  • Система обнаружения инцидентов с конфигурируемыми правилами (мониторинг температуры, сигнала радара, перегрузки шины питания)
  • Интеграция QIKI для обмена предложениями и запросов через NATS
  • Адаптивный дизайн консоли оператора с поддержкой различных размеров терминала
  • Функция паузы событий с счётчиком непрочитанных инцидентов

Документация

  • Добавлены подробные спецификации и руководства по дизайну оператора
  • Политика сокращений с двуязычной поддержкой (EN/RU)

Улучшения

  • Лучшая обработка отсутствующих данных
  • Расширенная валидация и предложения QIKI

✏️ Tip: You can customize this high-level summary in your review settings.

Copy link
Copy Markdown

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @sonra44, your pull request is larger than the review limit of 150000 diff characters

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 8, 2026

Caution

Review failed

Failed to post review comments

📝 Walkthrough

Walkthrough

Этот PR вводит комплексную систему обработки инцидентов с файловым хранилищем правил, новый QIKI чат-сервис с поддержкой двусторонней коммуникации через NATS, расширенные протоколы данных, обновленную конфигурацию оператора-консоли и подробную документацию по проектированию.

Changes

Cohort / File(s) Описание
Конфигурация и переменные окружения
.gitignore, src/qiki/shared/nats_subjects.py
Добавлена сигнатура для игнорирования логов истории конфигурации; новые константы NATS-субъектов для QIKI (intent, proposals) и обратной совместимости
Модели данных протокола
src/qiki/shared/models/orion_qiki_protocol.py, src/qiki/shared/models/qiki_chat.py
Строгие Pydantic-модели для интентов, предложений, контекста выбора и режимов; перехват пустых действий в Stage A; двусторонние тексты и контекст системы
Правила инцидентов (ядро)
config/incident_rules.yaml, src/qiki/services/operator_console/core/incident_rules.py, src/qiki/services/operator_console/core/incidents.py
YAML-конфигурация с тремя правилами; модели и репозиторий для загрузки/перезагрузки правил с историей; хранилище инцидентов с сопоставлением, учетом длительности, охлаждением и состояниями ack/clear
QIKI чат-сервис
src/qiki/services/qiki_chat/__init__.py, src/qiki/services/qiki_chat/handler.py, src/qiki/services/qiki_chat/main.py
Обработчик запросов QIKI с фабричными ответами; NATS-сервис с подпиской на тему чата, маршрутизацией сообщений и обработкой ошибок
Клиент NATS оператора-консоли
src/qiki/services/operator_console/clients/nats_client.py
Новый метод subscribe_qiki_proposals для подписки на QIKI_PROPOSALS_V1 с обратным вызовом
Интернационализация
src/qiki/services/operator_console/ui/i18n.py
Обновленные трансляции (Invalid/Некорректно, Stale/Устарело, Online/В сети); новые константы (NO_INCIDENTS, NO_PROPOSALS и др.); компактный форматер возраста fmt_age_compact
Тесты оператора-консоли
src/qiki/services/operator_console/tests/test_*.py (6 файлов)
Валидация правил, хранилища инцидентов, паузы/непрочитанного, маршрутизации QIKI, отображения предложений, переключения правил
Тесты протокола и чата
tests/unit/test_orion_qiki_protocol_v1.py, src/qiki/services/qiki_chat/tests/test_handler.py
Сериализация/десериализация моделей протокола, проверка версий, требования к полям; тестирование обработчика чата с фабричным ответом
Утилита CLI
src/qiki/tools/__init__.py, src/qiki/tools/qiki_ask.py
Новый инструмент qiki_ask для отправки текстовых подсказок в QIKI через NATS с поддержкой timeout и URL конфигурации
Документация дизайна (10+ файлов)
docs/design/operator_console/*.md, docs/design/анализ.MD, AGENTS.md
Политика сокращений, каноническая спецификация ORION↔QIKI, макеты MFD, переделка заголовка, система OS, карта слоев, чеклисты валидации, логи работы, план интеграции QIKI, приемочные тесты
Обновление тестов базовой спецификации
tests/shared/test_bot_spec_validator.py
Смягчена проверка компонентов: от точного совпадения к проверке подмножества (issubset) для допуска дополнительных компонентов

Sequence Diagram(s)

sequenceDiagram
    participant Event as Sensor/Event<br/>Producer
    participant Store as IncidentStore
    participant Rules as RulesRepository
    participant State as Internal<br/>State
    
    Event->>Store: ingest(event)
    Store->>Rules: config.rules
    Rules-->>Store: [IncidentRule]
    loop For each enabled rule
        Store->>Store: _match_rule(rule, event)
        alt Rule matches
            Store->>Store: _apply_rule(rule, event)
            alt Duration threshold met
                Store->>State: Create/Update Incident
                State-->>Store: Incident (new or updated)
            else Duration pending
                Store->>State: Track PendingIncident
            end
        end
    end
    Store-->>Event: list[Incident]
Loading
sequenceDiagram
    participant Client as ORION Client
    participant NATS as NATS Broker
    participant Handler as QikiChatHandler
    participant Service as QikiChatService
    
    Client->>NATS: Publish QikiChatRequestV1<br/>(qiki.chat.v1)
    NATS->>Service: Message received
    Service->>Service: Parse JSON → QikiChatRequestV1
    alt Request valid
        Service->>Handler: handle_chat_request(request)
        Handler->>Handler: Build FACTORY-mode response<br/>with proposals & reply
        Handler-->>Service: QikiChatResponseV1
    else Request invalid
        Service->>Handler: build_invalid_request_response()
        Handler-->>Service: Error response (ok=False)
    end
    Service->>NATS: Publish response JSON<br/>(reply subject)
    NATS-->>Client: Response delivered
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Poem

🐰 Вот хранилище инцидентов запущено, прыг-скок!
QIKI чат поет, NATS жужжит, в ночь…
Правила парят в YAML, двусторонний текст танцует,
Оператор консоли светит нам, стандарты воцаряют,
Новых подписок веренница, девять пород чатов ждут! 🌙✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 7.59% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive Заголовок носит обобщённый характер и не раскрывает суть основных изменений в PR, где реализованы incident rules, QIKI chat сервис, расширенная документация и компоненты UI. Следует переформулировать заголовок более конкретно, например: 'Add incident rules engine, QIKI chat service, and ORION operator console documentation' или аналогично отражающий основные функциональные дополнения.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Comment @coderabbitai help to get the list of available commands and usage tips.

@sonra44 sonra44 changed the base branch from main to master January 8, 2026 15:58
@sonra44 sonra44 changed the title Featmasterure/orion na quality pr6 Feature/orion na quality pr6 Jan 8, 2026
@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

https://github.com/sonra44/QIKI_DTMP/blob/a296b84ca9c1a6619b6357db976a0227087f36d4/src/qiki/services/operator_console/main_orion.py#L2969-L2972
P2 Badge Clear acknowledged incidents for non-auto-clear rules

The “Clear acknowledged incidents” action only calls IncidentStore.clear_acked_cleared() here, which removes incidents already in the cleared state. There is no path in the app that ever transitions an incident to cleared when a rule has auto_clear: false (e.g., POWER_BUS_OVERLOAD in config/incident_rules.yaml), so acked incidents from those rules will never be removable via the UI and will remain stuck in the Events table. Consider explicitly calling IncidentStore.clear() for acked incidents (or marking them cleared before removal) so manual-clear rules can be cleared.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant