Problem
/meshcore/infrastructure currently lists all observed MeshCore nodes in the selected time window (GET /api/nodes/observed-nodes/infrastructure/?protocol=meshcore). That is too broad for an “infrastructure” view.
Filtering by something like type=Repeater would be a poor fit: MeshCore roles are looser and less aligned with Meshtastic’s router/repeater semantics than MT meshtastic_role + INFRASTRUCTURE_ROLES.
Proposed approach
Introduce an explicit mc_is_infrastructure boolean on ObservedNode:
- Applies to MeshCore observed nodes only (conceptually separate from Meshtastic infrastructure, which stays role-based).
- Default
false; operators mark nodes that should appear on the MC infrastructure page.
- Do not reuse or conflate with Meshtastic role /
meshtastic_role infrastructure logic.
API dependency
Blocked by: meshflow-api#367
| Item |
Notes |
| Model |
ObservedNode.mc_is_infrastructure (BooleanField, default False); only meaningful when protocol=MESHCORE |
| Migration |
Add field + index if needed for list filters |
| Infrastructure list |
GET …/infrastructure/?protocol=meshcore should filter protocol=MESHCORE and mc_is_infrastructure=True (not all MC nodes) |
| CRUD |
Endpoint(s) to set/clear the flag on an observed node (PATCH on observed node detail and/or dedicated action) |
| Permissions |
Only feeders and admins may set or clear mc_is_infrastructure (Django feeder group + is_staff; align with permissions) |
| OpenAPI |
Document field + write operations |
| Tests |
Permission matrix + list filter behaviour |
UI work (this repo)
Out of scope
- Changing Meshtastic infrastructure selection (remains
meshtastic_role / INFRASTRUCTURE_ROLES).
- Inferring MC infrastructure from repeater/type heuristics alone.
Context
- MC infrastructure page added in PR #306 (branch
api-329/pskillen/mc-stats-ui).
- API currently returns all MC observed nodes for
protocol=meshcore infrastructure (PR #366).
Acceptance criteria
- MC infrastructure page shows only nodes with
mc_is_infrastructure=true.
- Feeders and admins can set/clear the flag via API + UI; ordinary users cannot.
- MT infrastructure behaviour unchanged.
Problem
/meshcore/infrastructurecurrently lists all observed MeshCore nodes in the selected time window (GET /api/nodes/observed-nodes/infrastructure/?protocol=meshcore). That is too broad for an “infrastructure” view.Filtering by something like
type=Repeaterwould be a poor fit: MeshCore roles are looser and less aligned with Meshtastic’s router/repeater semantics than MTmeshtastic_role+INFRASTRUCTURE_ROLES.Proposed approach
Introduce an explicit
mc_is_infrastructureboolean onObservedNode:false; operators mark nodes that should appear on the MC infrastructure page.meshtastic_roleinfrastructure logic.API dependency
Blocked by: meshflow-api#367
ObservedNode.mc_is_infrastructure(BooleanField, defaultFalse); only meaningful whenprotocol=MESHCOREGET …/infrastructure/?protocol=meshcoreshould filterprotocol=MESHCOREandmc_is_infrastructure=True(not all MC nodes)mc_is_infrastructure(Djangofeedergroup +is_staff; align with permissions)UI work (this repo)
mc_is_infrastructure.docs/PERMISSIONS.mdif new write surface is exposed in UI.Out of scope
meshtastic_role/INFRASTRUCTURE_ROLES).Context
api-329/pskillen/mc-stats-ui).protocol=meshcoreinfrastructure (PR #366).Acceptance criteria
mc_is_infrastructure=true.