yangxiaolong fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
..
.idea fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
app fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
evals fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
migrations fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
tests fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
README.md fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
alembic.ini fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
pyproject.toml fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây
uv.lock fa0f7d2ea1 init:项目初始化 1 tháng trước cách đây

README.md

智保通后端

本目录是智保通的统一后端,使用 Python 3.12 和 FastAPI 开发,负责 API、 业务规则、身份认证及数据库访问。

技术栈

  • Python 3.12
  • FastAPI、Pydantic
  • SQLAlchemy、Alembic
  • LangChain 1.x、DeepSeek、LangSmith
  • MySQL 8、Redis
  • uv(依赖与虚拟环境管理)
  • pytest、Ruff、mypy(测试与代码检查)

项目使用 pyproject.tomluv.lock 管理依赖,不使用 requirements.txt、Poetry 或 Conda。

目录结构

backend/
├── app/
│   ├── api/               # HTTP 路由、请求参数和响应格式
│   ├── commands/          # 初始化数据等命令行工具
│   ├── core/              # 配置、安全、密码和公共错误
│   ├── domains/           # 业务模型、仓储接口和业务服务
│   ├── infrastructure/    # MySQL、Redis 等基础设施实现
│   └── main.py            # FastAPI 应用入口
├── migrations/            # 三个数据库的 Alembic 迁移
├── tests/                 # 自动化测试
├── alembic.ini
├── pyproject.toml
└── uv.lock

代码主要调用方向:

HTTP 请求 → api 路由 → domain service → repository → MySQL

AI Agent 的主要调用方向:

Agent API → Agent service → LangChain create_agent
          → DeepSeek(OpenAI 兼容接口)→ 产品目录 Tool
          → Agent MySQL 持久化 + LangSmith Trace

环境配置

后端读取当前 backend 目录中的 .env

首次使用时,在 backend 目录创建并配置 .env

notepad .env

常用配置包括:

  • MYSQL_HOSTMYSQL_PORT:MySQL 地址和端口
  • MYSQL_USERMYSQL_PASSWORD:后端数据库账号
  • REDIS_URL:Redis 连接地址
  • JWT_ACCESS_SECRETJWT_REFRESH_SECRET:登录令牌密钥
  • DEV_FIXED_OTP:开发环境固定验证码
  • DEEPSEEK_API_KEYDEEPSEEK_BASE_URLDEEPSEEK_MODEL:模型配置
  • LANGSMITH_API_KEYLANGSMITH_ENDPOINTLANGSMITH_PROJECTLANGSMITH_TRACING:Agent 链路追踪配置
  • MOCK_PAYMENT_CALLBACK_SECRET:本地模拟支付回调的 HMAC 签名密钥

不要把包含真实密码和密钥的 .env 提交到 Git。

安装后端依赖

Set-Location C:\Users\yxl\Desktop\new_harness\01-zhibaotong-smart-enrollment\backend
uv sync --locked

uv sync --locked 会按照 uv.lock 创建或更新 .venv,确保每台电脑安装 相同版本的依赖。

初始化数据库

请先启动 MySQL 8 和 Redis,然后在项目根目录执行:

.\scripts\check-env.ps1
.\scripts\init-databases.ps1
.\scripts\migrate.ps1
.\scripts\seed.ps1
.\scripts\build-analytics.ps1
.\scripts\verify-seed.ps1

这些脚本依次完成环境检查、创建数据库、建表、写入初始数据、构建分析数据 和验证初始化结果。

单独启动后端

Set-Location C:\Users\yxl\Desktop\new_harness\01-zhibaotong-smart-enrollment\backend
uv run uvicorn app.main:app --reload --host 127.0.0.1 --port 8000

启动后访问:

Ctrl + C 停止后端。

测试和代码检查

backend 目录执行:

uv run pytest
uv run ruff check .
uv run mypy app

也可以在项目根目录执行 .\scripts\test.ps1,同时检查前端和后端。

数据库迁移

项目使用三个相互独立的数据库:

  • insurance_s1_core
  • insurance_s1_agent
  • insurance_s1_analytics

需要手动执行迁移时,在 backend 目录运行:

uv run alembic -c alembic.ini --name alembic_core upgrade head
uv run alembic -c alembic.ini --name alembic_agent upgrade head
uv run alembic -c alembic.ini --name alembic_analytics upgrade head

已经发布的迁移文件不要直接修改;表结构发生变化时应新增 revision。