feat: Implement Smart Router workflow with User Input and Duplicate Logic (v0.18.0)
Major update to the scanning engine to support "Pause & Resume" workflows. The system can now halt execution to ask for user input (e.g. Weight) and resume processing seamlessly. Key Changes: - Backend (Global Actions): Added `OPEN_FORM` action type to pause pipeline and request manual input. - Backend (Routes): Updated `scan_lot` to handle `extra_data` payloads, allowing the pipeline to resume after user input. - Backend (Logic): Implemented `confirm_duplicate` gatekeeper to handle "Warn vs Block" logic dynamically. - Frontend (JS): Added `processSmartScan` to handle router signals (Open Modal, Warn Duplicate). - Frontend (JS): Added `saveSmartScanData` to send original barcode + new form data back to the engine. - UI: Fixed modal ID/Name conflicts (forcing use of `name` attribute for DB compatibility). - UI: Restored missing "Cancel" button to Details Modal. - Config: Added "User Input" rule type to the Rule Editor. Ver: 0.18.0
This commit is contained in:
@@ -67,12 +67,13 @@ def get_schema():
|
||||
FOREIGN KEY (field_id) REFERENCES cons_process_fields(id)
|
||||
);
|
||||
|
||||
|
||||
-- Indexes
|
||||
CREATE INDEX IF NOT EXISTS idx_cons_process_fields_process ON cons_process_fields(process_id, table_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_cons_process_fields_active ON cons_process_fields(process_id, is_active);
|
||||
CREATE INDEX IF NOT EXISTS idx_cons_sessions_process ON cons_sessions(process_id, status);
|
||||
CREATE INDEX IF NOT EXISTS idx_cons_sessions_user ON cons_sessions(created_by, status);
|
||||
"""
|
||||
"""
|
||||
|
||||
|
||||
def get_migrations():
|
||||
@@ -130,9 +131,27 @@ def get_migrations():
|
||||
cursor.execute('ALTER TABLE cons_processes ADD COLUMN print_end_col TEXT')
|
||||
print(" Added print_end_col column to cons_processes")
|
||||
|
||||
def migration_005_create_router_table(conn):
|
||||
"""Create table for IFTTT routing rules"""
|
||||
cursor = conn.cursor()
|
||||
cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS cons_process_router (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
process_id INTEGER NOT NULL,
|
||||
line_number INTEGER NOT NULL,
|
||||
rule_name TEXT,
|
||||
match_pattern TEXT NOT NULL, -- The Regex/Format to match
|
||||
actions_json TEXT NOT NULL, -- The sequence of THEN steps
|
||||
is_active INTEGER DEFAULT 1,
|
||||
FOREIGN KEY (process_id) REFERENCES cons_processes(id)
|
||||
)
|
||||
''')
|
||||
print(" Created cons_process_router table")
|
||||
|
||||
return [
|
||||
(1, 'add_is_duplicate_key', migration_001_add_is_duplicate_key),
|
||||
(2, 'add_detail_end_row', migration_002_add_detail_end_row),
|
||||
(3, 'add_page_height', migration_003_add_page_height),
|
||||
(4, 'add_print_columns', migration_004_add_print_columns),
|
||||
(5, 'create_router_table', migration_005_create_router_table),
|
||||
]
|
||||
Reference in New Issue
Block a user