feat(shopfloor): Phase 3 — plant_kanban endpoint + dispatch

PV-Phase3 of the plant-view redesign.

- /fp/landing/plant_kanban JSONRPC endpoint returns {kpis, columns,
  cards} in one payload. One card per fp.job; cards denormalized so
  the OWL component doesn't fan out RPCs. Server-side filter handling
  for All / Mine / Running / Blocked / Overdue / FAIR. Within-column
  sort by (overdue, _SORT_PRIORITY[card_state], due_date).
- fusion_plating_shopfloor.action_fp_plant_kanban client action
  registered alongside the existing fp_shopfloor_landing action.
- fp_landing_data.xml resolver extended to read the layout flag and
  dispatch to v2 when x_fc_shopfloor_layout='v2' (default still legacy).

Card payload (23 fields): WO, customer, PN+rev, qty, PO, recipe, spec,
tags, current step + work centre, state chip, mini_timeline, operator,
icons (signoff / bake / tracking / etc.), progress.

State-chip mapping per spec §6.1 — one map keyed by card_state with
running-time elapsed, idle-hours, and operator-name interpolation.

Verified live — card payload sample on WO-30036 (contract_review state)
produces all expected keys + 9-element mini_timeline.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-05-23 20:51:36 -04:00
parent 7c2ae84e32
commit a90eace4d0
4 changed files with 417 additions and 2 deletions

View File

@@ -28,4 +28,18 @@
<field name="tag">fp_process_tree</field>
</record>
<!-- ================================================================== -->
<!-- Plant-view kanban (2026-05-23 redesign). -->
<!-- One card per fp.job grouped into 9 fixed columns by area_kind. -->
<!-- Replaces fp_shopfloor_landing when x_fc_shopfloor_layout='v2'. -->
<!-- The landing-action resolver in fusion_plating/data/fp_landing_data -->
<!-- .xml dispatches between this and the legacy action based on the -->
<!-- ir.config_parameter set by the new feature-flag setting. -->
<!-- ================================================================== -->
<record id="action_fp_plant_kanban" model="ir.actions.client">
<field name="name">Shop Floor</field>
<field name="tag">fp_plant_kanban</field>
<field name="target">main</field>
</record>
</odoo>