# TangledupAI API 数据库服务 这是一个基于 FastAPI 构建的后端 API 服务,为 TangledupAI 提供用户管理、Agent 卡片管理、对话管理和文件存储等功能。 ## 功能特性 - **用户管理**: 用户注册、查询、更新 - **Agent 管理**: 创建、查询、更新、删除 Agent 卡片 - **对话管理**: 创建对话、保存消息 - **短信服务**: 发送验证码短信 - **文件存储**: 基于阿里云 OSS 的文件上传、删除、查询 - **API 安全**: 基于 API Key 的身份验证 ## 技术栈 - **后端框架**: FastAPI - **数据库**: PostgreSQL - **对象存储**: 阿里云 OSS - **短信服务**: 阿里云短信服务 - **部署**: Docker & Docker Compose ## 项目结构 ``` API_database/ ├── main.py # 主应用程序入口 ├── config.py # 配置管理 ├── models.py # 数据模型 ├── oss_service.py # 阿里云 OSS 服务 ├── sms.py # 短信服务 ├── utils.py # 工具函数 ├── requirements.txt # Python 依赖 ├── Dockerfile # Docker 镜像构建文件 ├── docker-compose.yml # Docker Compose 配置 └── .env # 环境变量配置 ``` ## 安装与运行 ### 环境要求 - Python 3.12+ - PostgreSQL 数据库 - 阿里云 OSS 账号 - 阿里云短信服务账号 ### 本地开发 1. 克隆仓库 ```bash git clone cd API_database ``` 2. 安装依赖 ```bash pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple ``` 3. 配置环境变量 创建 `.env` 文件并配置以下变量: ```env API_KEY=your_api_key DB_HOST=your_db_host DB_PORT=your_db_port DB_NAME=your_db_name DB_USER=your_db_user DB_PASSWORD=your_db_password DB_SSLMODE=disable # 阿里云 OSS 配置 OSS_ACCESS_KEY_ID=your_oss_access_key_id OSS_ACCESS_KEY_SECRET=your_oss_access_key_secret OSS_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com OSS_BUCKET_NAME=your_bucket_name ``` 4. 启动应用 ```bash uvicorn main:app --reload --host 0.0.0.0 --port 9090 ``` ### Docker 部署 1. 使用 Docker Compose ```bash # 设置环境变量 export API_KEY=your_api_key export DB_HOST=your_db_host export DB_PORT=your_db_port export DB_NAME=your_db_name export DB_USER=your_db_user export DB_PASSWORD=your_db_password export DB_SSLMODE=disable # 启动服务 docker-compose up -d ``` 2. 或者直接使用 Docker ```bash docker build -t tangledup-api . docker run -d -p 9090:9090 \ -e API_KEY=your_api_key \ -e DB_HOST=your_db_host \ -e DB_PORT=your_db_port \ -e DB_NAME=your_db_name \ -e DB_USER=your_db_user \ -e DB_PASSWORD=your_db_password \ -e DB_SSLMODE=disable \ tangledup-api ``` ## API 文档 启动服务后,可以通过以下地址访问 API 文档: - Swagger UI: http://localhost:9090/docs - ReDoc: http://localhost:9090/redoc ## API 端点 ### 用户管理 - `POST /register/` - 用户注册 - `GET /user/{phone}` - 获取用户信息 - `PUT /user/{phone}` - 更新用户信息 ### Agent 管理 - `POST /new_agent/` - 创建 Agent 卡片 - `GET /agents/{phone}` - 获取用户的所有 Agent 卡片 - `GET /agent_id/{agent_id}` - 根据 ID 获取 Agent 卡片 - `PUT /agent/{phone_number}/{agent_name}` - 更新 Agent 卡片 - `PUT /agent_id/{agent_id}` - 根据 ID 更新 Agent 卡片 - `DELETE /agent/{phone_number}/{agent_name}` - 删除 Agent 卡片 - `DELETE /agent_id/{agent_id}` - 根据 ID 删除 Agent 卡片 ### 对话管理 - `POST /conversations/` - 创建新对话 - `POST /messages/` - 保存消息 ### 文件上传 - `POST /upload_image/` - 上传图片 - `POST /upload` - 上传文件到 OSS ### 短信服务 - `POST /api/send-sms` - 发送验证码 - `POST /api/send-sms/diy` - 发送定制短信 - `GET /api/sms-records` - 获取短信记录 ### OSS 服务 - `POST /test/` - 测试 OSS 连接 ## 身份验证 所有 API 端点都需要在请求头中包含有效的 API Key: ``` x-api-key: 123tangledup-ai ``` ## 数据库表结构 ### users 表 - phone_number: 手机号码 (主键) - user_name: 用户名 - user_details: 用户详情 - avatar: 头像URL - email: 邮箱 - points: 积分 - create_date: 创建时间 ### agent_cards 表 - card_id: 卡片ID (主键) - phone_number: 用户手机号码 - card_info: 卡片信息 - agent_avatar_url: Agent头像URL - agent_prompt: Agent提示 - agent_name: Agent名称 - is_publish: 是否发布 - create_date: 创建时间 - voice_type: 语音类型 - temperature: 温度参数 ### conversations 表 - conversation_id: 对话ID (主键) - user_phone: 用户手机号码 - visitor_key: 访客密钥 - agent_card_id: Agent卡片ID ### messages 表 - message_id: 消息ID (主键) - conversation_id: 对话ID - sender: 发送者 (user/agent) - content: 消息内容 - order: 消息顺序 ## 贡献指南 1. Fork 本仓库 2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开一个 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 联系方式 如有问题或建议,请联系项目维护者。