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
| Store | Type | Key | Value | Source Topic |
|---|---|---|---|---|
alarm-rules-store | GlobalKTable (read-only) | ruleId | AlarmRule | alarm-rules |
alarm-state-store | KeyValueStore (read-write) | ruleId | AlarmState | — |
reason-code-actions-store | GlobalKTable (read-only) | reasonCode | ReasonCodeAction | reason-code-actions |
REST API
| Method | Path | Description |
|---|---|---|
| GET | /api/rules | List all alarm rules |
| POST | /api/rules | Create alarm rule |
| PUT | /api/rules/{id} | Update alarm rule |
| DELETE | /api/rules/{id} | Delete alarm rule |
| GET | /api/alarm-state | List all alarm states |
| GET | /api/alarm-state/{ruleId}/{lineId} | Get specific alarm state |
| GET | /api/reason-codes | List all reason codes |
| POST | /api/reason-codes | Create reason code |
| PUT | /api/reason-codes/{code} | Update reason code |
| DELETE | /api/reason-codes/{code} | Delete reason code |