fix(web): restore project workspace context
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
Deploy / Deploy Staging (push) Has been cancelled
Deploy / Deploy Production (push) Has been cancelled

This commit is contained in:
Xiaoxia AI
2026-06-22 13:19:45 +08:00
parent 04861a48cb
commit a1cf1ddd9d
11 changed files with 510 additions and 34 deletions
+25 -18
View File
@@ -6,17 +6,39 @@ from app.schemas.project import (
ListProjectsResponse,
ProjectResponse,
)
from fastapi import APIRouter, Depends
from fastapi import APIRouter, Depends, HTTPException, status
from packages.application import (
CreateProjectCommand,
CreateProjectUseCase,
GetProjectUseCase,
ListProjectsUseCase,
)
router = APIRouter()
def _to_project_response(item) -> ProjectResponse:
return ProjectResponse(
id=item.id,
workspace_id=item.workspace_id,
name=item.name,
description=item.description,
)
@router.get("/{project_id}", response_model=ProjectResponse)
def get_project(
project_id: str,
project_repository: Any = Depends(get_project_repository),
) -> ProjectResponse:
use_case = GetProjectUseCase(project_repository)
project = use_case.execute(project_id)
if project is None:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Project not found")
return _to_project_response(project)
@router.get("", response_model=ListProjectsResponse)
def list_projects(
workspace_id: str,
@@ -24,17 +46,7 @@ def list_projects(
) -> ListProjectsResponse:
use_case = ListProjectsUseCase(project_repository)
projects = use_case.execute(workspace_id)
return ListProjectsResponse(
items=[
ProjectResponse(
id=item.id,
workspace_id=item.workspace_id,
name=item.name,
description=item.description,
)
for item in projects
]
)
return ListProjectsResponse(items=[_to_project_response(item) for item in projects])
@router.post("", response_model=ProjectResponse)
@@ -50,9 +62,4 @@ def create_project(
description=request.description,
)
)
return ProjectResponse(
id=project.id,
workspace_id=project.workspace_id,
name=project.name,
description=project.description,
)
return _to_project_response(project)