Refactor the draft creation process to fix 400 Bad Request errors.
Created by: Edouard-Legoupil
The previous implementation for creating a new proposal draft was convoluted, involving two separate API calls (/store_base_data and /save-draft) and a race condition in the frontend. This complex and buggy flow led to inconsistencies in the application state, resulting in 400 Bad Request errors when processing proposal sections.
This commit refactors the draft creation process by:
-
Simplifying the backend: The
/save-draftendpoint inbackend/api/proposals.pyno longer requires asession_idto create a new draft. It now takes all necessary data from the request body, making it a single, self-contained endpoint for creating and updating drafts. -
Streamlining the frontend: In
frontend/src/screens/Chat/Chat.jsx, thehandleGenerateClickfunction has been refactored to remove the call to the redundant/store_base_dataendpoint. It now directly calls/save-draftto create the proposal and then callsgetContentto load the newly created draft, which correctly establishes a valid session for subsequent operations.
This new, simplified flow is more robust, eliminates the race condition, and ensures the application state is managed correctly, thereby resolving the 400 Bad Request errors.
- Does my code meet the quality standards for releasing packages?
- Does the reviewer have all the information to validate the features/issues without too much research?
- Does the customer who will validate the associated tickets have the information to do so without wasting time?
Issues to validate to close :
-
issue #
Processed issues to keep open or in progress:
-
issue #
Checklist:
-
Does the package check go local? -
Does the CI pass? -
Are the added / fixed features documented, tested? -
Are the added features / solved problems briefly presented in the PR message? -
Are the changes related to tickets / issues that I have listed in the commits and in the PR itself? -
Are the tickets in "review" mode in the Project Tracking Board? -
Does each ticket, if it is to be closed after acceptance of the PR, contain a comment that tells how to validate it?