bd3bfea37ccff26ba4d761455e90cfae4008e3c3
- New sync.py: reads seed import's 39-col schema, maps to main app's customers/locations/assets schema with foreign keys - New POST /api/sync endpoint (target=dev|prod, dry_run=true/false) - New GET /api/sync/targets endpoint - Category mapping: Bev→Beverage, Snack→Snack, Food→Food, etc. - Automatically creates customers and locations from company/place - Idempotent: updates existing assets by machine_id - Dry-run mode: preview changes without writing
🌱 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.
Description
Languages
Python
73.1%
HTML
26.5%
Shell
0.4%