Bootstrap reanimator chart viewer
This commit is contained in:
54
bible-local/architecture/data-model.md
Normal file
54
bible-local/architecture/data-model.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Data Model
|
||||
|
||||
## Canonical Input
|
||||
|
||||
The canonical input is one Reanimator hardware JSON snapshot.
|
||||
|
||||
The viewer does not own the schema. The Reanimator JSON contract remains external to this repository.
|
||||
|
||||
## Viewer Data Model
|
||||
|
||||
The viewer uses a presentation model derived directly from the input JSON:
|
||||
|
||||
- top-level snapshot metadata
|
||||
- ordered top-level sections
|
||||
- table definitions per section
|
||||
- raw field values
|
||||
|
||||
## Rendering Rule
|
||||
|
||||
The viewer is schema-preserving, not schema-owning.
|
||||
|
||||
- Known sections have a preferred order.
|
||||
- Known important fields may have a preferred column order.
|
||||
- Every field present in the input must remain visible.
|
||||
- Unknown fields must not be dropped.
|
||||
|
||||
## Section Model
|
||||
|
||||
Section types expected initially:
|
||||
|
||||
- singleton object section, for example `board`
|
||||
- array-of-object section, for example `cpus`
|
||||
- nested grouped section, for example `sensors.{fans,power,temperatures,other}`
|
||||
|
||||
## Column Rules
|
||||
|
||||
For array sections:
|
||||
|
||||
1. collect the union of keys present across all rows
|
||||
2. place known fields first
|
||||
3. append unknown fields after known fields
|
||||
4. render absent values as empty cells
|
||||
|
||||
## Special Field Handling
|
||||
|
||||
- `status` is rendered as a colored badge
|
||||
- arrays such as `mac_addresses` may be rendered as line-separated values or badges inside one cell
|
||||
- nested values such as `status_history` may be rendered in expandable detail blocks inside one cell
|
||||
|
||||
## Persistence
|
||||
|
||||
There is no database and no canonical stored state in v1.
|
||||
|
||||
The viewer operates on the in-memory snapshot provided by the embedding application or local file input.
|
||||
Reference in New Issue
Block a user