Skip to content

Latest commit

 

History

History
245 lines (200 loc) · 8.75 KB

File metadata and controls

245 lines (200 loc) · 8.75 KB

项目总结(当前实现)

概述

MaimConfig 是 MaiMBot 的控制平面,提供多租户的租户/Agent/API Key 管理与活跃心跳上报。依赖 maim_db 作为数据与配置存储,默认作为内网服务运行,无鉴权。

已完成功能

  • FastAPI 应用与生命周期管理,启动时初始化 maim_db 并尝试创建全部表(含 agent_active_states)。
  • 租户管理:CRUD + 分页。
  • Agent 管理:CRUD;创建后自动 upsert 活跃 TTL(12h);配置通过 AgentConfigManager 存储/读取。
  • API Key 管理:生成/查询/更新(未提供禁用/删除端点,可通过 status/expires_at 控制)。
  • API Key 认证:解析、验证、权限检查,支持使用统计自增。
  • Agent 活跃状态:TTL 上报与活跃列表查询。
  • 插件配置(实验):/api/v1/plugins/settings 读写,依赖 maim_db.maimconfig_models(SQLAlchemy)。
  • 运维:/health/info、根路径服务描述。

技术栈

  • FastAPI (async)
  • maim_db(Peewee 模型 + AgentConfig 管理器;附带活跃状态模型)
  • Pydantic(请求/响应模型)
  • 日志:src/common/logger.py
  • 插件接口:SQLAlchemy (如果 maim_db 提供 maimconfig_models)

现状与注意事项

  • 默认无鉴权,必须通过网络层限制访问。
  • 数据库迁移依赖 maim_db;生产环境建议提供 SQL 脚本以确保 agent_active_states 等新表存在。
  • Agent config 未做 schema 校验,完全由上游决定结构;推荐遵循文档中的参考结构。
  • 插件接口存在外部依赖(AsyncSession + maimconfig_models);若未满足依赖,可临时禁用路由注册。

后续建议

  1. 提供正式的 DB 迁移脚本(特别是 agent_active_states)。
  2. 为 API 增加可选鉴权/网关层限流,并补充分布式部署文档。
  3. 对 Agent config 引入基础 schema 校验或示例模板校验,减少配置错误。
  4. 完善测试:为核心路由添加集成测试(租户/Agent/API Key/活跃状态)。
  5. 评估插件接口的依赖一致性(Peewee vs SQLAlchemy),决定统一的数据访问层或标注实验状态。

MaiMBot API Server 项目总结

项目概述

已成功创建了一个独立的MaiMBot API后端服务,实现了与原始项目完全相同的多租户AI聊天机器人配置和管理功能。

完成的功能

1. 项目架构

  • ✅ 完整的FastAPI项目结构
  • ✅ 模块化设计,代码组织清晰
  • ✅ 异步数据库操作支持
  • ✅ Docker容器化部署

2. 数据库模型

  • ✅ 租户管理表 (tenants)
  • ✅ Agent配置表 (agents)
  • ✅ API密钥管理表 (api_keys)
  • ✅ 聊天消息表 (chat_messages)
  • ✅ 完整的关系映射和级联删除

3. API接口实现

  • ✅ 租户管理API (创建、查询、更新、删除)
  • ✅ Agent管理API (创建、查询、更新、删除)
  • ✅ API密钥管理API (创建、查询、更新、禁用、删除)
  • ✅ API密钥认证API (解析、验证、权限检查)
  • ✅ 聊天功能API (单聊、批量处理、Agent列表)

4. 核心特性

  • ✅ 多租户数据隔离
  • ✅ API密权限管理
  • ✅ 统一响应格式
  • ✅ 错误处理和日志记录
  • ✅ 分页查询支持
  • ✅ 使用统计和监控

5. 开发工具

  • ✅ 代码格式检查 (ruff)
  • ✅ 环境配置管理
  • ✅ 启动脚本
  • ✅ 功能测试脚本
  • ✅ Docker部署配置

技术栈

  • Web框架: FastAPI 0.104.1
  • 数据库: MySQL 8.0 + SQLAlchemy 2.0 (异步)
  • ORM: SQLAlchemy
  • 数据验证: Pydantic
  • 日志: Structlog
  • 部署: Docker + Docker Compose

项目结构

