Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
49a634c
feat(mqtt): enhance publish and subscribe methods with QoS options
GiuliaNardicchia Jun 28, 2026
74b8c09
feat(deps): add better-sqlite3 and its types to dependencies
GiuliaNardicchia Jun 30, 2026
e40596c
feat(outbox): add OutboxStatus enum and OutboxMessage type
GiuliaNardicchia Jun 30, 2026
4559b86
feat(outbox): create OutboxRepository interface for saving messages
GiuliaNardicchia Jun 30, 2026
beaa4f9
feat(outbox): implement createSqliteDatabase function for outbox pers…
GiuliaNardicchia Jun 30, 2026
9b02c2e
feat(outbox): introduce SqliteOutboxRepository for message persistence
GiuliaNardicchia Jun 30, 2026
639aa78
feat(config): add outbox database path to AppConfig for configuration
GiuliaNardicchia Jun 30, 2026
e53393e
feat(machine-simulator-service): integrate outbox message persistence…
GiuliaNardicchia Jun 30, 2026
40ee829
feat(docker): replace npm install with npm ci --omit=dev for consiste…
GiuliaNardicchia Jun 30, 2026
d188f1a
chore(gitignore): add database files to .gitignore
GiuliaNardicchia Jun 30, 2026
3857846
feat(dockerignore): add node_modules and data directories to .dockeri…
GiuliaNardicchia Jun 30, 2026
4b22a74
feat(config): add node environment to AppConfig
GiuliaNardicchia Jul 1, 2026
43a17c4
chore(deps): move pino-pretty to devDependencies for better dependenc…
GiuliaNardicchia Jul 1, 2026
bf54941
refactor(logger): update PinoLogger with check on NodeEnv modality
GiuliaNardicchia Jul 1, 2026
008bcf0
feat(logger): initialize PinoLogger with node environment configuration
GiuliaNardicchia Jul 1, 2026
c830d66
chore(docker): remove --omit=dev from npm ci to ensure all dependenci…
GiuliaNardicchia Jul 1, 2026
a9769cd
feat(docker): add NODE_ENV environment variable to docker compose sim…
GiuliaNardicchia Jul 1, 2026
4f38731
feat(docker): add .dockerignore to exclude node_modules and data dire…
GiuliaNardicchia Jul 1, 2026
515f5ab
feat(mqtt): refactor publish method to return a promise for improve e…
GiuliaNardicchia Jul 1, 2026
27dd448
feat(mqtt): update telemetry setInterval to handle publish errors wit…
GiuliaNardicchia Jul 1, 2026
ba7776e
feat(outbox): add updateStatus to OutboxRepository interface
GiuliaNardicchia Jul 3, 2026
828b6f4
feat(outbox): implement updateStatus method in SqliteOutboxRepository
GiuliaNardicchia Jul 3, 2026
842fb74
feat(mqtt): enhance error handling by updating outbox status on publi…
GiuliaNardicchia Jul 3, 2026
aed6eab
feat(deps): add better-sqlite3 and its types to package.json
GiuliaNardicchia Jul 4, 2026
c622d9b
feat(inbox): add InboxStatus enum and InboxMessage type for message h…
GiuliaNardicchia Jul 4, 2026
9a4d245
feat(inbox): create InboxRepository interface for saving messages
GiuliaNardicchia Jul 4, 2026
be18501
feat(outbox): implement createSqliteDatabase to initialize SQLite dat…
GiuliaNardicchia Jul 4, 2026
99baf3f
feat(inbox): implement SqliteInboxRepository
GiuliaNardicchia Jul 4, 2026
f9bed9e
feat(config): add inboxDbPath to env configuration
GiuliaNardicchia Jul 4, 2026
c917f3f
feat(coordinator): refactor MQTT dispatcher with inbox persistence
GiuliaNardicchia Jul 4, 2026
42e720d
feat(inbox): add IncomingMessage type for message handling
GiuliaNardicchia Jul 6, 2026
3e8ada2
refactor(coordinator): update MessageProcessor interface to use Incom…
GiuliaNardicchia Jul 6, 2026
4d1a064
refactor(coordinator): remove message mappers and inline mapping logi…
GiuliaNardicchia Jul 6, 2026
ca82ea4
refactor(inbox): rename class into InboxReceiver for handling incomin…
GiuliaNardicchia Jul 6, 2026
12307fe
refactor(coordinator): replace IncomingMessage with InboxMessage in m…
GiuliaNardicchia Jul 7, 2026
9f6e754
fix(inbox): change payload serialization
GiuliaNardicchia Jul 7, 2026
243994a
feat(inbox): add findPending method to InboxRepository interface
GiuliaNardicchia Jul 7, 2026
4a77b0a
feat(inbox): implement findPending method to retrieve pending messages
GiuliaNardicchia Jul 7, 2026
40a0697
feat(coordinator): add inbox worker to process pending inbox messages
GiuliaNardicchia Jul 7, 2026
f375919
feat(coordinator): integrate InboxReceiver and InboxWorker for messag…
GiuliaNardicchia Jul 7, 2026
d3241a3
chore(deps): update dependencies in coordinator-service
GiuliaNardicchia Jul 7, 2026
df338cf
chore(deps): update dependencies in machine-simulator-service
GiuliaNardicchia Jul 7, 2026
6166844
feat(inbox): track processing attempts and update status
GiuliaNardicchia Aug 17, 2026
ff4face
feat(inbox): add update status for processed, unsupported messages an…
GiuliaNardicchia Aug 17, 2026
b69b59d
refactor(inbox): improve findPending method
GiuliaNardicchia Aug 18, 2026
280f312
feat(env): add environment configuration files example for coordinato…
GiuliaNardicchia Aug 18, 2026
e570e04
feat(inbox): move InboxWorker from messaging to workers package
GiuliaNardicchia Aug 18, 2026
1328766
feat(machine): add MachineStatus for machine state management: ONLINE…
GiuliaNardicchia Aug 19, 2026
67ed84a
feat(machine): add MachineStatusPolicy interface for evaluating machi…
GiuliaNardicchia Aug 19, 2026
cd596f9
feat(machine): implement HeartbeatTimeoutPolicy
GiuliaNardicchia Aug 19, 2026
4bbe5c8
test(machine): add unit tests for heartbeat timeout evaluation logic
GiuliaNardicchia Aug 19, 2026
a36c2ce
refactor(machine): simplify evaluate method
GiuliaNardicchia Aug 19, 2026
839ec80
feat(logger): enhance PinoLogger
GiuliaNardicchia Aug 20, 2026
042b124
refactor(inbox-worker): replace SystemClock with Clock interface
GiuliaNardicchia Aug 20, 2026
eb4ffb6
feat(heartbeat-repository): add interface for managing heartbeat events
GiuliaNardicchia Aug 20, 2026
42b9ce3
feat(heartbeat-repository): implement SqliteHeartbeatRepository
GiuliaNardicchia Aug 20, 2026
8434a6d
feat(config): add heartbeatTimeoutMs to AppConfig and .env.example
GiuliaNardicchia Aug 20, 2026
30451ec
feat(heartbeat-monitor): implement HeartbeatMonitor for managing hear…
GiuliaNardicchia Aug 20, 2026
933c1e6
feat(heartbeat-monitor): add HeartbeatMonitor into main for heartbeat…
GiuliaNardicchia Aug 20, 2026
d9a090c
feat(machine): replace MachineStatus with MachineReachabilityStatus f…
GiuliaNardicchia Aug 21, 2026
24f38d4
feat(config): add coreRest configuration to AppConfig with url and token
GiuliaNardicchia Aug 21, 2026
e860a4a
feat(machine): add MachineId to MachineCOnfig and update related conf…
GiuliaNardicchia Aug 21, 2026
43f46e7
refactor(eslint): update ESLint rules
GiuliaNardicchia Aug 21, 2026
b5ea14d
refactor(test): update HeartbeatTimeoutPolicy spec expectations to us…
GiuliaNardicchia Aug 21, 2026
b275389
feat(core-rest-service): add CoreRestService interface for fetching m…
GiuliaNardicchia Aug 22, 2026
1366a78
feat(core-rest-service): add MachineDto interface for machine data re…
GiuliaNardicchia Aug 22, 2026
e0856dd
feat(core-rest-service): implement toMachineConfig function for mappi…
GiuliaNardicchia Aug 22, 2026
69603f3
feat(core-rest-service): implement HttpCoreRestService
GiuliaNardicchia Aug 22, 2026
6702507
feat(telemetry-processor): update machineConfig to machineConfigs map…
GiuliaNardicchia Aug 22, 2026
48204a2
feat(coordinator-service): refactor bootstrap to use HttpCoreRestServ…
GiuliaNardicchia Aug 22, 2026
ddc2934
refactor(docker-compose): update MACHINE_ID for machine-simulator-1 t…
GiuliaNardicchia Aug 22, 2026
6376217
fix(imports): update path import to use node:path
GiuliaNardicchia Aug 25, 2026
ae89ddf
feat(docker-compose): add volumes for coordinator and machine simulat…
GiuliaNardicchia Aug 25, 2026
0c5e1a0
refactor(machine-dto): change anomalyDetails type
GiuliaNardicchia Aug 25, 2026
d006d6b
feat(telemetry): add eventId and sequenceNumber to TelemetryEvent and…
GiuliaNardicchia Aug 25, 2026
06433bc
feat(tests): add eventId and sequenceNumber to anomaly detector tests
GiuliaNardicchia Aug 26, 2026
b64ccb7
refactor(sensor-type): update SensorType values to match correct casing
GiuliaNardicchia Aug 26, 2026
5f171e9
feat(telemetry): add TelemetryDto interface for telemetry data structure
GiuliaNardicchia Sep 3, 2026
3bc1000
feat(telemetry): implement toTelemetryDto function for mapping teleme…
GiuliaNardicchia Sep 3, 2026
90b2923
feat(core-rest-service): add publishTelemetry method to interface for…
GiuliaNardicchia Sep 3, 2026
9815187
feat(core-rest-service): implement publishTelemetry method
GiuliaNardicchia Sep 3, 2026
d686726
feat(messaging): update process methods to return Promises for async …
GiuliaNardicchia Sep 3, 2026
0ecc951
feat(telemetry): refactor TelemetryProcessor to support async process…
GiuliaNardicchia Sep 3, 2026
40b3562
chore(machine-dto): change currentState type to string for flexibility
GiuliaNardicchia Sep 4, 2026
a4e41fd
feat(core-rest-service): add updateMachineState method for machine st…
GiuliaNardicchia Sep 4, 2026
a3b092b
feat(core-rest-service): implement updateMachineState
GiuliaNardicchia Sep 4, 2026
45eb719
feat(telemetry): enhance process method to update machine state based…
GiuliaNardicchia Sep 4, 2026
887bcf0
chore(tests): add sequenceNumber to telemetry input
GiuliaNardicchia Sep 4, 2026
bdc9f88
feat(heartbeat-monitor): integrate coreRestService for machine state …
GiuliaNardicchia Sep 4, 2026
05bbfe8
chore(tests): add eventId and sequenceNumber to telemetry events in t…
GiuliaNardicchia Sep 4, 2026
c171191
feat(random): add randomOutsideRange function for generating values o…
GiuliaNardicchia Sep 7, 2026
834e9e9
feat(telemetry): add anomaly handling for telemetry generation using …
GiuliaNardicchia Sep 7, 2026
885244a
feat(tests): add test for generating telemetry with specified anomalies
GiuliaNardicchia Sep 7, 2026
baf16d3
feat(config): add anomaly parsing function and integrate into AppConfig
GiuliaNardicchia Sep 7, 2026
9f829e6
feat(docker): add ANOMALIES environment variable to machine simulator
GiuliaNardicchia Sep 7, 2026
cab2ab1
feat(config): enhance anomaly parsing with telemetry ranges and refac…
GiuliaNardicchia Sep 7, 2026
24266a4
refactor(telemetry): refactor telemetry generation adding value gener…
GiuliaNardicchia Sep 8, 2026
41c6f5e
feat(anomaly): implement VibrationPolicy to evaluate vibration anomalies
GiuliaNardicchia Sep 8, 2026
d4d3738
feat(anomaly): add VibrationPolicy to anomaly detection policies
GiuliaNardicchia Sep 8, 2026
ec42529
feat(telemetry): add test for generating telemetry with multiple anom…
GiuliaNardicchia Sep 8, 2026
664418d
feat(anomaly): implement PressurePolicy for pressure anomaly detection
GiuliaNardicchia Sep 8, 2026
c2475b5
feat(anomaly): add PressurePolicy to anomaly detection policies
GiuliaNardicchia Sep 8, 2026
533dc8a
feat(anomaly): implement EmissionPolicy
GiuliaNardicchia Sep 8, 2026
b960a46
feat(anomaly): add EmissionPolicy to anomaly detection policies
GiuliaNardicchia Sep 8, 2026
8fa6f10
refactor(anomaly): update import path for EmissionPolicy
GiuliaNardicchia Sep 8, 2026
3efae3f
feat(anomaly): implement PowerConsumptionPolicy
GiuliaNardicchia Sep 8, 2026
3f3f0ad
feat(anomaly): add PowerConsumptionPolicy to anomaly detection policies
GiuliaNardicchia Sep 8, 2026
ff6922e
test(anomaly): add unit tests for EmissionPolicy, PowerConsumptionPol…
GiuliaNardicchia Sep 9, 2026
020a2ed
test(anomaly): enhance anomaly detection tests with other cases
GiuliaNardicchia Sep 10, 2026
66bab0f
feat(errors): add MachineNotFoundError class for error handling
GiuliaNardicchia Sep 21, 2026
9c608f9
feat(errors): throw MachineNotFoundError for 404 responses in HttpCor…
GiuliaNardicchia Sep 21, 2026
3016d4b
chore(machine): normalize MachineId initialization and update tests t…
GiuliaNardicchia Sep 22, 2026
ca6a1d5
feat(errors): add ConfigurationNotFoundError for handling missing con…
GiuliaNardicchia Sep 22, 2026
c18f35d
refactor(errors): update InvalidMachineIdError
GiuliaNardicchia Sep 22, 2026
d1a3e78
feat(processors): enhance Heartbeat and Telemetry processors with err…
GiuliaNardicchia Sep 22, 2026
9a23617
feat(docker): update machine-simulator service to use dynamic MACHINE…
GiuliaNardicchia Sep 22, 2026
8163a6b
chore(deps): update package versions in package-lock.json
GiuliaNardicchia Sep 23, 2026
ec1e82b
refactor(telemetry): decouple anomaly detection from application DTO …
GiuliaNardicchia Sep 30, 2026
2fd70d8
feat(id-generator): add IdGenerator interface and UUIDGenerator imple…
GiuliaNardicchia Oct 2, 2026
d7a7e8f
feat(telemetry): refactor telemetry event handling and remove Telemet…
GiuliaNardicchia Oct 2, 2026
13433f1
refactor(tests): update tests after TelemetryEvent removal
GiuliaNardicchia Oct 2, 2026
e260243
refactor(inbox): move inbox message model to application layer
GiuliaNardicchia Oct 12, 2026
72de2a6
refactor(telemetry): restructure telemetry domain model and factory a…
GiuliaNardicchia Oct 13, 2026
cd6ddf1
feat(deps): add dependency-cruiser for architecture testing
GiuliaNardicchia Oct 13, 2026
c7ba97a
feat(architecture): generate dependency-cruiser configuration for mod…
GiuliaNardicchia Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -181,4 +181,6 @@ dist

