semmelei: Review Window, confirmations move to the Dispatch
メンテナーはふだん 1 日以内に返信
関連するプルリクエストがすでにマージされています。
- #297 @omikron-agent による — マージ済み
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- api, backend, frontend, full-stack, testing
調査の方向性
Start with the schedule module beside the Deadline, then trace the admin settings API and form, pickup day dispatch tick, Procurement response and page, and the HTTP harness tests with the recording mail sink. Check the existing at-most-once mail logic and CODING_STANDARDS.md, then follow the API client generation and rorm migration workflow. Done means every listed acceptance criterion passes, including review-window timing, cancellation, and the three Procurement states.
索引モデルが issue の本文から書いたものです。
説明
Parent
#87
What to build
A pickup day gets a Review Window between its Deadline and its Dispatch, and the binding confirmations move from the Deadline to the Dispatch. No Bakery mail yet (that follows in the Bakery CSV ticket); here the Dispatch marks the day dispatched and sends the confirmations.
- Setting: Admins set the Review Window in whole minutes (non-negative, default 0) through the admin settings API and form.
- Timing: Dispatch due = the day's Deadline (rule or override) + the current Review Window, computed, never stored, in the schedule module next to the Deadline (
Europe/Berlin). A Deadline override moves the Dispatch; a change of the Review Window applies to a day currently in its window on the next tick. - Tick: freezing at the Deadline (and "Jetzt einfrieren") stays, but sends nothing. A second step picks days whose Dispatch is due, not called off and not yet dispatched, marks them dispatched (new nullable "dispatched at" on the pickup day) and sends the confirmations with the existing at-most-once logic. A Dispatch missed during downtime happens on the first tick after restart. "Jetzt einfrieren" does not move the Dispatch.
- Review: an order cancelled by an Admin during the window gets its cancellation mail and no confirmation.
- Procurement: the summary response carries the Dispatch due time and "dispatched at"; the page shows "Bestellung offen bis HH:MM", "Prüfzeit bis HH:MM" and "An die Bäckerei versendet um HH:MM".
- Cancel after Dispatch: still allowed; the frontend warns that the sent order does not change.
- New i18n keys per CODING_STANDARDS.md, API client regenerated, rorm migration committed.
With the default of 0 the Dispatch happens at the Deadline, so nothing visible changes until an Admin sets a Review Window.
Acceptance criteria
- Review Window settable via the admin settings API and form; negative values rejected
- No mail at the Deadline when the Review Window is > 0; confirmations at Deadline + Review Window, not one minute before
- Review Window 0 confirms at the Deadline
- A Deadline override of a single day moves its Dispatch
- Shortening the Review Window during a day's window dispatches it on the next tick
- A called-off day is never dispatched
- "Jetzt einfrieren" freezes but does not dispatch early
- An order cancelled during the window gets a cancellation and no confirmation
- Each day is dispatched once; a later tick sends nothing again
- The Procurement response reports the right state before the Deadline, during the window and after the Dispatch; the page renders those three states
- Cancelling an order on a dispatched day shows a warning
- Tests go through the HTTP harness with the in-process tick and recording mail sink
- 主要言語
- TypeScript
- スター
- 0
- フォーク
- 1
- 平均マージ
- 9時間 39分
- マージ済み PR(30日)
- 144
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
myOmikron/code のほかの issue
-
wayfinder:task
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
メンテナーはふだん 1 日以内に返信
-
wayfinder:task
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
myOmikron/code#102 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
ready-for-agent
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
メンテナーはふだん 1 日以内に返信
-
ready-for-agent
難易度 4/5 3〜5日 初心者へのやさしさ 39/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 83/100
メンテナーはふだん 1 日以内に返信
-
🔊 a11y
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
betagouv/mon-entreprise#4726 ·
メンテナーはふだん 9 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
Deltares/fews-pi-requests#357 ·
メンテナーはふだん 1 日以内に返信
-
bug confirmed js v6
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信