feat: 新增产品管理模块 + AI基于产品详情生成范式对话 + 一键远程部署脚本

- schema.sql: 新增 product 表(positioning/selling_points) + deal 表加 product_id + 序列重置 + ALTER TABLE 迁移
- server.py: 产品 CRUD API + deal 关联 product_id + 仪表盘产品线统计 + 范式对话动态读取产品详情
- index.html: 产品管理页面 + 录入成交产品下拉 + 仪表盘增强 + 范式对话产品选择 + 导航通用化
- run_demo.sh: python 改 python3 + 预置成交关联 product_id
- deploy.sh: 一键远程部署脚本(rsync+ssh+重启)
- deploy_remote.sh: 远程数据库迁移脚本
This commit is contained in:
selfrelease
2026-07-15 11:37:33 +08:00
parent 5926c73ff1
commit 2b0c35220a
6 changed files with 843 additions and 53 deletions
+50
View File
@@ -0,0 +1,50 @@
#!/bin/bash
set -eu
# ============================================
# 远程服务器端部署脚本(由 deploy.sh 调用)
# 在远程服务器上执行数据库迁移和数据预置
# ============================================
DEMO_DIR="/opt/wxsales/demo"
# 查找 psql 路径
PSQL=""
for p in /usr/bin/psql /usr/local/bin/psql /usr/pgsql-17/bin/psql /usr/local/pg17/bin/psql; do
if [ -x "$p" ]; then PSQL="$p"; break; fi
done
if [ -z "$PSQL" ]; then
echo "[ERROR] 未找到 psql"
exit 1
fi
# 查找 PG socket 目录
SOCKET_DIR=""
for d in /var/lib/pgsql/data /opt/wxsales/demo/db/socket /tmp; do
if [ -S "$d/.s.PGSQL.5434" ]; then SOCKET_DIR="$d"; break; fi
done
# 构建连接参数
if [ -n "$SOCKET_DIR" ]; then
PSQL_CMD="$PSQL -h $SOCKET_DIR -p 5434 -d wxchat_sales"
else
# 尝试默认连接
PSQL_CMD="$PSQL -p 5434 -d wxchat_sales"
fi
echo "[INFO] 使用 psql: $PSQL"
echo "[INFO] 执行 schema.sql..."
# 执行 schema.sql(幂等,包含迁移语句)
$PSQL_CMD -f "$DEMO_DIR/db/schema.sql" 2>&1 || {
echo "[WARN] schema.sql 执行有警告,尝试继续..."
}
# 重置序列
$PSQL_CMD -c "SELECT setval('product_id_seq', COALESCE((SELECT max(id) FROM product), 1), true);" 2>/dev/null || true
$PSQL_CMD -c "SELECT setval('salesperson_id_seq', COALESCE((SELECT max(id) FROM salesperson), 1), true);" 2>/dev/null || true
# 验证
PRODUCT_COUNT=$($PSQL_CMD -t -c "SELECT count(*) FROM product;" 2>/dev/null | xargs || echo "0")
echo "[OK] 产品数量: $PRODUCT_COUNT"
echo "[OK] 数据库迁移完成"