feat (infra): Trae 完成 asset_helper_backend 微服务基础架构 V1 初始化

核心实现:搭建 Monorepo 架构,完成 shared 共享包、gateway、user-service 基础框架开发
技术落地:严格匹配指定技术栈版本,完成 Docker、gRPC、FastAPI、PostgreSQL、Redis 等配置,实现服务间基础连通
配套文件:生成 Makefile、环境变量模板、数据库 / 脚本初始化文件及启动验证文档
架构定位:仅搭建基础架构骨架,无任何业务逻辑、业务规则及业务相关字段,为后续业务开发提供支撑
This commit is contained in:
fish
2026-03-27 20:38:10 +08:00
parent 1ad8ec9be5
commit 3f4165fe78
44 changed files with 1407 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
from fastapi import APIRouter, Depends, HTTPException
from app.grpc_generated import user_pb2, user_pb2_grpc
from app.dependencies import get_user_service_client
from typing import List
router = APIRouter()
@router.get("/users/{user_id}")
async def get_user(user_id: int, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
request = user_pb2.GetUserRequest(id=user_id)
response = await client.GetUser(request)
if not response.user.id:
raise HTTPException(status_code=404, detail="User not found")
return response.user
@router.post("/users")
async def create_user(username: str, password_hash: str, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
request = user_pb2.CreateUserRequest(username=username, password_hash=password_hash)
response = await client.CreateUser(request)
return response.user
@router.put("/users/{user_id}")
async def update_user(user_id: int, username: str, password_hash: str, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
request = user_pb2.UpdateUserRequest(id=user_id, username=username, password_hash=password_hash)
response = await client.UpdateUser(request)
if not response.user.id:
raise HTTPException(status_code=404, detail="User not found")
return response.user
@router.delete("/users/{user_id}")
async def delete_user(user_id: int, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
request = user_pb2.DeleteUserRequest(id=user_id)
await client.DeleteUser(request)
return {"message": "User deleted successfully"}
@router.get("/users")
async def list_users(page: int = 1, page_size: int = 10, client: user_pb2_grpc.UserServiceStub = Depends(get_user_service_client)):
request = user_pb2.ListUsersRequest(page=page, page_size=page_size)
response = await client.ListUsers(request)
return {"users": response.users, "total": response.total}