shawn be9c34f51d Add GPS-only backup/restore and database wipe
- Fix backup.py PRESERVED_FIELDS column names (lat/lng -> latitude/longitude)
  to match actual DB schema (pre-existing bug)
- Add backup_gps() and restore_gps() dedicated GPS-only functions
- Add /api/gps/backup and /api/gps/restore API endpoints
- Add /api/gps/restore/upload for restoring from uploaded backup files
- Add /api/db/wipe endpoint to clear all asset records
- Update UI with GPS-only Backup button, Restore GPS from File picker,
  and Wipe All Assets with double-confirmation dialog
- Fix backup listing to scan both seed-data/ and project root
2026-05-24 23:07:12 -04:00

🌱 Canteen Seed Data Import Tool

Standalone seed data import tool for the Canteen Asset Tracker. Conceptualizes the import pipeline before integration into the admin panel.

Purpose

Import Cantaloupe seed data (CSV export) into the canteen assets database with:

  • Header Mapping — Raw Excel headers → CSV headers → DB column names
  • Location Extraction — Parse Customer & Place columns into structured fields
  • GPS Derivation — Handle multi-floor GPS offsets
  • Serial Validation — OCR corrections, unknown machine identification
  • Type/Class/Make/Model Normalization — Consolidate to Class, Make, Model
  • Pricing Status Decoding — Remote pricing status meanings
  • Telemetry Decoding — Card reader brand/type from telemetry IDs
  • Alert Interpretation — Alert code meanings
  • Sales Priority Scoring — Low/mid/high business value
  • Backup & Restore — Preserve existing GPS + check-in data
  • Validation Reports — Detailed import summary

Data Files

seed-data/
├── header_modified.csv    # Header mapping: raw Excel → CSV → DB
├── import_seed.csv        # Seed data (vending machine export)
└── reference_handbook.md  # Extraction rules & reference docs

Usage

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

python main.py seed-data/import_seed.csv --db /path/to/assets.db [--dry-run]

Web UX

Standalone web interface for uploading, previewing, and importing Cantaloupe data:

cd ~/projects/canteen-seed-import
source .venv/bin/activate
pip install -r requirements.txt  # ensure web deps are installed

python -m web_ux.main --port 8089

Then open http://localhost:8089

Features:

  • 📊 Dashboard — DB stats, class/make breakdown, GPS coverage
  • 📤 Import — Drag-and-drop Excel upload, preview parsed data, choose seed/update mode, run import with automatic backup
  • 💾 Backup — Create/manage/compare/restore GPS+photo backups
  • 📋 Report — View the latest validation report
  • ⚙️ Config — View header mappings and handbook reference

API Endpoints

Method Path Description
GET /api/status DB stats and health
GET /api/config Header mappings + handbook info
POST /api/upload Upload Excel file, returns preview token
GET /api/preview/{token} Get paginated preview data
POST /api/import Run import (seed/update)
GET /api/report Latest validation report
POST /api/backup Create database backup
GET /api/backups List existing backups
POST /api/backup/compare Compare backup to current DB
POST /api/backup/restore Restore preserved fields from backup

Integration

Once validated, this tool will be integrated into the Canteen Admin Server.

Database Schema

Shares the same assets.db schema as the Canteen Asset Tracker:

  • assets table with columns: machine_id, serial_number, name, make, model, address, building_name, building_number, floor, room, trailer_number, latitude, longitude, company, location_area, place, category, status, priority, pricing_status, card_reader_brand, card_reader_model, dex_report_date, install_date, deployed, pulled_date, disney_park, is_disney, etc.
  • checkins table for GPS check-in records
  • See main project for full schema.

Priority

This tool is a conceptual prototype. Once the pipeline is stable, the logic will be ported to the admin panel as a feature.

S
Description
🌱 Seed data import tool for Canteen Asset Tracker
Readme 390 KiB
Languages
Python 73.1%
HTML 26.5%
Shell 0.4%