semmelei: Review Window, confirmations move to the Dispatch

クローズ
#90 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

関連するプルリクエストがすでにマージされています。

  • #297 @omikron-agent による — マージ済み

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript

調査の方向性

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 の本文から書いたものです。

説明

ready-for-agent

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 を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

myOmikron/code のほかの issue

myOmikron/code の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。