Initial scaffold: project skeleton, README, requirements, main.py stub
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
.venv/
|
||||
*.egg-info/
|
||||
|
||||
# Data (gitignored but tracked via seed-data/*.csv pattern)
|
||||
seed-data/*.csv
|
||||
|
||||
# Database
|
||||
*.db
|
||||
*.db.bak
|
||||
*.db-*
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Reports
|
||||
reports/
|
||||
@@ -0,0 +1,55 @@
|
||||
# 🌱 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]
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
🌱 Canteen Seed Data Import Tool
|
||||
|
||||
Standalone import pipeline for Cantaloupe CSV exports.
|
||||
Run with --help for usage.
|
||||
|
||||
Pipeline stages:
|
||||
1. Backup existing GPS + check-ins from target DB
|
||||
2. Parse & map CSV headers
|
||||
3. Extract location data from Customer/Place columns
|
||||
4. Derive GPS coordinates (with multi-floor support)
|
||||
5. Validate & correct serial numbers
|
||||
6. Normalize Class/Make/Model
|
||||
7. Apply pricing status, telemetry, alert metadata
|
||||
8. Score priority from sales data
|
||||
9. Write to DB (preserving existing GPS/check-ins)
|
||||
10. Generate validation report
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
print("🌱 Canteen Seed Data Import Tool")
|
||||
print(" Coming soon — pipeline modules pending.")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,13 @@
|
||||
# CSV parsing + data processing
|
||||
pandas>=2.0
|
||||
numpy>=1.24
|
||||
|
||||
# Database
|
||||
sqlite-utils>=3.0
|
||||
|
||||
# Geocoding (for GPS derivation)
|
||||
httpx>=0.24
|
||||
|
||||
# CLI
|
||||
rich>=13.0
|
||||
click>=8.0
|
||||
Reference in New Issue
Block a user