# 本地工程测试环境

> M-MEMBER-01-CLOSE-05A 固化测试环境
> 生成时间：2026-06-27
> 禁止写入真实密码和密钥

---

## 环境基线

```text
操作系统：  macOS 26.5.1 (Darwin)
Node.js：   v26.0.0
npm：       11.12.1
MySQL：     mysql:8.0 (Docker, 8.0.46)
Redis：     redis:7-alpine (Docker, 7.4.9)
Prisma：    5.22.0
API HEAD：  87317e0
数据库名称：zhixi_prod
Redis DB：  16 个数据库可用
API 地址：  http://127.0.0.1:3000
Admin 地址：http://127.0.0.1:5174
iOS API：   http://127.0.0.1:3000/api (Debug)
```

## 启动方式

### 基础设施（Docker）

```bash
cd api-server
docker compose -f docker-compose.local.yml up -d

# 验证
docker ps --format 'table {{.Names}}\t{{.Status}}'
```

| 服务 | 容器名 | 端口 |
|------|--------|------|
| MySQL | zhixi-mysql | 127.0.0.1:3306 |
| Redis | zhixi-redis | 127.0.0.1:6379 |
| Qdrant | zhixi-qdrant | 127.0.0.1:6333 |

### 应用进程

```bash
# API Server
cd api-server
npm run build
node dist/src/main.js

# Worker (BullMQ)
node dist/src/worker.main.js

# RAG Worker
cd rag-worker
python3 -u main.py

# Admin 前端
cd admin-projects
npm run dev
```

### 环境变量

复制 `api-server/.env.local` 为 `.env`。包含本地 Docker 连接串和 AI=mock 模式。

### 生产数据同步

```bash
# SSH 到生产服务器 dump → 本地 import
ssh -i devops-projects/PJPZ/zhixi.pem ubuntu@120.53.227.155 \
  "docker exec mysql mysqldump -uroot -p... --single-transaction zhixi_prod | gzip" \
  | gunzip | docker exec -i zhixi-mysql mysql -uroot -p... zhixi_prod
```

## 测试命令

```bash
cd api-server
npm run test:unit        # 单元测试（全 mock）
npm run test:e2e         # E2E 测试（全 mock）
npm run test:integration # 集成测试（需要 MySQL + Redis）
```

## Docker 镜像拉取

国内网络使用 DaoCloud 镜像：

```bash
docker pull docker.m.daocloud.io/library/mysql:8.0
docker tag docker.m.daocloud.io/library/mysql:8.0 mysql:8.0
```
