Revalidate the draft pool on save, refuse duplicate swaps, refresh the Quest log after a draft
Feature 14 integration fix (Maestro 857e4c33-e250-46ec-b5ea-7dd4f3b719d9). - F14-01: storeDraft re-reads the draft pool (ListDraftPool, the same eligibility rule draft_week was given) inside the save transaction. A day whose dinner was archived, moved to tried, or planned on another current or later week while draft_week ran fails the job with the new retryable reason pool_changed and stores nothing. - F14-02: Swap refuses a dinner already on another day of the week inside the write transaction; the API answers 409 dinner_already_planned. - F14-03: a finished draft invalidates the Quest log query, as the swap path does, so the tablet strip and desktop panel drop dinners it planned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -357,13 +357,19 @@ automatic** (D-021).
|
||||
left as it is and the job fails `confirm_required`. The job reads the
|
||||
plan's revision before draft_week runs; if the plan was edited (a swap,
|
||||
or another draft stored) by the time the draft is stored, the plan is
|
||||
left as it is and the job fails `plan_changed`. A pool under seven
|
||||
left as it is and the job fails `plan_changed`. The pool is read again
|
||||
in the same transaction that stores the draft; if a dinner the draft
|
||||
planned has left it meanwhile (archived, `tried`, or a Quest log dinner
|
||||
stored on another current or later week's plan, as by a draft of
|
||||
another week), nothing is stored and the job fails `pool_changed`,
|
||||
which drafting again resolves. A pool under seven
|
||||
dinners fails the job `not_enough_dinners`, draft_week failing
|
||||
`ai_failed`. `PUT /api/v1/plans/{weekStart}/days/{date}` takes
|
||||
`{dinner_id}`, a Regular or Quest log dinner, swaps the day, recomputes
|
||||
`is_new`, moves a `synced` plan to `changed`, and answers 200 with the
|
||||
plan. A date outside the week is 400 `invalid_date`, an unknown dinner or
|
||||
a week with no plan 404, and any other dinner 409 `dinner_not_plannable`.
|
||||
a week with no plan 404, any other dinner 409 `dinner_not_plannable`, and
|
||||
a dinner already on another day of the week 409 `dinner_already_planned`.
|
||||
- Rotation check (`plan.Service`, D-021). `MarkTried(date)`, which the
|
||||
`rotation_check` schedule calls for the household-local day just past,
|
||||
moves every `quest_log` dinner planned on that date, on a plan of any
|
||||
|
||||
Reference in New Issue
Block a user