ligbox-ops-platform/verify-crm-leads.sh
Ligbox Spec Hub 3a2c64834b Initial import: ligbox-ops-platform + specs + LAPTOP + obsidian merge (CT130)
Source: VM122 /opt + obsidian-infra + LAPTOP
Hub: CT130 spec-hub 10.10.10.130
2026-06-19 17:26:41 +00:00

58 lines
2.1 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
ENV_FILE="${ENV_FILE:-/opt/ligbox-ops-platform/.env}"
if [[ -f "$ENV_FILE" ]]; then
set -a
# shellcheck disable=SC1090
source "$ENV_FILE"
set +a
fi
OPS_URL="${OPS_URL:-http://10.10.10.122:8080}"
SECRET="${WEBHOOK_SECRET:-ligbox-ops-dev-secret}"
INTERNAL="${OPS_INTERNAL_TOKEN:?OPS_INTERNAL_TOKEN required}"
SESSION_ID="lead-verify-$(date +%s)"
DOMAIN="lead.ops.ligbox"
DESK_PASS="${DESK_BOOTSTRAP_PASSWORD:-805353}"
post_event() {
local event="$1"
local extra="$2"
curl -sf -X POST "$OPS_URL/api/v1/webhooks/onboard" \
-H "Content-Type: application/json" \
-H "X-Webhook-Secret: $SECRET" \
-d "{\"event\":\"$event\",\"domain\":\"$DOMAIN\",\"session_id\":\"$SESSION_ID\",\"data\":$extra}"
}
echo "=== Spec 012 — CRM Leads (Fase B) ==="
echo "SESSION_ID=$SESSION_ID"
echo "[1] Health"
curl -sf "$OPS_URL/health" | python3 -m json.tool | grep -E 'version|status'
echo "[2] Create onboarding ticket (create_account step)"
post_event "onboarding.started" '{"email":"lead-test@ops.ligbox","step":"create_account"}' \
| python3 -c "import sys,json; d=json.load(sys.stdin); assert d.get('ticket_created'); print('ticket_id=', d.get('ticket_id'))"
echo "[3] Promote stale → lead (stale_hours=0 for test)"
SYNC=$(curl -sf -X POST "$OPS_URL/api/v1/crm/leads/sync?stale_hours=0" \
-H "X-Ops-Internal-Token: $INTERNAL")
echo "$SYNC" | python3 -m json.tool
python3 -c "import sys,json; d=json.loads('''$SYNC'''); assert d.get('promoted',0)>=1, d; print('OK promoted', d['promoted'])"
echo "[4] List leads (JWT)"
TOKEN=$(curl -sf -X POST "$OPS_URL/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d "{\"username\":\"root\",\"password\":\"$DESK_PASS\"}" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])")
curl -sf -H "Authorization: Bearer $TOKEN" "$OPS_URL/api/v1/crm/leads" \
| python3 -c "
import sys,json
d=json.load(sys.stdin)
ids=[x['session_id'] for x in d.get('leads',[])]
assert '$SESSION_ID' in ids or any('$SESSION_ID' in (x or '') for x in ids), d
print('OK leads total=', d.get('total'))
"
echo "=== CRM Leads verification complete ==="