这是一个基于Flask的后端项目框架,提供了完整的项目结构和基本功能实现。
.
├── app # 应用主目录
│ ├── __init__.py # 应用初始化
│ ├── api # API层 - 处理HTTP请求和响应
│ │ ├── __init__.py # API蓝图初始化
│ │ ├── namespaces # API命名空间
│ │ │ ├── __init__.py
│ │ │ ├── health_ns.py # 健康检查API
│ │ │ ├── user_ns.py # 用户管理API
│ │ │ ├── service_ns.py # 微服务管理API
│ │ │ └── algorithm_service_ns.py # 算法微服务化API
│ │ └── routes.py # API路由定义(已迁移到命名空间)
│ ├── services # 服务层 - 处理业务逻辑
│ │ ├── __init__.py # 服务层初始化
│ │ ├── user_service.py # 用户服务
│ │ ├── service_service.py # 微服务管理服务
│ │ └── algorithm_service.py # 算法微服务生成服务
│ ├── repositories # 数据访问层 - 处理数据持久化
│ │ ├── __init__.py # 数据访问层初始化
│ │ ├── base_repository.py # 基础数据访问仓库
│ │ ├── user_repository.py # 用户数据访问仓库
│ │ └── service_repository.py # 微服务数据访问仓库
│ ├── models # 数据模型定义
│ │ ├── __init__.py
│ │ ├── user # 用户相关模型
│ │ │ ├── __init__.py
│ │ │ ├── user.py
│ │ │ ├── role.py
│ │ │ ├── role_permission.py
│ │ │ └── user_tokens.py
│ │ └── service # 微服务相关模型
│ │ ├── __init__.py
│ │ ├── service.py
│ │ ├── service_norm.py
│ │ ├── service_source.py
│ │ ├── service_api.py
│ │ └── service_api_parameter.py
│ ├── extensions.py # 扩展模块
│ └── utils # 工具函数模块
│ ├── __init__.py
│ ├── file_utils.py # 文件处理工具
│ ├── code_checker.py # 代码规范检查工具
│ └── remote_service.py # 远程服务通信
├── mocks # 模拟服务
│ ├── __init__.py
│ ├── remote_service.py # 模拟远程服务
│ └── run.py # 启动模拟服务的脚本
├── tests # 测试目录
│ ├── __init__.py
│ ├── conftest.py # 测试配置
│ ├── unit # 单元测试
│ │ ├── __init__.py
│ │ └── test_file_utils.py
│ ├── integration # 集成测试
│ │ ├── __init__.py
│ │ └── test_api.py
│ └── functional # 功能测试
│ ├── __init__.py
│ └── test_file_processing.py
├── config.py # 配置文件
├── manage.py # 管理命令
├── requirements.txt # 依赖列表
├── uploads # 上传文件目录
├── static # 静态文件
│ └── index.html # 测试页面
├── nginx # Nginx配置
│ └── conf.d # Nginx配置文件目录
│ └── app.conf # 应用Nginx配置
├── Dockerfile # Docker构建文件
├── docker-compose.yml # Docker Compose配置
├── .github # GitHub集成
│ └── workflows # GitHub Actions工作流
│ └── ci-cd.yml # CI/CD工作流配置
├── wsgi.py # 应用入口
└── README.md # 项目说明
- 模块化设计,便于扩展
- 三层架构(API层、服务层、数据访问层)
- 完整的数据库支持(SQLAlchemy)
- 数据库迁移支持(Flask-Migrate)
- CORS跨域支持
- 环境配置管理
- CLI管理命令
- 微服务管理功能(增删改查、搜索、筛选)
- 算法代码微服务化功能
- 代码规范自动检查
- 远程服务通信模块
- Swagger API文档
- Docker部署支持
- CI/CD集成
- 单元测试、集成测试和功能测试框架
本项目采用完整的三层架构设计:
- API层(Controllers):处理HTTP请求和响应,参数校验,不包含业务逻辑
- 服务层(Services):处理所有业务逻辑,是应用程序的核心
- 数据访问层(Repositories):处理数据持久化,包括数据库操作
API层位于app/api/namespaces目录,主要负责:
- 处理HTTP请求和响应
- 输入验证和参数校验
- 路由和端点定义
- 响应格式化和错误处理
服务层位于app/services目录,包含所有业务逻辑处理代码。主要服务包括:
- 用户服务(UserService):处理用户注册、认证、查询等
- 微服务管理服务(ServiceService):处理微服务的增删改查、搜索、筛选等
- 算法微服务生成服务(AlgorithmService):处理算法代码的微服务化逻辑
数据访问层位于app/repositories目录,专门处理数据库操作和持久化逻辑:
- 基础仓库(BaseRepository):提供通用的CRUD操作
- 用户仓库(UserRepository):处理用户表的特定数据访问操作
- 微服务仓库(ServiceRepository):处理微服务相关表的数据访问操作
数据访问层通过泛型和依赖注入的方式设计,便于扩展和测试。
- 关注点分离:每一层只关注自己的职责,代码更清晰
- 可测试性:各层可以独立测试,不依赖其他层的实现
- 可替换性:底层实现可以替换而不影响上层代码
- 可维护性:各层职责明确,便于维护和扩展
- 代码复用:通用逻辑可以在各层之间复用
- User:用户基本信息
- Role:角色信息
- RolePermission:角色权限关系
- UserToken:用户令牌信息
- Service:微服务基本信息
- ServiceNorm:服务规范评分
- ServiceSource:服务来源信息
- ServiceApi:服务API信息
- ServiceApiParameter:API参数信息
- python: 3.10
pip install -r requirements.txt创建.env文件并设置以下变量:
FLASK_APP=wsgi.py
FLASK_DEBUG=1
SECRET_KEY=your_secret_key
DATABASE_URL=sqlite:///dev.db
REMOTE_SERVICE_URL=http://your-remote-service.com/api/process
python manage.py create_db # 创建数据库表
python manage.py seed_db # 添加示例数据python wsgi.py或者使用Flask CLI:
flask runpython -m mocks.run应用启动后,访问:
http://localhost:5000/api/docs
目前线上版本的API可通过访问在线版本的Swagger文档查看
- 用户上传打包好的算法代码ZIP文件到后端
- 后端创建临时目录,并在临时目录内解压文件
- 后端分析代码,识别主算法文件
- 对主算法文件进行代码规范检查(包括函数封装、Google风格注释、类型注解)
- 将主算法文件名称和内容发送给微服务生成服务
- 微服务生成服务返回生成的微服务框架文件
- 将生成的文件写入当前目录
- 重新打包为ZIP文件
- 返回生成的微服务项目ZIP文件给前端
微服务管理功能提供了对微服务的全生命周期管理,包括:
- 微服务创建:创建新的微服务,包括基本信息、规范评分、来源信息和API定义
- 微服务查询:按ID查询、关键词搜索或条件筛选微服务
- 微服务更新:更新微服务的各项信息,包括关联数据
- 微服务删除:软删除微服务(将deleted字段标记为1)
微服务相关数据表包括:
services: 存储微服务基本信息service_norms: 存储微服务规范评分service_sources: 存储微服务来源信息service_apis: 存储微服务API信息service_api_parameters: 存储API参数信息
项目内包含数据库更新脚本,运行脚本会清空现有数据并写入mock内的数据:
# Windows
refresh_dev_db.bat
# Linux
cd ioeb_backend
./db.shpytest tests/unitpytest tests/integrationpytest tests/functionalpytestcd ioeb_backend
docker-compose up -d