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

1.9 KiB
Raw Permalink Blame History

Phase 2后端基础 API + 数据库迁移

新增内容

  • ORMapp/models/User, ChatSession, Message, TicketSQLAlchemy 2.x
  • 数据库app/database.py 异步会话,get_db 依赖
  • 迁移Alembicalembic/versions/001_init_tables.py002_seed_admin.py
  • 认证app/services/auth_service.pybcrypt + JWTapp/deps.pyget_current_user_id
  • 登录POST /api/auth/login 查 User 表并校验密码,返回 JWT

本地启动与迁移

  1. 启动 DB或整栈
    docker-compose up -d db
    
  2. backend/ 下执行迁移(需已配置 DATABASE_URL_SYNC,如从项目根 .env 加载):
    cd backend
    # 若 .env 在项目根export $(grep -v '^#' ../.env | xargs)  或复制 .env 到 backend/
    alembic upgrade head
    
  3. 启动后端:
    uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
    

验证

  • 健康检查curl http://localhost:8000/api/healthcode: 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: 0data.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_MINUTEStoken 有效期(分钟)

Docker 内迁移

若后端在 Docker 内启动,可在首次启动时自动迁移(可选)。例如在 backend/Dockerfile 或启动脚本中:

alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 8000

需保证容器内能访问 DATABASE_URL_SYNC 且指向 db:5432