feat(diagnostics): add health engine
This commit is contained in:
127
docs/Diagnostics.md
Normal file
127
docs/Diagnostics.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# Marketplace Diagnostics & Health Engine - Sprint 14
|
||||
|
||||
## Scope
|
||||
|
||||
Sprint 14 adds a development-only diagnostics feature for marketplace configuration and runtime health.
|
||||
|
||||
Constraints respected:
|
||||
- No runtime behavior changes
|
||||
- No business logic changes
|
||||
- No authentication changes
|
||||
- No payment changes
|
||||
|
||||
## Architecture
|
||||
|
||||
```text
|
||||
src/app/features/diagnostics/
|
||||
components/
|
||||
diagnostics-page.component.*
|
||||
services/
|
||||
diagnostics-logger.service.ts
|
||||
models/
|
||||
diagnostics.model.ts
|
||||
validators/
|
||||
bootstrap-diagnostics.validator.ts
|
||||
runtime-diagnostics.validator.ts
|
||||
diagnostics-health-score.util.ts
|
||||
facade/
|
||||
diagnostics.facade.ts
|
||||
```
|
||||
|
||||
## Health Checks
|
||||
|
||||
Current checks cover:
|
||||
- bootstrap loaded
|
||||
- tenant resolved
|
||||
- runtime initialized
|
||||
- theme loaded
|
||||
- widget manifest loaded
|
||||
- section engine reachable
|
||||
- configuration engine initialized
|
||||
- translations available
|
||||
- required assets health
|
||||
|
||||
## Bootstrap Validation
|
||||
|
||||
Current validator detects:
|
||||
- missing required properties
|
||||
- unknown widget types
|
||||
- duplicate page/section/widget ids
|
||||
- unknown layout values
|
||||
- invalid feature flags
|
||||
- broken page definitions
|
||||
- invalid navigation targets
|
||||
- missing translations in navigation label keys
|
||||
- missing branding media
|
||||
|
||||
## Runtime Validation
|
||||
|
||||
Current validator detects:
|
||||
- missing datasource declarations for widgets that support them
|
||||
- widget rendering failures from runtime diagnostics stream
|
||||
- broken route expectations
|
||||
- configuration fallback usage in local development
|
||||
- failed image loading where DOM can observe it
|
||||
- missing optional data
|
||||
|
||||
## Severity Model
|
||||
|
||||
Each entry includes:
|
||||
- code
|
||||
- severity
|
||||
- title
|
||||
- description
|
||||
- affected component
|
||||
- suggested resolution
|
||||
|
||||
Levels:
|
||||
- info
|
||||
- warning
|
||||
- error
|
||||
- critical
|
||||
|
||||
## Health Score
|
||||
|
||||
Simple weighted score:
|
||||
- critical: -15
|
||||
- error: -8
|
||||
- warning: -3
|
||||
- info: 0
|
||||
|
||||
Minimum 0, maximum 100.
|
||||
|
||||
## Developer Page
|
||||
|
||||
Development-only route:
|
||||
- `/__diagnostics`
|
||||
|
||||
Page shows:
|
||||
- summary
|
||||
- health score
|
||||
- passed checks
|
||||
- warnings/errors/critical counts
|
||||
- detailed diagnostics entries
|
||||
|
||||
## Logging Abstraction
|
||||
|
||||
`DiagnosticsLoggerService` stores diagnostic entries in memory.
|
||||
|
||||
`RuntimeDiagnosticsService` now keeps unknown widget events in memory for diagnostics consumption only.
|
||||
|
||||
No external logging integration in this sprint.
|
||||
|
||||
## Extension Points
|
||||
|
||||
Future additions can plug into:
|
||||
- new validators under `validators/`
|
||||
- new runtime event collectors
|
||||
- remote diagnostics export service
|
||||
- monitoring integrations (Sentry, Datadog, Grafana, OpenTelemetry)
|
||||
- asset/network checks
|
||||
- widget render timing checks
|
||||
|
||||
## Performance
|
||||
|
||||
Production route excluded.
|
||||
|
||||
Diagnostics work runs only on diagnostics page access in development mode.
|
||||
Reference in New Issue
Block a user