gsinghpal 1c6a460ca1 feat(shopfloor): Manager Desk — assign workers, swap tanks, take over (CHUNK 2/4)
New client action "Manager Desk" under Shop Floor menu (manager-only).
Three-column dashboard designed for the shop manager's daily job:

  Column 1 — Needs a Worker
    MOs with active WOs missing user assignment. Each card expands to
    show per-WO rows with:
      - Assign Worker dropdown (pulls from group_fusion_plating_operator)
      - Tank swap dropdown (all tanks with current bath)
      - Take Over (claims for the manager in one click)
      - Open (jump to WO form)

  Column 2 — In Progress
    MOs with workers actively running WOs. Shows who's on each step,
    lets manager reassign or take over if someone steps away.

  Column 3 — Team
    Avatar grid of operators with live queue + in-progress counts.
    Click to drill into that operator's full WO list.

KPI strip on top: Unassigned WOs, In Progress, Ready to Ship, Awaiting
Assignment SOs.

Quick / Detailed view toggle — Detailed auto-expands every card body.

New field mrp.workorder.x_fc_assigned_user_id (indexed, tracked) —
the worker currently owning this step. Will be the pivot the Tablet
Station filters on in Chunk 4.

Three new endpoints:
  /fp/manager/overview       — dashboard snapshot (30s auto-refresh)
  /fp/manager/assign_worker  — set user on a WO
  /fp/manager/assign_tank    — swap tank on a WO
  /fp/manager/take_over      — manager claims the WO (no-show coverage)

Controller is graceful when mrp module isn't installed (empty overview,
no crash) and when the bridge_mrp assignment field isn't present (falls
back to showing all active WOs as "unassigned").

Verified: 4 WOs assigned across 2 users, overview queries return the
expected counts, res.groups.user_ids (Odoo 19 API, not deprecated .users).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 20:03:01 -04:00
2026-03-16 08:14:56 -04:00
2026-02-22 01:37:50 -05:00
2026-02-22 01:37:50 -05:00
2026-02-22 01:37:50 -05:00
2026-04-12 09:09:50 -04:00
2026-04-13 02:35:35 -04:00
2026-04-04 15:37:16 -04:00
2026-03-09 15:21:22 -04:00
2026-03-16 08:14:56 -04:00
2026-04-12 09:09:50 -04:00
2026-03-16 08:14:56 -04:00
2026-04-17 17:31:12 -04:00
2026-03-17 13:32:08 -04:00
2026-03-16 08:14:56 -04:00
2026-03-20 11:46:41 -04:00
2026-03-13 12:38:28 -04:00
2026-03-13 12:38:28 -04:00
2026-03-14 12:04:20 -04:00
2026-03-11 12:15:53 -04:00
2026-03-16 08:14:56 -04:00
2026-04-12 09:09:50 -04:00
2026-03-16 08:14:56 -04:00
2026-04-07 22:03:20 -04:00
2026-03-13 12:38:28 -04:00
2026-04-04 15:37:16 -04:00
2026-03-26 15:16:51 -04:00
2026-03-09 15:21:22 -04:00
2026-03-17 13:32:08 -04:00
2026-04-12 09:09:50 -04:00
2026-03-13 12:38:28 -04:00
2026-04-17 17:31:12 -04:00
2026-03-09 15:21:22 -04:00
2026-02-22 01:22:18 -05:00
2026-04-07 21:47:15 -04:00
2026-02-22 01:37:50 -05:00
2026-03-13 12:38:28 -04:00
2026-03-13 12:38:28 -04:00
2026-04-17 17:31:12 -04:00
2026-02-22 01:22:18 -05:00
2026-04-12 09:11:35 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-03-16 08:14:56 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-12 09:11:35 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-12 09:11:35 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
2026-04-03 15:45:18 -04:00
Description
Odoo 19 custom modules
211 MiB
Languages
Python 55.9%
HTML 26.1%
JavaScript 14.9%
SCSS 1.8%
CSS 0.8%
Other 0.4%