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);若未满足依赖,可临时禁用路由注册。
- 提供正式的 DB 迁移脚本(特别是
agent_active_states)。 - 为 API 增加可选鉴权/网关层限流,并补充分布式部署文档。
- 对 Agent
config引入基础 schema 校验或示例模板校验,减少配置错误。 - 完善测试:为核心路由添加集成测试(租户/Agent/API Key/活跃状态)。
- 评估插件接口的依赖一致性(Peewee vs SQLAlchemy),决定统一的数据访问层或标注实验状态。
已成功创建了一个独立的MaiMBot API后端服务,实现了与原始项目完全相同的多租户AI聊天机器人配置和管理功能。
- ✅ 完整的FastAPI项目结构
- ✅ 模块化设计,代码组织清晰
- ✅ 异步数据库操作支持
- ✅ Docker容器化部署
- ✅ 租户管理表 (tenants)
- ✅ Agent配置表 (agents)
- ✅ API密钥管理表 (api_keys)
- ✅ 聊天消息表 (chat_messages)
- ✅ 完整的关系映射和级联删除
- ✅ 租户管理API (创建、查询、更新、删除)
- ✅ Agent管理API (创建、查询、更新、删除)
- ✅ API密钥管理API (创建、查询、更新、禁用、删除)
- ✅ API密钥认证API (解析、验证、权限检查)
- ✅ 聊天功能API (单聊、批量处理、Agent列表)
- ✅ 多租户数据隔离
- ✅ API密权限管理
- ✅ 统一响应格式
- ✅ 错误处理和日志记录
- ✅ 分页查询支持
- ✅ 使用统计和监控
- ✅ 代码格式检查 (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 # 项目文档
POST /api/v2/tenants- 创建租户GET /api/v2/tenants/{tenant_id}- 获取租户详情PUT /api/v2/tenants/{tenant_id}- 更新租户DELETE /api/v2/tenants/{tenant_id}- 删除租户
POST /api/v2/agents- 创建AgentGET /api/v2/agents- 获取Agent列表GET /api/v2/agents/{agent_id}- 获取Agent详情PUT /api/v2/agents/{agent_id}- 更新AgentDELETE /api/v2/agents/{agent_id}- 删除Agent
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密钥
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文档
docker-compose up -d# 安装依赖
pip install -r requirements.txt
# 启动服务
uvicorn main:app --reload --host 0.0.0.0 --port 8000./start.sh运行功能测试脚本:
python test_api.py- 🔒 多租户数据完全隔离
- 🔑 API密钥权限控制
- 🛡️ 输入参数验证
- 📝 完整的审计日志
- 🔍 错误信息脱敏
- ⚡ 异步数据库操作
- 🗄️ 数据库连接池
- 📊 分页查询支持
- 💾 批量操作支持
- 📈 API响应时间统计
- 🔢 使用次数统计
- 💬 消息处理监控
- 🏥 健康状态检查
- 🔌 模块化架构
- 📦 容器化部署
- 🔄 水平扩展支持
- 🎛️ 配置管理
| 功能 | 原始项目 | 新建项目 | 状态 |
|---|---|---|---|
| 租户管理 | ✅ | ✅ | 完成 |
| Agent配置 | ✅ | ✅ | 完成 |
| API密钥管理 | ✅ | ✅ | 完成 |
| 聊天功能 | ✅ | ✅ | 完成 |
| 多租户隔离 | ✅ | ✅ | 完成 |
| 数据库模型 | ✅ | ✅ | 完成 |
| API文档 | ✅ | ✅ | 完成 |
| 错误处理 | ✅ | ✅ | 完成 |
| 日志记录 | ✅ | ✅ | 完成 |
| Docker部署 | ✅ | ✅ | 完成 |
- 数据库迁移: 使用Alembic管理数据库版本
- 缓存优化: 集成Redis缓存提升性能
- 监控告警: 集成Prometheus + Grafana
- API限流: 实现请求频率限制
- 单元测试: 添加完整的单元测试覆盖
- CI/CD: 设置自动化部署流水线
成功创建了一个功能完整、架构清晰、部署方便的独立后端API服务。该服务完全实现了原始项目的所有核心功能,并针对生产环境进行了优化,支持多租户、API密钥管理、聊天功能等特性。项目采用现代化技术栈,具有良好的可维护性和扩展性。