# 上传到服务器 — 使用说明

本目录仅含**生产部署所需**文件，不含测试、文档、开发脚本、`node_modules` 等。

```
上传到服务器/
├── README.md          ← 本说明
├── 代码/              ← 上传到服务器项目目录（如 /home/project/chajia）
└── 数据库/            ← 宝塔 MySQL 导入用
    ├── chajia.sql
    ├── chajia.sql.gz
    └── README.md
```

---

## 第一步：导入数据库（宝塔）

1. 宝塔创建数据库 **`chajia`**，字符集 **`utf8mb4`**
2. 进入该库 → **导入** → 上传 **`数据库/chajia.sql`**
3. 数据库用户 **`chajia`** 须授权主机 **`172.%`**（Docker 容器访问）

默认管理员：`admin_demo` / `kj123456`（上线后请改密）

嵌入演示 `/embed-demo`：客户编号登录；密码在**客户管理**中为每个客户单独设置（新建默认 `123456`）。

---

## 第二步：上传代码

将 **`代码/`** 内全部内容上传到服务器 `/home/project/chajia/`。

**重要：不要覆盖服务器上已有的 `.env` 文件。**

上传包**不含**根目录 `.env`，避免数据库密码被旧模板覆盖。

---

## 第三步：配置与启动

### 首次部署（服务器尚无查价项目）

```bash
cd /home/project/chajia
cp deploy/.env.bt-host-mysql.example .env
# 核对 .env 中 MYSQL_PASSWORD / DATABASE_URL 与宝塔一致
nano .env
chmod +x deploy/install-bt-host-mysql.sh
bash deploy/install-bt-host-mysql.sh
```

### 更新代码（已有 .env）— 推荐 DataGrip 方式

```bash
cd /home/project/chajia
# 1. 备份 .env
cp .env .env.backup.$(date +%Y%m%d)
# 2. 用新「代码/」覆盖本目录（勿覆盖 .env）
# 3. DataGrip 执行 deploy/datagrip-manual-migrate-20260716.sql
# 4. 串行更新镜像（不自动 migrate）：
chmod +x deploy/update-code-only-bt-host-mysql.sh
bash deploy/update-code-only-bt-host-mysql.sh
# 5. 标记 migration 已应用 + 清 Redis（见 RELEASE-NOTES 方式 B）
```

**勿再跑** `install-bt-host-mysql.sh`（会自动 `migrate deploy`）。详细见同目录 `RELEASE-NOTES.md`。

---

## 访问地址

| 用途 | 地址 |
|------|------|
| 管理端 | http://192.168.2.14:30325/admin/alerts |
| 嵌入演示 | http://192.168.2.14:30325/embed-demo |
| API 基址 | http://192.168.2.14:30325 |

**API 鉴权（第三方对接）：**

```http
Authorization: Bearer <客户 API Key>
X-Customer-Id: CUST_002
```

嵌入演示页使用 Cookie 会话，无需在浏览器配置 Token。

---

## 重新打包（开发机）

```powershell
powershell -ExecutionPolicy Bypass -File deploy/pack-server-upload.ps1
```

---

## 未打包内容

| 不打包 | 原因 |
|--------|------|
| 根目录 `.env` | 防止覆盖服务器密码与 Token |
| `node_modules` / `.next` | 服务器 Docker 构建生成 |
| `__tests__` / `e2e` / `scripts/` | 非生产必需 |

API 文档：`代码/deploy/API.md`
