feat(assets): ITIL category + lifecycle stage pickers on asset forms (PMS-476) #325

Merged
YousifShkara merged 1 commit from feat/PMS-476-itil-pickers into main 2026-06-24 09:59:15 +02:00
Owner

PMS-456 phase 1 added asset_types.itil_category + assets.itil_lifecycle_stage server-side, but the SPA had no inputs for either - operators had to set them by direct SQL. PMS-476 adds the editor surface:

  • Asset Types settings form (in pages/settings.rs::AssetTypeFormModal) gains an "ITIL category" input. Free-text so a tenant can coin a value beyond the v3 service-asset-and-configuration-mgmt set; the help text lists the standard classes (hardware / software / service / network / document / location) as suggestions. The save body sends itil_category alongside the existing fields; AssetTypeRow deserialises it with #[serde(default)] so types created before the column shipped still load cleanly.

  • Asset edit modal (in pages/assets.rs) gains an "ITIL lifecycle stage" input with the same free-text shape; help text suggests planned / in_service / retired. A new e_itil_stage signal seeds from the asset on edit-open and rides into the PUT body as itil_lifecycle_stage.

  • RemoteAsset gains itil_lifecycle_stage: Option<String> (also #[serde(default)]).

  • Asset detail page renders the current lifecycle stage as a gray badge in the Status sidebar card, between Status and Warranty. Hidden when unset so assets that pre-date the column stay visually clean.

The asset-list itil_category filter from AC4 is deferred to a follow-up - the existing filter sidebar is a heavier refactor than the rest of this ticket warrants, and the pickers + detail render are the immediate operator value.

#PMS-476

PMS-456 phase 1 added `asset_types.itil_category` + `assets.itil_lifecycle_stage` server-side, but the SPA had no inputs for either - operators had to set them by direct SQL. PMS-476 adds the editor surface: * `Asset Types` settings form (in `pages/settings.rs::AssetTypeFormModal`) gains an "ITIL category" input. Free-text so a tenant can coin a value beyond the v3 service-asset-and-configuration-mgmt set; the help text lists the standard classes (hardware / software / service / network / document / location) as suggestions. The save body sends `itil_category` alongside the existing fields; `AssetTypeRow` deserialises it with `#[serde(default)]` so types created before the column shipped still load cleanly. * Asset edit modal (in `pages/assets.rs`) gains an "ITIL lifecycle stage" input with the same free-text shape; help text suggests `planned / in_service / retired`. A new `e_itil_stage` signal seeds from the asset on edit-open and rides into the PUT body as `itil_lifecycle_stage`. * `RemoteAsset` gains `itil_lifecycle_stage: Option<String>` (also `#[serde(default)]`). * Asset detail page renders the current lifecycle stage as a gray badge in the Status sidebar card, between Status and Warranty. Hidden when unset so assets that pre-date the column stay visually clean. The asset-list `itil_category` filter from AC4 is deferred to a follow-up - the existing filter sidebar is a heavier refactor than the rest of this ticket warrants, and the pickers + detail render are the immediate operator value. #PMS-476
feat(assets): ITIL category + lifecycle stage pickers on asset forms (PMS-476)
All checks were successful
Check / fmt + clippy + tests (pull_request) Successful in 27m55s
Create release / Create release from merged PR (pull_request) Has been skipped
c7107fdf34
PMS-456 phase 1 added `asset_types.itil_category` + `assets.itil_lifecycle_stage` server-side, but the SPA had no inputs for either - operators had to set them by direct SQL. PMS-476 adds the editor surface:

* `Asset Types` settings form (in `pages/settings.rs::AssetTypeFormModal`) gains an "ITIL category" input. Free-text so a tenant can coin a value beyond the v3 service-asset-and-configuration-mgmt set; the help text lists the standard classes (hardware / software / service / network / document / location) as suggestions. The save body sends `itil_category` alongside the existing fields; `AssetTypeRow` deserialises it with `#[serde(default)]` so types created before the column shipped still load cleanly.

* Asset edit modal (in `pages/assets.rs`) gains an "ITIL lifecycle stage" input with the same free-text shape; help text suggests `planned / in_service / retired`. A new `e_itil_stage` signal seeds from the asset on edit-open and rides into the PUT body as `itil_lifecycle_stage`.

* `RemoteAsset` gains `itil_lifecycle_stage: Option<String>` (also `#[serde(default)]`).

* Asset detail page renders the current lifecycle stage as a gray badge in the Status sidebar card, between Status and Warranty. Hidden when unset so assets that pre-date the column stay visually clean.

The asset-list `itil_category` filter from AC4 is deferred to a follow-up - the existing filter sidebar is a heavier refactor than the rest of this ticket warrants, and the pickers + detail render are the immediate operator value.

#PMS-476
YousifShkara deleted branch feat/PMS-476-itil-pickers 2026-06-24 09:59:16 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!325
No description provided.