alarm-service (v1.0.0)

Evaluates alarm rules and generates supervisor alerts

Overview

The alarm-service is a Spring Boot 3.4.4 application with an embedded Kafka Streams topology. It consumes shift aggregate snapshots, evaluates them against configurable alarm rules, manages alarm hysteresis state, and produces supervisor alerts enriched with LLM-generated (or fallback template) messages.

Key Behaviors

  • Alarm evaluation: Every ShiftAggregate is evaluated against all enabled alarm rules. Rules can target specific lines, factories, or apply globally.
  • Hysteresis state machine: Prevents alarm flooding with a three-state model (NORMAL → ACTIVE → CLEARED → NORMAL). Alarms only fire on NORMAL→ACTIVE and CLEARED→ACTIVE transitions.
  • LLM enrichment: Alert messages are generated by Ollama (llama3) with automatic fallback to template-based messages on failure.
  • REST API: CRUD endpoints for alarm rules and reason codes, plus read-only alarm state queries. Swagger UI available at /swagger-ui/index.html.

State Stores

StoreTypeKeyValueSource Topic
alarm-rules-storeGlobalKTable (read-only)ruleIdAlarmRulealarm-rules
alarm-state-storeKeyValueStore (read-write)ruleId
AlarmState
reason-code-actions-storeGlobalKTable (read-only)reasonCodeReasonCodeActionreason-code-actions

REST API

MethodPathDescription
GET/api/rulesList all alarm rules
POST/api/rulesCreate alarm rule
PUT/api/rules/{id}Update alarm rule
DELETE/api/rules/{id}Delete alarm rule
GET/api/alarm-stateList all alarm states
GET/api/alarm-state/{ruleId}/{lineId}Get specific alarm state
GET/api/reason-codesList all reason codes
POST/api/reason-codesCreate reason code
PUT/api/reason-codes/{code}Update reason code
DELETE/api/reason-codes/{code}Delete reason code