Initial move to app, scanning and reading basic part info works, updating info starting to work
This commit is contained in:
45
workflows/scan_import.py
Normal file
45
workflows/scan_import.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import os, csv
|
||||
from typing import Dict
|
||||
from config import PARTDB_BASE, PARTDB_TOKEN, COM_PORT, BAUD_RATE, SCAN_APPEND_CSV
|
||||
from apis.partdb_api import PartDB
|
||||
from parsers.digikey_mh10 import parse_digikey
|
||||
from devices.scanner_serial import scan_loop
|
||||
|
||||
def _row_for_csv(fields: Dict[str,str]) -> Dict[str,str]:
|
||||
return {
|
||||
"DigiKeyPart": fields.get("DigiKeyPart",""),
|
||||
"MfrPart": fields.get("MfrPart",""),
|
||||
"CustomerPart": fields.get("CustomerPart",""),
|
||||
"InternalLot1": fields.get("InternalLot1",""),
|
||||
"InternalLot2": fields.get("InternalLot2",""),
|
||||
"DateCodeRaw": fields.get("DateCodeRaw",""),
|
||||
"TraceID": fields.get("TraceID",""),
|
||||
"PackageSerial": fields.get("PackageSerial",""),
|
||||
"PickTicket": fields.get("PickTicket",""),
|
||||
}
|
||||
|
||||
def run_scan_import():
|
||||
pdb = PartDB(PARTDB_BASE, PARTDB_TOKEN)
|
||||
|
||||
def on_scan(flat: str):
|
||||
fields = parse_digikey(flat)
|
||||
print("\nScan:", flat)
|
||||
print("→", fields)
|
||||
|
||||
# Create (very minimal) part record using MPN/DKPN
|
||||
name = fields.get("MfrPart") or fields.get("DigiKeyPart") or "Unknown"
|
||||
mpn = fields.get("MfrPart") or ""
|
||||
# You can enrich with ensure_category/manufacturer/footprint if you want here
|
||||
|
||||
# Optional: CSV log
|
||||
if SCAN_APPEND_CSV:
|
||||
newfile = not os.path.exists(SCAN_APPEND_CSV)
|
||||
with open(SCAN_APPEND_CSV, "a", newline="", encoding="utf-8") as f:
|
||||
w = csv.DictWriter(f, fieldnames=list(_row_for_csv(fields).keys()))
|
||||
if newfile: w.writeheader()
|
||||
w.writerow(_row_for_csv(fields))
|
||||
|
||||
# If you want to insert a stock movement instead of creating parts,
|
||||
# call your Part-DB stock API here.
|
||||
|
||||
scan_loop(COM_PORT, BAUD_RATE, on_scan)
|
||||
Reference in New Issue
Block a user