Files
asset_helper/技术文档/asset_helper_backend 微服务基础架构(V1).md
fish 3f4165fe78 feat (infra): Trae 完成 asset_helper_backend 微服务基础架构 V1 初始化
核心实现:搭建 Monorepo 架构,完成 shared 共享包、gateway、user-service 基础框架开发
技术落地:严格匹配指定技术栈版本,完成 Docker、gRPC、FastAPI、PostgreSQL、Redis 等配置,实现服务间基础连通
配套文件:生成 Makefile、环境变量模板、数据库 / 脚本初始化文件及启动验证文档
架构定位:仅搭建基础架构骨架,无任何业务逻辑、业务规则及业务相关字段,为后续业务开发提供支撑
2026-03-27 20:38:10 +08:00

192 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# asset_helper_backend 微服务基础架构V1
请一次性完整生成 asset_helper_backend Monorepo 微服务后端项目严格遵循以下所有要求确保所有文件可直接编译运行、Docker Compose 本地一键启动,无任何报错,代码风格统一、类型完整,完全适配单人+AITrae的开发模式同时需支持本机无额外环境仅需安装Docker和Docker Compose即可启动且包含清晰的启动验证步骤方便我确认项目启动效果**本项目为第一版基础架构开发,仅搭建架构骨架,不包含任何业务逻辑**。
## 一、严格锁定技术栈版本(一字不差,不可修改)
1. Gateway: FastAPI + WebSocket唯一对外入口负责HTTP请求转发和WebSocket实时通信基于Starlette框架实现异步高并发通信支持文本与二进制消息传输
2. 微服务内部通信: FastAPI + gRPC高性能跨服务通信基于HTTP/2协议支持双向流、头部压缩和多路复用吞吐量优于传统REST API
3. 数据库: PostgreSQL 18.3-alpine3.23每个微服务独立DB实例支持数据持久化和初始化脚本执行配置健康检查确保服务可用性
4. 缓存/消息: Redis 8.6.2-alpine轻量级缓存支持高并发访问配置健康检查
5. 容器化: Docker + Docker Compose实现服务隔离与快速部署区分本地开发和生产环境配置
6. Python: 3.13.7-alpine3.22轻量级基础镜像体积小巧适合容器化部署支持异步I/O操作
7. 依赖管理: pyproject.toml + uv全局统一依赖管理启用uv workspaces整合所有子服务依赖
8. 开发模式: 单人+AITraeMonorepo架构微服务独立部署、可扩展
## 二、严格遵循目录结构(一字不差,所有文件必须生成,无遗漏)
asset_helper_backend/
├── docker-compose.yml # 本地开发配置(不变,包含所有服务及健康检查)
├── docker-compose.prod.yml # 生产环境配置(不变,无挂载、配置重启策略)
├── .env.example # 环境变量模板(包含所有必要环境变量,可直接复制为.env使用
├── Makefile # 单人+AI通用命令入口实现所有核心命令可直接执行
├── .gitignore # 避免AI提交冲突忽略.env、虚拟环境、编译文件等
├── pyproject.toml # 全局Python依赖规范启用uv workspaces统一依赖版本
├── scripts/ # 可直接执行脚本(权限配置为可执行,无需手动修改)
│ ├── init-db.sh # 初始化数据库,为每个微服务创建独立库、用户和权限
│ └── proto-gen.sh # 编译gRPC协议文件输出到各服务指定目录
├── shared/ # 共享核心包(纯工具、无业务逻辑,可被所有服务依赖,贴合第一版基础架构定位)
│ ├── src/shared/
│ │ ├── models/ # Pydantic基模型和SQLAlchemy基类
│ │ ├── exceptions/ # 统一异常类和异常处理器
│ │ ├── middleware/ # 通用中间件关联ID、日志、异常处理
│ │ ├── utils/ # 工具类配置加载、日志、安全、gRPC/Redis客户端
│ │ └── proto/ # gRPC协议定义文件先创建user.proto
│ ├── pyproject.toml # 共享包依赖配置
│ └── Dockerfile # 共享包构建配置
├── services/ # 微服务目录(单人+AI开发可无限新增
│ ├── gateway/ # 对外入口HTTP + WebSocket仅搭建基础框架无业务逻辑处理
│ │ ├── app/
│ │ │ ├── api/ # HTTP路由转发到gRPC服务
│ │ │ ├── ws/ # WebSocket处理连接管理、消息处理
│ │ │ ├── core/ # 配置、启动、依赖注入
│ │ │ └── main.py # FastAPI实例启动包含HTTP和WebSocket
│ │ ├── Dockerfile # 基于python:3.13.7-alpine3.22构建启动uvicorn
│ │ └── requirements.txt # 网关服务依赖
│ └── user-service/ # 用户微服务纯gRPC接口无HTTP仅搭建基础框架无业务逻辑
│ ├── app/
│ │ ├── api/ # gRPC服务实现对应proto定义的所有方法
│ │ ├── core/ # 配置继承shared.config
│ │ ├── db/ # 异步SQLAlchemy会话和User模型
│ │ └── main.py # gRPC服务器启动
│ ├── Dockerfile # 基于python:3.13.7-alpine3.22构建启动gRPC服务
│ └── requirements.txt # 用户服务依赖
└── infra/ # 基础设施(不变,包含数据库、缓存、反向代理配置)
├── postgres/ # PostgreSQL相关配置数据持久化、初始化
├── redis/ # Redis相关配置数据持久化
└── nginx/ # Nginx反向代理配置
## 三、核心文件具体要求(必须完全实现,不可省略)
### 1. 根目录文件
1pyproject.toml指定Python 3.13.7全局依赖包含fastapi、uvicorn、grpcio、grpcio-tools、pydantic、sqlalchemy、asyncpg、redis、python-dotenv、loguru开发依赖包含ruff、pytest、pytest-asyncio、pre-commit启用uv workspaces包含shared/、services/gateway/、services/user-service/。
2Makefile必须实现all、build、up、down、logs、proto-gen、init-db、test、lint命令命令可直接执行无需手动修改。
3.gitignore忽略.env、__pycache__、.venv、*.pyc、dist/、build/、*.log、docker-compose.override.yml。
4scripts/proto-gen.sh自动编译shared/src/shared/proto/**/*.proto文件输出到各服务的app/grpc_generated/目录,添加可执行权限,可直接运行。
5scripts/init-db.sh为每个微服务创建独立PostgreSQL库、用户、权限添加可执行权限可直接运行支持数据库初始化脚本执行。
6.env.example包含ENV、DEBUG、POSTGRES_USER、POSTGRES_PASSWORD、REDIS_URL、GRPC_PORT、HTTP_PORT等必要环境变量标注默认值。
### 2. shared共享包
1shared/pyproject.toml名称为asset_helper_shared依赖包含fastapi、pydantic、grpcio、sqlalchemy、asyncpg、redis、loguru。
2shared.models实现BaseModelPydantic基类、BaseDBModelSQLAlchemy基类含id、created_at、updated_at字段
3shared.exceptions实现AppException基类以及NotFoundError、UnauthorizedError、ForbiddenError、BadRequestError、InternalError等具体异常同时实现全局异常处理器可被gateway直接使用
4shared.middleware实现CorrelationIdMiddleware、LoggingMiddleware、ExceptionMiddleware适配FastAPI异步请求流程。
5shared.utils实现config.pyPydantic Settings加载环境变量、logger.pyloguru全局日志配置、security.pyJWT生成与验证、密码哈希、grpc_client.pygRPC客户端基类支持服务调用、redis_client.pyRedis连接池配置支持异步操作
6shared/proto/user.proto定义UserService服务包含GetUser、CreateUser、UpdateUser、DeleteUser、ListUsers五个接口指定proto3版本定义请求和响应消息结构字段编号合理分配仅定义基础接口模板不包含任何业务规则和业务字段设计贴合基础架构定位。
### 3. user-service纯gRPC微服务
1技术与端口Python 3.13.7-alpine3.22gRPC服务监听0.0.0.0:50051独立PostgreSQL库为user_db。
2目录实现app/main.py启动gRPC服务器app/core/config.py继承shared.configapp/db/session.py实现异步SQLAlchemy会话app/db/models.py实现User模型继承shared.models.BaseDBModel仅包含基础字段无业务相关字段app/api/user_service.py实现UserService所有gRPC方法仅模拟基础数据库CRUD操作无任何业务逻辑和业务规则app/grpc_generated/目录用于存放自动生成的gRPC代码。
3Dockerfile基于python:3.13.7-alpine3.22安装依赖、复制代码、启动gRPC服务配置健康检查。
### 4. gateway对外入口
1技术与端口FastAPI + WebSocketHTTP服务监听0.0.0.0:8000WebSocket端点为/ws内部调用user-service:50051的gRPC服务。
2目录实现app/main.py创建FastAPI实例集成HTTP和WebSocketapp/core/config.py配置服务参数app/api/v1/users.py实现用户HTTP CRUD路由仅负责转发到gRPC服务无任何业务逻辑处理app/ws/manager.py实现WebSocket连接管理器支持多连接管理app/ws/handlers.py实现用户消息处理支持文本和二进制消息无业务相关消息处理逻辑app/dependencies.py实现gRPC客户端注入。
3Dockerfile基于python:3.13.7-alpine3.22安装依赖、复制代码、启动uvicorn支持WebSocket配置健康检查。
### 5. Docker Compose配置
1docker-compose.yml本地包含postgres18.3-alpine3.23、redis8.6.2-alpine、user-service、gateway四个服务所有服务加入asset_helper_net网络配置服务依赖健康检查postgres使用pg_isready检查redis使用redis-cli ping检查环境变量从.env读取配置数据持久化卷无需本机安装Python、PostgreSQL、Redis等依赖仅需Docker和Docker Compose即可启动新增启动前置说明告知需先安装Docker和Docker Compose以及复制.env.example为.env的步骤
2docker-compose.prod.yml生产无本地文件挂载配置服务重启策略为always仅暴露gateway:8000端口其他服务不对外暴露端口强化安全配置移除开发环境冗余参数。
## 四、最终交付要求(必须满足,否则需重新调整)
1. 所有技术栈版本严格匹配,无任何版本偏差;
2. 目录结构与要求完全一致,无遗漏、无多余文件;
3. 执行make proto-gen可正常生成gRPC代码无编译错误
4. 执行make init-db可正常初始化所有微服务的独立数据库
5. 执行make up可一键启动所有容器所有服务健康运行无报错
6. 访问gateway:8000/docs可正常打开Swagger文档查看HTTP接口
7. gateway的WebSocket端点/ws可正常连接支持消息收发
8. user-service的gRPC端口50051可正常连通gateway能正常调用其gRPC接口
9. shared共享包可被所有服务正常导入无导入错误
10. 代码类型标注完整符合Python规范无语法错误、无冗余代码
11. 所有脚本可直接执行,无需手动修改权限或配置;
12. 项目支持后续新增微服务,扩展灵活,不影响现有服务运行;
13. 本机无Python、PostgreSQL、Redis等环境也可正常启动仅需安装Docker和Docker ComposeTrae需在项目根目录生成清晰的「本地启动&验证步骤文档」命名为STARTUP_VERIFY.md
14. STARTUP_VERIFY.md需包含Docker和Docker Compose安装指引极简版、复制.env.example为.env的操作步骤、执行make up启动服务的命令、服务启动后验证步骤含Swagger访问、WebSocket连接、gRPC连通性的具体操作和预期结果、常见启动报错排查方法
15. 启动验证步骤需简单易懂,无需专业技术背景,可直接按步骤操作确认项目启动效果,确保每一步验证都有明确的操作命令和预期反馈;
16. 全程严格遵循“第一版基础架构”定位,所有代码仅包含架构层、工具层实现,不涉及任何业务逻辑、业务规则、业务字段,不添加任何与具体业务相关的代码或配置;
17. user-service的User模型仅包含基础通用字段如id、created_at、updated_at、username、password_hash不添加任何业务相关字段如角色、权限、业务关联信息等gRPC方法仅实现基础CRUD无业务逻辑判断。
> (注:文档部分内容可能由 AI 生成)