From 2a2dccdcdc3f2c86969767096fa838e2c6724754 Mon Sep 17 00:00:00 2001 From: Westech Admin Date: Tue, 19 May 2026 18:38:08 +0000 Subject: [PATCH] Add deployment instructions for 2026-05-19 --- DEPLOY_INSTRUCTIONS.md | 118 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 DEPLOY_INSTRUCTIONS.md diff --git a/DEPLOY_INSTRUCTIONS.md b/DEPLOY_INSTRUCTIONS.md new file mode 100644 index 0000000..b7cf3ef --- /dev/null +++ b/DEPLOY_INSTRUCTIONS.md @@ -0,0 +1,118 @@ +# Westech R2 Deployment — 2026-05-19 + +## What we're deploying +- **Serial No warehousing pricing + grading** (High/Med/Low/Flagged) +- **CPU/RAM test gates** (Fail → auto Flagged + Dismantle) +- **eBay scraper fix** (post-2024 s-card HTML parser) +- **Schema Diagram** shortcut in Westech workspace +- **Intake button removal** from EIM dashboard + +## Pre-deploy (do this first) + +```bash +# SSH into production +ssh -o ProxyCommand="cloudflared access ssh --hostname ssh.advante.ch" vagrant@ssh.advante.ch + +# Fresh backup (already automated but take one now) +sudo bash /opt/backups/backup-eim.sh +sudo -u frappe bash /opt/backups/backup-mariadb.sh + +# Verify backups exist +ls -la /opt/backups/eim/eim_$(date +%Y%m%d)*.db.xz +ls -la /opt/backups/mariadb/erpnext_$(date +%Y%m%d)*.sql.xz +``` + +## Step 1: Pull code + +```bash +cd /home/frappe/erpnext-bench/apps/westech_r2 +sudo -u frappe git pull origin main + +cd /opt/eim/app +sudo -u vagrant git pull origin main +``` + +## Step 2: Migrate ERPNext schema + +```bash +cd /home/frappe/erpnext-bench +sudo -u frappe bash -c 'source env/bin/activate && python3 -c " +import frappe +frappe.init(site=\"erpnext.local\", sites_path=\"/home/frappe/erpnext-bench/sites\") +frappe.connect() +from frappe.migrate import migrate +migrate() +frappe.destroy() +"' +``` + +This creates the new fields: `grade`, `cpu_test`, `ram_test`, `assigned_price`, `pricing_status`, etc. + +## Step 3: Run data migration + +**CRITICAL — do this immediately after migrate finishes.** + +Maps `Device Condition Report.cosmetic_grade` → new `Serial No.grade`: +```bash +cd /home/frappe/erpnext-bench +sudo -u frappe bash -c 'source env/bin/activate && python3 /home/frappe/erpnext-bench/apps/westech_r2/westech_r2/migrations/migrate_serial_grades.py' +``` + +Expected output: +``` +Total Serial Nos: ~43,000 +High: ~C5-C9 count +Med: ~C4 count +Low: ~C3 count +Flagged: everything else +``` + +## Step 4: Restart services + +```bash +# Restart ERPNext +sudo supervisorctl restart frappe-bench-web: frappe-bench-worker: + +# Restart EIM +cd /opt/eim/app && sudo systemctl restart eim.service +``` + +## Step 5: Verify + +1. Open any Serial No in ERPNext +2. Confirm `Grade` dropdown shows: High / Med / Low / Flagged +3. Set grade to High → `Recommended Price` should populate from Item market data +4. Set `CPU Test` to Fail → grade should auto-lock to Flagged, status = Dismantle +5. Westech workspace should show "Schema Diagram" shortcut +6. EIM dashboard should NOT show "Intake Station" button + +## Rollback (if needed) + +```bash +# Stop services +sudo supervisorctl stop frappe-bench-web: frappe-bench-worker: +sudo systemctl stop eim.service + +# Restore MariaDB +sudo -u frappe bash -c 'cd /opt/backups/mariadb && xz -dc erpnext_YYYYMMDD_HHMMSS.sql.xz | mysql -u root -p erpnext_db' + +# Restore EIM DB +sudo sqlite3 /opt/eim/eim.db ".restore /opt/backups/eim/eim_YYYYMMDD_HHMMSS.db.xz" + +# Revert code +cd /home/frappe/erpnext-bench/apps/westech_r2 && sudo -u frappe git reset --hard HEAD~7 +cd /opt/eim/app && sudo -u vagrant git reset --hard HEAD~1 + +# Restart +sudo supervisorctl start frappe-bench-web: frappe-bench-worker: +sudo systemctl start eim.service +``` + +## If shit breaks + +- **"Grade cannot be X" errors**: Migration script didn't run. Run it. +- **No prices showing**: eBay Pricing Settings missing Oxylabs creds. Check site_config.json. +- **Fields missing**: `bench migrate` failed. Check logs: `tail -f /home/frappe/erpnext-bench/logs/migrate.log` + +## Contact +If anything goes wrong and you can't fix it: stop, do NOT touch production further, and get help.