mirror of
https://github.com/zvx-echo6/meshai.git
synced 2026-08-26 17:31:34 +00:00
* feat(region-routing): P1 tagging + region_routes primitive + read/write API + preview launcher - config.py: add Coverage.region_tagging (bool=False); add RegionRouteMatrix dataclass (enabled, cells) above NotificationsConfig; add region_routes field to NotificationsConfig; add explicit hydration branch for region_routes in _dict_to_dataclass mirroring destinations pattern. - coverage_area.py: add MonitoringArea.name (str|None=None, frozen); update areas_from_config to preserve name; refactor inline geom extraction from classify_event_areas into shared _event_geom_json helper; add matching_area_names(geom_json, areas)->list[str] (additive, all named matches, config-order, deduped; gate unchanged); add event_region_names convenience wrapper. - coverage_filter.py: add region_tagging ctor kwarg; stamp event.region/ regions before the gate when region_tagging=True and areas non-empty and not event.regions (never clobbers satpass preset). - pipeline/__init__.py: wire region_tagging into CoverageFilter construction. - notification_routes.py: add GET /notifications/regions (named coverage area names, config-order, deduped); GET /notifications/region-routing (matrix as JSON); POST /notifications/region-routing (explicit RMW — only region_routes changes, toggles/rules/destinations survive). - scripts/preview_dashboard.py: mesh-free launcher — dashboard API only, no mesh connector, no broadcast loop; vite runs separately. All 87 coverage tests pass; 300 total pass; 6 pre-existing failures unchanged (adapter config count mismatch + MeshCore EventType.NEW_CONTACT). * feat(region-routing): manual region x family matrix editor page Adds RegionRoutingMatrix.tsx — a plain editor over the region_routes config primitive. Rows = families (via useFamilies()), cols = regions (from GET /api/notifications/regions). Each cell exposes MT channel (ChannelPicker single + includeDisabled), MC channel name (text input), min_severity select (routine/priority/critical/immediate), and an enabled checkbox. Only cells where MT or MC is set are included in the sparse POST payload. Master enable toggle maps to top-level enabled. MT budget guard warns when more than 7 distinct MT indices are in use. Sticky family column; horizontal scroll for wide region sets. Registers route /region-routing in App.tsx and adds "Region Routing" nav entry (Map icon) under the Meshtastic section in Layout.tsx, immediately after Routing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(region-routing): regions endpoint reads saved (disk) coverage so routing columns are dynamic without a bot restart; preview reloads config after writes * feat(routing): unify MT/MC routing into per-family cards; region routing as an in-card expand; remove rules/destinations UI + standalone page * refactor(routing): move Meshtastic Routing from /notifications to /meshtastic/routing (mirror /meshcore/routing); redirect legacy path * feat(region-routing): dispatcher honors region_routes matrix (authoritative-on-match, per-region cooldown, per-channel dedup); non-matrix path unchanged Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(region-routing): matrix dedup key must match boot-restore 2-tuple form (prevents restart re-broadcast flood); regression test --------- Co-authored-by: Matt Johnson <mj@k7zvx.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
255 lines
No EOL
3.9 KiB
JavaScript
255 lines
No EOL
3.9 KiB
JavaScript
module.exports = {
|
|
"0.20": "39",
|
|
"0.21": "41",
|
|
"0.22": "41",
|
|
"0.23": "41",
|
|
"0.24": "41",
|
|
"0.25": "42",
|
|
"0.26": "42",
|
|
"0.27": "43",
|
|
"0.28": "43",
|
|
"0.29": "43",
|
|
"0.30": "44",
|
|
"0.31": "45",
|
|
"0.32": "45",
|
|
"0.33": "45",
|
|
"0.34": "45",
|
|
"0.35": "45",
|
|
"0.36": "47",
|
|
"0.37": "49",
|
|
"1.0": "49",
|
|
"1.1": "50",
|
|
"1.2": "51",
|
|
"1.3": "52",
|
|
"1.4": "53",
|
|
"1.5": "54",
|
|
"1.6": "56",
|
|
"1.7": "58",
|
|
"1.8": "59",
|
|
"2.0": "61",
|
|
"2.1": "61",
|
|
"3.0": "66",
|
|
"3.1": "66",
|
|
"4.0": "69",
|
|
"4.1": "69",
|
|
"4.2": "69",
|
|
"5.0": "73",
|
|
"6.0": "76",
|
|
"6.1": "76",
|
|
"7.0": "78",
|
|
"7.1": "78",
|
|
"7.2": "78",
|
|
"7.3": "78",
|
|
"8.0": "80",
|
|
"8.1": "80",
|
|
"8.2": "80",
|
|
"8.3": "80",
|
|
"8.4": "80",
|
|
"8.5": "80",
|
|
"9.0": "83",
|
|
"9.1": "83",
|
|
"9.2": "83",
|
|
"9.3": "83",
|
|
"9.4": "83",
|
|
"10.0": "85",
|
|
"10.1": "85",
|
|
"10.2": "85",
|
|
"10.3": "85",
|
|
"10.4": "85",
|
|
"11.0": "87",
|
|
"11.1": "87",
|
|
"11.2": "87",
|
|
"11.3": "87",
|
|
"11.4": "87",
|
|
"11.5": "87",
|
|
"12.0": "89",
|
|
"12.1": "89",
|
|
"12.2": "89",
|
|
"13.0": "91",
|
|
"13.1": "91",
|
|
"13.2": "91",
|
|
"13.3": "91",
|
|
"13.4": "91",
|
|
"13.5": "91",
|
|
"13.6": "91",
|
|
"14.0": "93",
|
|
"14.1": "93",
|
|
"14.2": "93",
|
|
"15.0": "94",
|
|
"15.1": "94",
|
|
"15.2": "94",
|
|
"15.3": "94",
|
|
"15.4": "94",
|
|
"15.5": "94",
|
|
"16.0": "96",
|
|
"16.1": "96",
|
|
"16.2": "96",
|
|
"17.0": "98",
|
|
"17.1": "98",
|
|
"17.2": "98",
|
|
"17.3": "98",
|
|
"17.4": "98",
|
|
"18.0": "100",
|
|
"18.1": "100",
|
|
"18.2": "100",
|
|
"18.3": "100",
|
|
"19.0": "102",
|
|
"19.1": "102",
|
|
"20.0": "104",
|
|
"20.1": "104",
|
|
"20.2": "104",
|
|
"20.3": "104",
|
|
"21.0": "106",
|
|
"21.1": "106",
|
|
"21.2": "106",
|
|
"21.3": "106",
|
|
"21.4": "106",
|
|
"22.0": "108",
|
|
"22.1": "108",
|
|
"22.2": "108",
|
|
"22.3": "108",
|
|
"23.0": "110",
|
|
"23.1": "110",
|
|
"23.2": "110",
|
|
"23.3": "110",
|
|
"24.0": "112",
|
|
"24.1": "112",
|
|
"24.2": "112",
|
|
"24.3": "112",
|
|
"24.4": "112",
|
|
"24.5": "112",
|
|
"24.6": "112",
|
|
"24.7": "112",
|
|
"24.8": "112",
|
|
"25.0": "114",
|
|
"25.1": "114",
|
|
"25.2": "114",
|
|
"25.3": "114",
|
|
"25.4": "114",
|
|
"25.5": "114",
|
|
"25.6": "114",
|
|
"25.7": "114",
|
|
"25.8": "114",
|
|
"25.9": "114",
|
|
"26.0": "116",
|
|
"26.1": "116",
|
|
"26.2": "116",
|
|
"26.3": "116",
|
|
"26.4": "116",
|
|
"26.5": "116",
|
|
"26.6": "116",
|
|
"27.0": "118",
|
|
"27.1": "118",
|
|
"27.2": "118",
|
|
"27.3": "118",
|
|
"28.0": "120",
|
|
"28.1": "120",
|
|
"28.2": "120",
|
|
"28.3": "120",
|
|
"29.0": "122",
|
|
"29.1": "122",
|
|
"29.2": "122",
|
|
"29.3": "122",
|
|
"29.4": "122",
|
|
"30.0": "124",
|
|
"30.1": "124",
|
|
"30.2": "124",
|
|
"30.3": "124",
|
|
"30.4": "124",
|
|
"30.5": "124",
|
|
"31.0": "126",
|
|
"31.1": "126",
|
|
"31.2": "126",
|
|
"31.3": "126",
|
|
"31.4": "126",
|
|
"31.5": "126",
|
|
"31.6": "126",
|
|
"31.7": "126",
|
|
"32.0": "128",
|
|
"32.1": "128",
|
|
"32.2": "128",
|
|
"32.3": "128",
|
|
"33.0": "130",
|
|
"33.1": "130",
|
|
"33.2": "130",
|
|
"33.3": "130",
|
|
"33.4": "130",
|
|
"34.0": "132",
|
|
"34.1": "132",
|
|
"34.2": "132",
|
|
"34.3": "132",
|
|
"34.4": "132",
|
|
"34.5": "132",
|
|
"35.0": "134",
|
|
"35.1": "134",
|
|
"35.2": "134",
|
|
"35.3": "134",
|
|
"35.4": "134",
|
|
"35.5": "134",
|
|
"35.6": "134",
|
|
"35.7": "134",
|
|
"36.0": "136",
|
|
"36.1": "136",
|
|
"36.2": "136",
|
|
"36.3": "136",
|
|
"36.4": "136",
|
|
"36.5": "136",
|
|
"36.6": "136",
|
|
"36.7": "136",
|
|
"36.8": "136",
|
|
"36.9": "136",
|
|
"37.0": "138",
|
|
"37.1": "138",
|
|
"37.2": "138",
|
|
"37.3": "138",
|
|
"37.4": "138",
|
|
"37.5": "138",
|
|
"37.6": "138",
|
|
"37.7": "138",
|
|
"37.8": "138",
|
|
"37.9": "138",
|
|
"37.10": "138",
|
|
"38.0": "140",
|
|
"38.1": "140",
|
|
"38.2": "140",
|
|
"38.3": "140",
|
|
"38.4": "140",
|
|
"38.5": "140",
|
|
"38.6": "140",
|
|
"38.7": "140",
|
|
"38.8": "140",
|
|
"39.0": "142",
|
|
"39.1": "142",
|
|
"39.2": "142",
|
|
"39.3": "142",
|
|
"39.4": "142",
|
|
"39.5": "142",
|
|
"39.6": "142",
|
|
"39.7": "142",
|
|
"39.8": "142",
|
|
"40.0": "144",
|
|
"40.1": "144",
|
|
"40.2": "144",
|
|
"40.3": "144",
|
|
"40.4": "144",
|
|
"40.5": "144",
|
|
"40.6": "144",
|
|
"40.7": "144",
|
|
"40.8": "144",
|
|
"40.9": "144",
|
|
"40.10": "144",
|
|
"41.0": "146",
|
|
"41.1": "146",
|
|
"41.2": "146",
|
|
"41.3": "146",
|
|
"41.4": "146",
|
|
"41.5": "146",
|
|
"41.6": "146",
|
|
"41.7": "146",
|
|
"42.0": "148",
|
|
"42.1": "148",
|
|
"42.2": "148",
|
|
"42.3": "148",
|
|
"42.4": "148",
|
|
"43.0": "150"
|
|
}; |