docs/sql/production_material_inventory.sql:ALTER TABLE biz_consumable 新增 stock_qty/warning_qty/status 字段,ALTER TABLE biz_reagent 新增同上字段,CREATE TABLE biz_consumable_stock_log,CREATE TABLE biz_reagent_stock_logbackend/app/models/models.py 中 BizConsumable 新增 stock_qty、warning_qty、status 字段;新建 BizConsumableStockLog Model(参照 BizQcMaterialUsage,增加 step_id/task_id/task_no 字段)backend/app/crud/consumable.py:修改 _row_to_dict 返回库存字段,新增 stock_in()、stock_out()、batch_stock_in()、batch_stock_out() 函数(参照 crud/qc_material.py),修改 soft_delete 增加库存检查backend/app/crud/consumable_stock_log.py:list_stock_logs() 函数(参照 crud/qc_material_usage.py 的 list_usages()),支持按 material_id、change_type、时间范围筛选backend/app/models/models.py 中 BizReagent 新增 stock_qty、warning_qty、status 字段;新建 BizReagentStockLog Model(同 BizConsumableStockLog)backend/app/crud/reagent.py:修改 _row_to_dict 返回库存字段,新增 stock_in()、stock_out()、batch_stock_in()、batch_stock_out() 函数,修改 soft_delete 增加库存检查backend/app/crud/reagent_stock_log.py:list_stock_logs() 函数,支持筛选backend/app/api/production.py 新增耗材出入库 API:POST /consumables/{id}/stock-in、POST /consumables/{id}/stock-out、POST /consumables/batch-stock-in、POST /consumables/batch-stock-outbackend/app/api/production.py 新增耗材变动记录 API:GET /consumables/{id}/stock-logs、GET /consumables/stock-logsbackend/app/api/production.py 新增试剂出入库 API:POST /reagents/{id}/stock-in、POST /reagents/{id}/stock-out、POST /reagents/batch-stock-in、POST /reagents/batch-stock-outbackend/app/api/production.py 新增试剂变动记录 API:GET /reagents/{id}/stock-logs、GET /reagents/stock-logsbackend/app/crud/consumable_stock_log.py 新增 revert_step_stock_changes() 函数(参照 qc_material_usage.py 的 revert_task_material_usages,按 step_id + source_type=step_save 回退库存)backend/app/crud/consumable_stock_log.py 新增 deduct_for_step() 函数(参照 qc_material_usage.py 的 deduct_for_task,按 actual_usage 扣减库存)backend/app/crud/reagent_stock_log.py 新增 revert_step_stock_changes() 和 deduct_for_step() 函数(同上,试剂版)backend/app/crud/production_task.py 的 replace_step_reagents() 函数:在 soft delete 旧记录后、insert 新记录后,调用 revert_step_stock_changes() + deduct_for_step()backend/app/crud/production_task.py 的 replace_step_consumables() 函数:同上逻辑backend/app/api/production.py 中 replace_task_step_reagents 和 replace_task_step_consumables API,传入 task_id/task_no 以支持溯源web-admin/src/api/production.ts:新增耗材出入库 API 调用函数(stockIn、stockOut、batchStockIn、batchStockOut、getStockLogs、getAllStockLogs)web-admin/src/views/production/consumable/index.vue:列表新增库存量、预警量、状态列,表单新增库存字段qc-material/index.vue)web-admin/src/api/production.ts:新增试剂量出入库 API 调用函数web-admin/src/views/production/reagent/index.vue:列表新增库存量、预警量、状态列,表单新增库存字段