724104b750
- SPA frontend (static/index.html): 4-step wizard flow (Upload → Review → Import → Report) + Dashboard bar + Backup UI - FastAPI server (server.py) with 14 API endpoints - New endpoints: /api/status, /api/backups, /api/backup/restore - Updated README with web UX usage - Added web deps: fastapi, uvicorn, python-multipart
92 lines
3.5 KiB
Markdown
92 lines
3.5 KiB
Markdown
# 🌱 Canteen Seed Data Import Tool
|
|
|
|
Standalone seed data import tool for the [Canteen Asset Tracker](https://canteen.ourpad.casa).
|
|
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:
|
|
|
|
```bash
|
|
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](https://admin.canteen.ourpad.casa).
|
|
|
|
## 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.
|