fix(operator-wizard): surface office-authored instructions to operators
Critical UX gap discovered in production-environment battle test: when operator hits "Mark Done" and the input wizard fires, they only saw the measurement prompts list. The rich-text instructions written by the office (recipe_node.description) never reached the operator at the exact moment they need them. Fixed: wizard model gains instructions (Html, computed from step.recipe_node_id.description) + has_instructions flag. Form view renders the instructions in a prominent blue alert at the top of the wizard, above the Measurements list. Hidden when blank so operators on instruction-less steps don't see noise. Also: extend default_kind Selection on fusion.plating.process.node to match fp.step.template — both models now have the same 24 kinds. Without this, recipe authors could pick a kind in the library template form that the recipe-node Selection rejected with a ValueError. Battle test artifact: - Recipe "Hard Anodize Type III + Dye + Seal" (id=1863) — 23 steps, 105 measurement prompts, rich-text operator instructions per step - SO S00278 for ABC Manufactoring confirmed → fp.job 1236 / WH/JOB/00337 with all 23 steps materialized, 105 prompts visible to operators - Wizard test: step "11. Hard Anodize Type III" → 516 chars of instructions render + 7 input prompts in the form Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -348,22 +348,30 @@ class FpProcessNode(models.Model):
|
||||
)
|
||||
default_kind = fields.Selection(
|
||||
[
|
||||
('cleaning', 'Cleaning'),
|
||||
('etch', 'Etch'),
|
||||
('rinse', 'Rinse'),
|
||||
('plate', 'Plating'),
|
||||
('bake', 'Bake'),
|
||||
('inspect', 'Inspection'),
|
||||
('receiving', 'Receiving / Incoming Inspection'),
|
||||
('contract_review', 'Contract Review (QA-005)'),
|
||||
('racking', 'Racking'),
|
||||
('derack', 'De-Racking'),
|
||||
('mask', 'Masking'),
|
||||
('demask', 'De-Masking'),
|
||||
('dry', 'Drying'),
|
||||
('cleaning', 'Cleaning'),
|
||||
('electroclean', 'Electroclean'),
|
||||
('etch', 'Etch / Activation'),
|
||||
('rinse', 'Rinse'),
|
||||
('strike', 'Strike (Wood\'s Nickel / Activation)'),
|
||||
('plate', 'Plating'),
|
||||
('replenishment', 'Tank Replenishment'),
|
||||
('wbf_test', 'Water Break Free Test'),
|
||||
('dry', 'Drying'),
|
||||
('bake', 'Bake (HE Relief / Stress Relief)'),
|
||||
('demask', 'De-Masking'),
|
||||
('derack', 'De-Racking'),
|
||||
('inspect', 'Inspection'),
|
||||
('hardness_test', 'Hardness Test (HV / HK / HRC)'),
|
||||
('adhesion_test', 'Adhesion Test'),
|
||||
('salt_spray', 'Salt Spray / Corrosion Test'),
|
||||
('final_inspect', 'Final Inspection'),
|
||||
('packaging', 'Packaging / Pre-Ship'),
|
||||
('ship', 'Shipping'),
|
||||
('gating', 'Gating'),
|
||||
('contract_review', 'Contract Review (QA-005)'),
|
||||
],
|
||||
string='Step Kind',
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user