Note: This answer is an approach, not a solution, it is meant to illustrate a conceptual proof of concept.
Given a BoM that shows PRODUCT (component) MANUFACTURING SERVICES (labor) and OPERATIONS (workcenters):

Consume half the components:

Work half the labor:

Use the work centers for half the time:

See that the WIP is shown for 50% of the BoM Cost:

How?
1. Leverage https://apps.odoo.com/apps/modules/14.0/mrp_services/
2. Create the following custom fields:



for record in self:
x_product_wip = 0.0
for component in record.move_raw_ids:
x_product_wip = x_product_wip + component.product_id.standard_price * component.quantity_done
record['x_product_wip'] = x_product_wip



for record in self:
x_workcenter_wip = 0
for workorder in record.workorder_ids:
x_workcenter_wip = x_workcenter_wip + workorder.workcenter_id.costs_hour * workorder.duration / 60
record['x_workcenter_wip'] = x_workcenter_wip



for record in self:
x_services_wip = 0.0
for service in record.x_service_product_ids:
x_services_wip = x_services_wip + service.x_burden
record['x_services_wip'] = x_services_wip



for record in self:
record['x_total_wip'] = record.x_workcenter_wip + record.x_services_wip + record.x_product_wip



for record in self:
if record.qty_produced > 0:
record['x_item_wip'] = record.x_total_wip / record.qty_produced
else:
record['x_item_wip'] = 0
3. Add these custom fields to the UI:


Note that the WIP that will be calculated is NOT always 100% correct with this approach – it uses the CURRENT price of the components, not the ACTUAL cost, so the ACTUAL WIP is what will be reported normally by Odoo at the end of Manufacturing.
This approach should be understood and improved before being used. It has been tested only as a proof of concept. Contact Odoo or your Odoo Partner for help.