FS-SYS-001: System Configuration Functions¶
| Property | Value |
|---|---|
| ID | FS-SYS-001 |
| Version | 1.0 |
| Corresponding URS | URS-SYS-001 |
| Status | Draft |
| Author | |
| Approved By | |
| Date |
Architecture Reference¶
Functional Specifications¶
FS-SYS-001.1: System Variable Management¶
Covers URS: URS-SYS-001.1
Input Specification (Set Variable):
| Parameter | Type | Constraints | Required |
|---|---|---|---|
| Name | string | Variable name | Yes |
| Value | string | Variable value | Yes |
Output Specification (Get Variable):
| Field | Type | Description |
|---|---|---|
| Name | string | Variable name |
| Value | string | Current value |
Business Rules: - Variables stored in db_essert - Get returns null/404 if variable not found
FS-SYS-001.2: Database Version History¶
Covers URS: URS-SYS-001.2
Input Specification (Add Version):
| Parameter | Type | Required |
|---|---|---|
| VersionNumber | string | Yes |
| Description | string | No |
| Creator | string | Yes |
Output Specification: List of version records with VersionNumber, Description, Timestamp, Creator.
FS-SYS-001.3: System Health Check¶
Covers URS: URS-SYS-001.3
Output Specification:
| Field | Type | Description |
|---|---|---|
| Status | string | "Healthy" / "Degraded" / "Unhealthy" |
| Databases | object[] | Per-database status |
| Databases[].Name | string | Database name |
| Databases[].Connected | bool | Connectivity status |
| Databases[].ResponseTimeMs | int | Connection time in ms |
Business Rules: - Checks connectivity to all 8 databases - "Healthy" = all databases connected - "Degraded" = some databases connected - "Unhealthy" = no databases connected - Target response time < 200ms
CQRS Handler Mapping¶
| FS Item | Command/Query | Handler |
|---|---|---|
| FS-SYS-001.1 | SetVariableCommand / GetVariableQuery | SetVariableHandler / GetVariableHandler |
| FS-SYS-001.2 | AddVersionCommand / GetVersionHistoryQuery | AddVersionHandler / GetVersionHistoryHandler |
| FS-SYS-001.3 | GetSystemHealthQuery | GetSystemHealthHandler |
FS-SYS-001.4: Automated Build, Test, and Publish Pipeline¶
Covers URS: URS-SYS-001.4
Functional Description: Three GitHub Actions workflows automate the build, test, and release process:
Workflow 1: Build & Test (.github/workflows/build-and-test.yml)
- Trigger: Push to master, feature/*, release/*; PRs to master
- Runner: windows-latest (OPC UA and Windows Service compatibility)
- Steps: Restore → Build (Release) → Domain tests → Application tests
Workflow 2: Publish Release (.github/workflows/publish-release.yml)
- Trigger: Version tags (v*)
- Runner: windows-latest
- Steps: Build → Unit tests → Self-contained publish (win-x64) → Copy deploy scripts → Create ZIP → GitHub Release
Workflow 3: Integration Tests (.github/workflows/integration-tests.yml)
- Trigger: PRs to master; manual workflow_dispatch
- Runner: ubuntu-latest with MariaDB 11.7 service container
- Steps: Create 8 databases → Build → Infrastructure unit tests → Infrastructure integration tests → REST API tests
Release Artifact Contents:
| File | Description |
|---|---|
Essert.MF.Host.exe |
Self-contained single-file executable |
appsettings.json |
Default configuration |
appsettings.Production.json |
Production overrides template |
install.ps1 |
Install/upgrade script |
uninstall.ps1 |
Uninstall script |
Business Rules:
- Unit tests must pass before any publish step
- No production secrets stored in CI — appsettings.json contains placeholder connection strings
- Integration tests use EnsureCreated() for schema initialization (CI validates against EF model, not production schema)
arc42 Reference: arc42/07 s7.5 — Deployment Process