# Server（FastAPI 后端）

当前目录是 DesignerCEP 的主后端服务。

## 1. 当前目录结构（关键）

```text
Server/
├── app/                  # FastAPI 代码
│   ├── api/v1/           # 接口路由
│   ├── core/             # 配置与安全
│   ├── models/           # ORM 模型
│   ├── schemas/          # Pydantic Schema
│   ├── services/         # 业务服务
│   ├── db.py             # SQLAlchemy 初始化与 seed
│   └── main.py           # 应用入口
├── archives/             # 上传版本包归档目录
├── debug_images/         # 调试图片输出
├── docker-compose.yml    # Docker 编排（backend + mysql + pma + portainer）
├── Dockerfile            # 后端镜像
├── requirements.txt      # Python 依赖
├── start.sh              # 容器启动脚本
├── .env.example          # 配置模板（推荐复制后本地填写）
└── .env                  # 运行配置（敏感）
```

## 2. 本地运行

```bash
cd Server
copy .env.example .env
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
```

检查服务：

```bash
curl http://localhost:8000/health
```

## 3. Docker 运行

```bash
cd Server
docker-compose up -d --build
docker-compose ps
docker-compose logs -f backend
```

停止服务：

```bash
docker-compose down
```

## 4. 配置说明（来自 `app/core/config.py`）

主要环境变量（优先使用 `AI_*`）：

- `ENV`（development / production）
- `DATABASE_URL`
- `SECRET_KEY`
- `ADMIN_TOKEN`
- `ALLOWED_ORIGINS`
- `SMTP_*`
- `QINIU_*`
- `AI_API_KEY`、`AI_BASE_URL`、`AI_MODEL`
- `AI_VISION_MODEL`、`AI_IMAGE_EDIT_MODEL`
- `QINIU_DOMAIN`

## 5. 数据库迁移

推荐使用 Alembic：

```bash
cd Server
.venv\Scripts\python -m alembic upgrade head
```

新增字段后生成迁移：

```bash
.venv\Scripts\python -m alembic revision --autogenerate -m "describe_change"
```

## 6. 接口前缀与入口

- API 前缀：`/api/v1`
- 健康检查：`GET /health`
- 启动入口：`app/main.py`

## 7. 关于静态文件

当前仓库中没有 `Server/static/app/` 目录。  
在线部署场景下，前端静态资源由 Caddy/Nginx 单独托管（仓库根目录 `Caddyfile` 示例为 `/var/www/app`）。

## 8. 安全注意事项

- `Server/.env` 含真实密钥，不应继续明文共享。
- 启动时如果检测到默认密钥，后端会输出配置警告。
- 部署前请至少轮换：`SECRET_KEY`、`ADMIN_TOKEN`、数据库密码、AI 与云存储密钥。

