Problem
Import is currently hard-wired to a specific version of the OpenGD77 CPS CSV export. This couples every tool to one vendor format and makes it hard to add other CPS brands/versions or our own formats later.
Intended outcome
Refactor import so external formats are converted into our own internal data models (channels, zones, talk groups, TG lists, contacts). Tools consume the internal models, not raw CSV.
- Refactor the existing OpenGD77 CSV import to map into the internal models.
- Add a better import UI: option to pick individual files OR drag/pick a whole directory of CSV/export files at once.
- Leave room for other formats while making OpenGD77 the first and only first-class citizen for now.
Affected tool(s)
tools/channel-map/ (import path + internal model), plus shared import code that future tools can reuse.
Notes
- Stay static (HTML + sidecar JS), no bundler unless asked.
- Parse by header name, not column index; preserve case-sensitive channel-name foreign keys.
- This unblocks the read-only report, export, and CRUD tickets.
Problem
Import is currently hard-wired to a specific version of the OpenGD77 CPS CSV export. This couples every tool to one vendor format and makes it hard to add other CPS brands/versions or our own formats later.
Intended outcome
Refactor import so external formats are converted into our own internal data models (channels, zones, talk groups, TG lists, contacts). Tools consume the internal models, not raw CSV.
Affected tool(s)
tools/channel-map/(import path + internal model), plus shared import code that future tools can reuse.Notes