Skip to content

Requirements: Inventory v00

Functional requirements for Inventory v00 — see the project goal for purpose and scope. Each requirement has a stable identifier used by verification.md and specification.md. Requirements describe what the system does once implemented, not how it is built.

  • REQ-INV-001 — The Item entity has a nullable field totalInventoryCount of type Quantity (an amount and a unit).
  • REQ-INV-002 — The Item entity has a nullable field lastCountDate of type DateTime (a timestamp plus an IANA timezone). Wire contract: { "timestamp": <epoch millis>, "tz": "<IANA name>" }, where tz is the plain IANA string (e.g. "America/New_York").
  • REQ-INV-003 — Creating an Item accepts both fields; both are optional, and an omitted field is persisted as null.
  • REQ-INV-004 — Reading an Item returns both fields, null when unset.
  • REQ-INV-005 — Updating an Item (PUT full-document replace) persists the submitted values; a field omitted from the request is cleared to null, and the null is durable across subsequent reads.
  • REQ-INV-006 — Quantity normalization for totalInventoryCount: when amount is present and unit absent, unit defaults to "each"; when unit is present and amount absent, amount defaults to 0; when both are absent the whole field is null. (This satisfies the persistence layer’s both-columns-null-or-both-set rule by filling the missing half rather than rejecting.)
  • REQ-INV-007 — No range or content validation beyond nullability: any numeric amount, any unit string, and any timestamp are accepted.
  • REQ-INV-008 — Both fields are additive and backward compatible: existing Item create/read/update payloads that omit them remain valid and unchanged in behavior.
  • REQ-INV-010 — The Items List View exposes three columns: count amount, count unit, and last count date. All three are hidden by default and made visible through the column-visibility menu.
  • REQ-INV-011 — The three columns are inline-editable; edits persist through the same update path as the existing editable columns.
  • REQ-INV-012 — Inline editing mirrors the existing quantity columns: count amount uses the default numeric editor, count unit uses the unit editor, and last count date uses a date cell editor at date granularity. A date chosen inline is stored as noon (12:00) in the hinted timezone (noon avoids off-by-one date shifts under timezone/DST conversion); precise time-of-day is only set via the Detail Edit panel.
  • REQ-INV-013 — Columns format per existing conventions (en-US); an empty value renders as the existing placeholder.
  • REQ-INV-014 — Because count amount and unit are separate cells with the REQ-INV-006 defaults, a single inline edit cannot set the whole count to null; fully clearing the count is done in the Detail Edit panel.
  • REQ-INV-020 — The Item Detail View panel displays both fields under an “Inventory Count” group placed at the end of the panel; empty values render as the existing placeholder.
  • REQ-INV-021 — The Item Detail Edit panel exposes both fields under an “Inventory Count” group placed at the end (and listed in the panel’s table of contents): a number + unit input for the count and a clearable date-time input for the date.
  • REQ-INV-022 — Either field can be set to a value and later cleared back to null in the Edit panel, and the null persists on reload.
  • REQ-INV-023 — When lastCountDate is null, the date-time edit control pre-seeds to “now” for convenience; the user may accept it, change it, or clear it back to null.
  • REQ-INV-030 — The Item current-system functional reference documents both new fields (type, nullability, and the normalization/default behavior).

Copyright: (c) Arda Systems 2025-2026, All rights reserved