Files
wecom-ai-assistant/docs/phase2.md
2026-02-05 16:36:32 +08:00

51 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Phase 2后端基础 API + 数据库迁移
## 新增内容
- **ORM**`app/models/`User, ChatSession, Message, TicketSQLAlchemy 2.x
- **数据库**`app/database.py` 异步会话,`get_db` 依赖
- **迁移**Alembic`alembic/versions/001_init_tables.py``002_seed_admin.py`
- **认证**`app/services/auth_service.py`bcrypt + JWT`app/deps.py`get_current_user_id
- **登录**`POST /api/auth/login` 查 User 表并校验密码,返回 JWT
## 本地启动与迁移
1. 启动 DB或整栈
```bash
docker-compose up -d db
```
2. 在 `backend/` 下执行迁移(需已配置 `DATABASE_URL_SYNC`,如从项目根 `.env` 加载):
```bash
cd backend
# 若 .env 在项目根export $(grep -v '^#' ../.env | xargs) 或复制 .env 到 backend/
alembic upgrade head
```
3. 启动后端:
```bash
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
## 验证
- **健康检查**`curl http://localhost:8000/api/health` → `code: 0, data.status: "up"`
- **登录**`curl -X POST http://localhost:8000/api/auth/login -H "Content-Type: application/json" -d "{\"username\":\"admin\",\"password\":\"admin\"}"`
- 迁移并 seed 后应返回 `code: 0` 且 `data.access_token` 为 JWT
- **测试**`pytest tests/test_health.py tests/test_auth.py -v`
## 关键配置项
- `DATABASE_URL`:异步连接串,供 FastAPI 使用(如 `postgresql+asyncpg://...`
- `DATABASE_URL_SYNC`:同步连接串,供 Alembic 使用(如 `postgresql://...`
- `JWT_SECRET`:生产环境必须修改
- `JWT_EXPIRE_MINUTES`token 有效期(分钟)
## Docker 内迁移
若后端在 Docker 内启动,可在首次启动时自动迁移(可选)。例如在 `backend/Dockerfile` 或启动脚本中:
```bash
alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000
```
需保证容器内能访问 `DATABASE_URL_SYNC` 且指向 `db:5432`。