From 3eba80bb31b4538feb51ad2bf04f1a9362b908c5 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Fri, 22 May 2026 22:11:49 -0400 Subject: [PATCH] docs(fusion_plating_shopfloor): deprecation markers on legacy endpoints (P3.6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plan task P3.6 — pragmatic deviation. The plan called for stubs that internally route to /fp/landing/kanban + reshape; in practice the legacy fp_shopfloor_tablet OWL component (still registered, just unhooked from the menu) consumes a much richer payload (my_queue, active_wo, baths, bake_windows, gates, holds, pending_qcs, stations) than /fp/landing/kanban returns. Gutting tablet_overview to a stub would break that legacy component. Instead: add explicit DEPRECATED markers + INFO log lines on the three endpoints (tablet_overview, plant_overview, queue). Bodies stay intact so the legacy components keep working until Phase 5 cleanup retires both endpoints AND the legacy OWL components together. Note: /fp/shopfloor/plant_overview/move_card is NOT deprecated — the new Landing component still uses it for drag-and-drop. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../controllers/shopfloor_controller.py | 53 +++++++++++++++---- 1 file changed, 44 insertions(+), 9 deletions(-) diff --git a/fusion_plating/fusion_plating_shopfloor/controllers/shopfloor_controller.py b/fusion_plating/fusion_plating_shopfloor/controllers/shopfloor_controller.py index edbd58d3..75bfa06f 100644 --- a/fusion_plating/fusion_plating_shopfloor/controllers/shopfloor_controller.py +++ b/fusion_plating/fusion_plating_shopfloor/controllers/shopfloor_controller.py @@ -620,15 +620,26 @@ class FpShopfloorController(http.Controller): # ---------------------------------------------------------------------- # Tablet Overview — one-shot dashboard payload # ---------------------------------------------------------------------- + # DEPRECATED (Phase 3 tablet redesign — 2026-05-22). + # New Shop Floor Landing client action (fp_shopfloor_landing) uses + # /fp/landing/kanban. The Tablet Station menu now points at the new + # surface. This endpoint stays live as long as the legacy + # fp_shopfloor_tablet OWL component is still registered — it consumes + # the rich payload (my_queue, active_wo, baths, bake_windows, gates, + # holds, pending_qcs, stations). Phase 5 cleanup will retire both the + # legacy component and this endpoint together. @http.route('/fp/shopfloor/tablet_overview', type='jsonrpc', auth='user') def tablet_overview(self, station_id=None, facility_id=None): - """Return a rich dashboard snapshot for the Tablet Station page. + """[DEPRECATED] Legacy Tablet Station dashboard payload. - Data layer: fp.job + fp.job.step. Field names on the response - keep the legacy `_wo` suffix where they were referenced from the - XML so the template doesn't need to be rewritten — internally - these now point at fp.job.step rows. + New consumers should use /fp/landing/kanban via the + fp_shopfloor_landing client action (Phase 3 tablet redesign). """ + _logger.info( + "DEPRECATED /fp/shopfloor/tablet_overview called by uid %s — " + "Phase 5 cleanup will remove this endpoint.", + request.env.uid, + ) env = request.env user = env.user @@ -1002,8 +1013,20 @@ class FpShopfloorController(http.Controller): # ---------------------------------------------------------------------- # Operator queue snapshot (legacy fusion.plating.operator.queue helper) # ---------------------------------------------------------------------- + # DEPRECATED (Phase 3 tablet redesign — 2026-05-22). + # The new fp_shopfloor_landing component does NOT use this endpoint; + # it uses /fp/landing/kanban which already filters per station. The + # only remaining consumer is the legacy fp_shopfloor_tablet OWL + # component (still registered, no menu pointing at it). Phase 5 + # cleanup will retire both this endpoint and the legacy component + # together — no replacement, the kanban supersedes it entirely. @http.route('/fp/shopfloor/queue', type='jsonrpc', auth='user') def queue(self, facility_id=None): + _logger.info( + "DEPRECATED /fp/shopfloor/queue called by uid %s — " + "Phase 5 cleanup will remove this endpoint.", + request.env.uid, + ) Queue = request.env.get('fusion.plating.operator.queue') if Queue is None or not hasattr(Queue, 'build_for_user'): # Fallback: synthesize the queue directly from fp.job.step. @@ -1093,14 +1116,26 @@ class FpShopfloorController(http.Controller): return {'ok': True} + # DEPRECATED (Phase 3 tablet redesign — 2026-05-22). + # The new fp_shopfloor_landing client action has an "All Plant" mode + # that supersedes the standalone Plant Overview surface. Old endpoint + # stays live for the move_card sibling endpoint and the legacy + # fp_plant_overview OWL component (still registered but unhooked + # from the menu). Phase 5 cleanup will retire both together. @http.route('/fp/shopfloor/plant_overview', type='jsonrpc', auth='user') def plant_overview(self, facility_id=None, search=None): - """Return active fp.job.step rows grouped by fp.work.centre. + """[DEPRECATED] Legacy Plant Overview payload. - Cards are individual fp.job.step rows in ready / in_progress / - paused state. Columns are fp.work.centre rows; an "Unassigned" - pseudo-column collects steps without a work centre. + New consumers should use /fp/landing/kanban with mode='all_plant' + via the fp_shopfloor_landing client action (Phase 3 tablet + redesign). Note: /fp/shopfloor/plant_overview/move_card is NOT + deprecated — the Landing component still uses it for drag-drop. """ + _logger.info( + "DEPRECATED /fp/shopfloor/plant_overview called by uid %s — " + "Phase 5 cleanup will remove this endpoint.", + request.env.uid, + ) env = request.env search = (search or '').strip().lower()