**/docs/
**/html/
**/coverage/
**/coverage/

**/data/*.db
18 changes: 15 additions & 3 deletions docker/docker-compose.simulators.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,34 @@ services:
context: ../microservices/coordinator-service
depends_on:
- mqtt-broker
- core-rest-service
environment:
NODE_ENV: development
MQTT_URL: mqtt://mqtt-broker:1883
MQTT_TOPIC: factory/telemetry
INTERVAL_MS: 2000
MQTT_HEARTBEAT_TOPIC: factory/heartbeat
HEARTBEAT_INTERVAL_MS: 5000
volumes:
- coordinator_data:/app/data

machine-simulator-1:
machine-simulator:
build:
context: ../microservices/machine-simulator-service
depends_on:
- mqtt-broker
environment:
MACHINE_ID: machine-1
NODE_ENV: development
MACHINE_ID: ${MACHINE_ID}
MQTT_URL: mqtt://mqtt-broker:1883
MQTT_TOPIC: factory/telemetry
INTERVAL_MS: 2000
MQTT_HEARTBEAT_TOPIC: factory/heartbeat
HEARTBEAT_INTERVAL_MS: 5000
HEARTBEAT_INTERVAL_MS: 5000
ANOMALIES: ${ANOMALIES:-}
volumes:
- simulator_data:/app/data

volumes:
coordinator_data:
simulator_data:
Loading
Loading