feat: Enhance idea retrieval to include the latest generation and support user-specific ideas not tied to a project, while also improving asset storage uniqueness and adjusting generation cancellation timeout.

This commit is contained in:
xds
2026-02-16 16:35:26 +03:00
parent 5e7dc19bf3
commit 68a3f529cb
15 changed files with 67 additions and 30 deletions

View File

@@ -6,34 +6,30 @@ from api.service.idea_service import IdeaService
from api.service.generation_service import GenerationService
from models.Idea import Idea
from api.models.GenerationRequest import GenerationResponse, GenerationsResponse
from api.models.IdeaRequest import IdeaCreateRequest, IdeaUpdateRequest
from api.models.IdeaRequest import IdeaCreateRequest, IdeaUpdateRequest, IdeaResponse
router = APIRouter(prefix="/api/ideas", tags=["ideas"])
@router.post("", response_model=Idea)
async def create_idea(
request: IdeaCreateRequest,
project_id: str = Depends(get_project_id),
project_id: Optional[str] = Depends(get_project_id),
current_user: dict = Depends(get_current_user),
idea_service: IdeaService = Depends(get_idea_service)
):
if not project_id and not request.project_id:
raise HTTPException(status_code=400, detail="Project ID header is required")
pid = project_id or request.project_id
return await idea_service.create_idea(request.name, request.description, pid, str(current_user["_id"]))
@router.get("", response_model=List[Idea])
@router.get("", response_model=List[IdeaResponse])
async def get_ideas(
project_id: str = Depends(get_project_id),
project_id: Optional[str] = Depends(get_project_id),
limit: int = 20,
offset: int = 0,
current_user: dict = Depends(get_current_user),
idea_service: IdeaService = Depends(get_idea_service)
):
if not project_id:
raise HTTPException(status_code=400, detail="Project ID header is required")
return await idea_service.get_ideas(project_id, limit, offset)
return await idea_service.get_ideas(project_id, str(current_user["_id"]), limit, offset)
@router.get("/{idea_id}", response_model=Idea)
async def get_idea(