const db = require('./backend/db-sqlite'); async function fix() { const fixes = [ // Customers table "ALTER TABLE customers ADD COLUMN is_default INTEGER DEFAULT 0", "ALTER TABLE customers ADD COLUMN category TEXT DEFAULT ''", "ALTER TABLE customers ADD COLUMN remark TEXT DEFAULT ''", // Purchase orders "ALTER TABLE purchase_orders ADD COLUMN supplier_country TEXT DEFAULT ''", "ALTER TABLE purchase_orders ADD COLUMN supplier_contact TEXT DEFAULT ''", "ALTER TABLE purchase_orders ADD COLUMN supplier_phone TEXT DEFAULT ''", // Payment plans "ALTER TABLE payment_plans ADD COLUMN stage TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN payment_date TEXT DEFAULT ''", "ALTER TABLE payment_plans ADD COLUMN status TEXT DEFAULT 'pending'", // Products "ALTER TABLE products ADD COLUMN model TEXT DEFAULT ''", "ALTER TABLE products ADD COLUMN brand TEXT DEFAULT ''", "ALTER TABLE products ADD COLUMN specification TEXT DEFAULT ''", "ALTER TABLE products ADD COLUMN category_id INTEGER", "ALTER TABLE products ADD COLUMN unit TEXT DEFAULT 'δΈͺ'", "ALTER TABLE products ADD COLUMN description TEXT DEFAULT ''", // Create missing tables `CREATE TABLE IF NOT EXISTS purchase_requests ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, amount REAL DEFAULT 0, currency TEXT DEFAULT 'CNY', status TEXT DEFAULT 'pending', description TEXT DEFAULT '', requester TEXT DEFAULT '', department TEXT DEFAULT '', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, `CREATE TABLE IF NOT EXISTS category_tree ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, parent_id INTEGER, level INTEGER DEFAULT 0, sort_order INTEGER DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, `CREATE TABLE IF NOT EXISTS payment_records ( id INTEGER PRIMARY KEY AUTOINCREMENT, payment_plan_id INTEGER, amount REAL DEFAULT 0, currency TEXT DEFAULT 'CNY', payment_method TEXT DEFAULT '', payment_date TEXT DEFAULT '', status TEXT DEFAULT 'pending', remark TEXT DEFAULT '', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, `CREATE TABLE IF NOT EXISTS payment_nodes ( id INTEGER PRIMARY KEY AUTOINCREMENT, project_id INTEGER, name TEXT NOT NULL, amount REAL DEFAULT 0, currency TEXT DEFAULT 'CNY', planned_date TEXT DEFAULT '', actual_date TEXT DEFAULT '', status TEXT DEFAULT 'pending', remark TEXT DEFAULT '', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP )`, // Reimbursements "ALTER TABLE reimbursements ADD COLUMN description TEXT DEFAULT ''", "ALTER TABLE reimbursements ADD COLUMN applicant TEXT DEFAULT ''", "ALTER TABLE reimbursements ADD COLUMN department TEXT DEFAULT ''", // Budget projects "ALTER TABLE budget_projects ADD COLUMN status TEXT DEFAULT 'draft'", "ALTER TABLE budget_projects ADD COLUMN description TEXT DEFAULT ''", ]; for (const sql of fixes) { try { await db.query(sql); console.log('OK:', sql.substring(0, 80)); } catch(e) { const msg = e.message || ''; if (msg.includes('duplicate') || msg.includes('already exists')) { console.log('SKIP:', sql.substring(0, 80)); } else { console.log('ERR:', msg.substring(0, 100)); } } } process.exit(); } fix();