#!/usr/bin/env python3
"""
Deploy Bascuñán v6 — ordenamiento por proveedor en picking / alfabético en packing.
Subir este archivo al servidor y ejecutar: python3 deploy_v6.py
"""
import sys, os, subprocess, shutil, signal

BASE = "/home/embalado"
VENV = f"{BASE}/virtualenv/limi-stock/3.13/bin/python3"

files = [
    ("bascunan.php",              f"{BASE}/bascunan.embalados.cl/bascunan.php"),
    ("bascunan_api.py",           f"{BASE}/limi-stock/bascunan_api.py"),
    ("bascunan_db_migrate_v6.py", f"{BASE}/bascunan_db_migrate_v6.py"),
]

print("=== Deploy Bascuñán v6 ===")
for src, dst in files:
    if os.path.abspath(src) == os.path.abspath(dst):
        print(f"  ~ {src} mismo archivo, saltar")
        continue
    if os.path.exists(src):
        shutil.copy2(src, dst)
        print(f"  ✓ {src} → {dst}")
    else:
        print(f"  ✗ {src} no encontrado (saltar)")

# Migración v6
db = f"{BASE}/bascunan.db"
migrate = f"{BASE}/bascunan_db_migrate_v6.py"
if os.path.exists(migrate) and os.path.exists(db):
    print("\n--- Migración v6 ---")
    result = subprocess.run([VENV, migrate, db], capture_output=True, text=True)
    print(result.stdout)
    if result.stderr:
        print("STDERR:", result.stderr)

# Reiniciar LiteSpeed WSGI
result2 = subprocess.run(
    "ps aux | grep lswsgi | grep -v grep | awk '{print $2}'",
    shell=True, capture_output=True, text=True
)
pids = [p for p in result2.stdout.strip().split() if p]
if pids:
    for pid in pids:
        try:
            os.kill(int(pid), signal.SIGTERM)
        except Exception:
            pass
    print(f"\n✓ lswsgi reiniciado (PIDs: {', '.join(pids)})")
else:
    print("\n! No se encontraron procesos lswsgi")

print("\n=== Deploy v6 completo ===")
print("Los bodegueros verán sus items de picking agrupados por proveedor por defecto.")
print("El packing verá los items ordenados alfabéticamente.")