api-backend/
├── 📁 src/                          # 源代码目录
│   ├── 📁 api/                      # API接口模块
│   │   └── 📁 routes/               # API路由
│   │       ├── tenant_api.py        # 租户管理API
│   │       ├── agent_api.py         # Agent管理API
│   │       ├── api_key_api.py       # API密钥管理API
│   │       ├── auth_api.py          # API密钥认证API
│   │       ├── chat_api.py          # 聊天功能API
│   │       └── __init__.py
│   ├── 📁 database/                 # 数据库模块
│   │   ├── connection.py            # 数据库连接
│   │   ├── models.py                # 数据库模型
│   │   └── __init__.py
│   ├── 📁 common/                   # 公共模块
│   │   ├── config.py                # 配置管理
│   │   ├── logger.py                # 日志配置
│   │   └── __init__.py
│   ├── 📁 utils/                    # 工具模块
│   │   ├── response.py              # 响应格式工具
│   │   └── __init__.py
│   └── __init__.py
├── 📄 main.py                       # 应用入口
├── 📄 requirements.txt              # Python依赖
├── 🐳 Dockerfile                    # Docker镜像配置
├── 🐳 docker-compose.yml            # Docker编排配置
├── 🔧 .env.example                  # 环境配置示例
├── 🔧 .env                          # 环境配置
├── 🚀 start.sh                      # 启动脚本
├── 🧪 test_api.py                   # 功能测试脚本
└── 📖 README.md                     # 项目文档

API端点一览

租户管理

  • POST /api/v2/tenants - 创建租户
  • GET /api/v2/tenants/{tenant_id} - 获取租户详情
  • PUT /api/v2/tenants/{tenant_id} - 更新租户
  • DELETE /api/v2/tenants/{tenant_id} - 删除租户

Agent管理

  • POST /api/v2/agents - 创建Agent
  • GET /api/v2/agents - 获取Agent列表
  • GET /api/v2/agents/{agent_id} - 获取Agent详情
  • PUT /api/v2/agents/{agent_id} - 更新Agent
  • DELETE /api/v2/agents/{agent_id} - 删除Agent

API密钥管理

  • POST /api/v2/api-keys - 创建API密钥
  • GET /api/v2/api-keys - 获取API密钥列表
  • GET /api/v2/api-keys/{api_key_id} - 获取API密钥详情
  • PUT /api/v2/api-keys/{api_key_id} - 更新API密钥
  • POST /api/v2/api-keys/{api_key_id}/disable - 禁用API密钥
  • DELETE /api/v2/api-keys/{api_key_id} - 删除API密钥

API密钥认证

  • POST /api/v2/auth/parse-api-key - 解析API密钥
  • POST /api/v2/auth/validate-api-key - 验证API密钥
  • POST /api/v2/auth/check-permission - 检查权限

聊天功能

  • POST /api/v2/chat - 发送聊天消息
  • GET /api/v2/chat-agents - 获取聊天Agent列表
  • POST /api/v2/chat/batch - 批量聊天处理

系统接口

  • GET /health - 健康检查
  • GET /info - API信息
  • GET /docs - Swagger文档
  • GET /redoc - ReDoc文档

部署方式

1. Docker Compose (推荐)

docker-compose up -d

2. 本地开发

# 安装依赖
pip install -r requirements.txt

# 启动服务
uvicorn main:app --reload --host 0.0.0.0 --port 8000

3. 启动脚本

./start.sh

测试验证

运行功能测试脚本:

python test_api.py

安全特性

  • 🔒 多租户数据完全隔离
  • 🔑 API密钥权限控制
  • 🛡️ 输入参数验证
  • 📝 完整的审计日志
  • 🔍 错误信息脱敏

性能优化

  • ⚡ 异步数据库操作
  • 🗄️ 数据库连接池
  • 📊 分页查询支持
  • 💾 批量操作支持

监控能力

  • 📈 API响应时间统计
  • 🔢 使用次数统计
  • 💬 消息处理监控
  • 🏥 健康状态检查

扩展性

  • 🔌 模块化架构
  • 📦 容器化部署
  • 🔄 水平扩展支持
  • 🎛️ 配置管理

与原始项目对比

功能 原始项目 新建项目 状态
租户管理 完成
Agent配置 完成
API密钥管理 完成
聊天功能 完成
多租户隔离 完成
数据库模型 完成
API文档 完成
错误处理 完成
日志记录 完成
Docker部署 完成

后续建议

  1. 数据库迁移: 使用Alembic管理数据库版本
  2. 缓存优化: 集成Redis缓存提升性能
  3. 监控告警: 集成Prometheus + Grafana
  4. API限流: 实现请求频率限制
  5. 单元测试: 添加完整的单元测试覆盖
  6. CI/CD: 设置自动化部署流水线

总结

成功创建了一个功能完整、架构清晰、部署方便的独立后端API服务。该服务完全实现了原始项目的所有核心功能,并针对生产环境进行了优化,支持多租户、API密钥管理、聊天功能等特性。项目采用现代化技术栈,具有良好的可维护性和扩展性。