You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6.6 KiB

本次更新说明2026-07-03— 管理端增强 + 登录门控 + 客户管理

更新主题

项目 说明
打包时间 2026-07-03
适用场景 服务器已有旧版查价,增量更新代码
是否改库 ,需执行 Prisma 迁移(安装脚本自动执行)
是否改 .env 保留已有 .env;可删除废弃的 NEXT_PUBLIC_EMBED_DEMO_*
是否必须清 Redis 建议(避免旧报价缓存)

本次主要功能

  1. 管理端登录:不再预填/展示演示账号;默认密码改为 kj123456(已有库需手动改密)
  2. 嵌入演示登录:客户编号 + 密码 123456按客户展示加价配置并查价Cookie 会话,无需页面 Token
  3. 宿主 API 多租户:按 Token 对应 customer_id 加价(如 CUST_002
  4. 预警中心增强:中文根本原因、客户、地址、货物信息
  5. 查价记录(原「队列监控」):最近 1000 条询价流水
  6. 客户管理:管理端新增客户、签发 API Key
  7. 加价精度:支持 0.01% 加价比例

数据库迁移(必做)

安装脚本会自动执行 prisma migrate deploy。本次新增迁移:

迁移目录 内容
20260703100000_markup_percent_two_decimals 加价字段支持两位小数
20260703120000_host_customer_api_keys 客户表 + API Key 表
20260703140000_quote_query_log 查价审计流水表(最多 1000 条)

注意:不要重新导入 数据库/chajia.sql,否则会清空生产数据。


零、开发机打包Windows

cd X:\work\chajia
powershell -ExecutionPolicy Bypass -File deploy\pack-server-upload.ps1

生成目录:

上传到服务器/
├── README.md
├── RELEASE-NOTES.md       ← 本文件(操作步骤)
├── 辅助脚本/
├── 代码/                  ← 上传此目录全部内容
└── 数据库/                ← 本次更新不必导入

将整个 上传到服务器 打成 zip 上传到服务器。


一、服务器更新步骤(场景 B已有旧版

1. 备份(强烈建议)

cd /home/project/chajia
cp .env .env.backup.$(date +%Y%m%d)

2. 上传代码

用 zip 解压后的 代码/ 覆盖 /home/project/chajia/

不要上传或覆盖:

  • .env(服务器已有配置)
  • node_modules/
  • .next/

3. 检查 .env(通常无需修改)

确认以下项仍存在且正确即可:

DATABASE_URL=mysql://chajia:密码@host.docker.internal:3306/chajia
JWT_SECRET=...
HOST_SERVICE_TOKENS=...
CUSTOMER_REGISTRY=...
RPA_MOCK_MODE=false

不要设置 RPA_BROWSER_CHANNEL=chromeDocker Worker 无系统 Chrome

本次无新增必填环境变量。可删除(已不再使用):

NEXT_PUBLIC_EMBED_DEMO_SERVICE_TOKEN=...
NEXT_PUBLIC_EMBED_DEMO_CUSTOMER_ID=...

可选:自定义嵌入演示密码(默认 123456

EMBED_DEMO_PASSWORD=123456

已有服务器:管理员改密

admin_demo 仍为旧密码 Demo@123,请在管理端改密,或在 MySQL 更新 admin_user.password_hash(新装 seed 默认为 kj123456)。

4. 执行安装(构建 + 迁移 + 重启)

cd /home/project/chajia
test -f .env && echo "OK: .env exists" || { echo "ERROR: 缺少 .env"; exit 1; }

chmod +x deploy/install-bt-host-mysql.sh
bash deploy/install-bt-host-mysql.sh

515 分钟。脚本会:

  1. docker compose buildnext-app + rpa-worker + scheduler
  2. 启动容器
  3. npx prisma migrate deploy(执行上述 3 条迁移)
  4. 健康检查

5. 确认服务状态

COMPOSE="docker compose --env-file .env -f deploy/docker-compose.bt-host-mysql.yml"
$COMPOSE ps

应看到 next-app、rpa-worker、scheduler、redis 均为 Up

curl -I http://127.0.0.1:30325

5. 清空 Redis 缓存(建议)

COMPOSE="docker compose --env-file .env -f deploy/docker-compose.bt-host-mysql.yml"
$COMPOSE exec redis redis-cli FLUSHDB

二、部署后验收

管理端

检查项 地址 / 操作
管理端登录 /loginadmin_demo / kj123456(已有库可能仍为旧密码)
嵌入演示 /embed-demoCUST_002 / 123456 — 应显示 CUST_002 加价配置
预警中心 /admin/alerts — 中文根因、客户、地址、货物
查价记录 /admin/queues — 提交询价后有新行
客户管理 /admin/customers — 可新增客户、轮换 Key

询价回归

export CHAJIA_BASE_URL="http://你的IP:端口"
export CHAJIA_SERVICE_TOKEN="你的token"
export CHAJIA_CUSTOMER_ID="CUST_001"
bash 辅助脚本/test-denver-boston.sh

或在浏览器打开 /embed-demo,用客户编号登录后完成一次询价。

迁移是否成功

COMPOSE="docker compose --env-file .env -f deploy/docker-compose.bt-host-mysql.yml"
$COMPOSE exec next-app npx prisma migrate status

应显示 Database schema is up to date


三、本次变更文件清单(供排查)

类别 主要路径
数据库 prisma/schema.prisma,迁移 202607031*
查价审计 modules/quote/query-log.tsapp/api/admin/query-logs/
预警展示 modules/alert/alert-presentation.tsapp/admin/alerts/
查价记录页 app/admin/queues/page.tsx
导航 components/layout/admin-layout.tsxapp/dashboard/page.tsx
客户管理 app/admin/customers/modules/customer/
全链路挂钩 orchestrator.tsjob-handler.tsfallback-orchestrator.tstimeout-sweeper.ts

四、常见问题

现象 处理
构建报 node:crypto / UnhandledSchemeError 已修复middleware 改用 service-token-env.ts;请用本包最新代码重建
查价记录为空 迁移后新提交的询价才会写入;旧数据无回溯
预警详情仍像 JSON 确认 next-app 已重建;有 quote_id 的预警会关联报价单补全
prisma migrate 失败 查 MySQL 权限;勿手动改表后与迁移冲突
嵌入演示登录失败 确认客户编号存在于 DB 或 CUSTOMER_REGISTRY;密码默认 123456
嵌入演示查价 401 确认已登录middleware 使用 embed_demo_session Cookie
构建 OOM 服务器建议 4GB+ 内存;单独 build$COMPOSE build next-app

五、回滚

# 还原代码备份后
bash deploy/install-bt-host-mysql.sh

数据库迁移不建议回滚;若必须,请在 DBA 协助下操作。