chore(plating): de-dash shipped code + intake-neutral customer emails

Replace em-dashes and en-dashes with hyphens across 789 shipped source
files (py/xml/js/scss) so the delivered module reads as human-written;
em-dashes had become a recognizable AI-generated tell. Internal .md dev
notes are excluded. The WO-sticker mojibake strippers keep their dash
search targets (now written — / –). No logic changes: comments
and display strings only; validated with py_compile + lxml parse.

Rewrite the 7 customer notification emails to be intake-neutral
(ship-in / drop-off / pickup) and repair-aware, and fix the Shipped
email documents line (packing slip vs bill of lading; certificate only
when issued). Subjects use a hyphen separator.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-06-05 00:16:19 -04:00
parent c9eb61ee0c
commit 8c76a16366
789 changed files with 4692 additions and 4692 deletions

View File

@@ -1,7 +1,7 @@
# Comprehensive internal-process walk.
#
# Phases:
# A) Pause / resume multiple intervals merge into duration_actual
# A) Pause / resume - multiple intervals merge into duration_actual
# B) Skip an opt-in step
# C) Skipped steps don't block job mark-done
# D) Wet plating step finish auto-spawns bake.window with right window_hours
@@ -65,7 +65,7 @@ print(f'[setup] Job {job.name} with {len(job.step_ids)} steps')
# ====================================================================== A
print()
print('='*72)
print('A Pause + resume on a step. Multiple intervals must merge.')
print('A - Pause + resume on a step. Multiple intervals must merge.')
print('='*72)
masking = job.step_ids.sorted('sequence')[0]
masking.button_start()
@@ -90,7 +90,7 @@ else:
# ====================================================================== B
print()
print('='*72)
print('B Skip an opt-in step')
print('B - Skip an opt-in step')
print('='*72)
racking = job.step_ids.sorted('sequence')[1]
print(f' Step: {racking.name} state={racking.state}')
@@ -99,10 +99,10 @@ print(f' After Skip: state={racking.state}')
if racking.state == 'skipped':
print(f' ✓ Skip works')
# ====================================================================== C walk rest, then mark-done
# ====================================================================== C - walk rest, then mark-done
print()
print('='*72)
print('C Walk remaining steps (some will spawn bake-window). Mark job done.')
print('C - Walk remaining steps (some will spawn bake-window). Mark job done.')
print('='*72)
spawn_count_before = env['fusion.plating.bake.window'].search_count([])
for s in job.step_ids.sorted('sequence'):
@@ -121,23 +121,23 @@ bws = env['fusion.plating.bake.window'].search([('part_ref', '=', job.name)])
for bw in bws:
print(f' {bw.name}: state={bw.state}, plate_exit={bw.plate_exit_time}, required_by={bw.bake_required_by}, time_remaining={bw.time_remaining_display}')
# ====================================================================== D try to mark job done
# ====================================================================== D - try to mark job done
print()
print('='*72)
print('D Mark job done (skipped+done steps both count as terminal)')
print('D - Mark job done (skipped+done steps both count as terminal)')
print('='*72)
try:
job.button_mark_done()
print(f' ✓ Job done state={job.state}')
print(f' ✓ Job done - state={job.state}')
except Exception as e:
print(f'{e}')
# ====================================================================== E bake-window lifecycle
# ====================================================================== E - bake-window lifecycle
if bws:
bw = bws[0]
print()
print('='*72)
print('E Bake-window lifecycle: start → end')
print('E - Bake-window lifecycle: start → end')
print('='*72)
print(f' Before start: state={bw.state}, color={bw.status_color}')
bw.action_start_bake()
@@ -146,10 +146,10 @@ if bws:
bw.action_end_bake()
print(f' After end_bake: state={bw.state}, bake_end={bw.bake_end_time}, duration_h={bw.bake_duration_hours:.4f}')
# ====================================================================== F failure: start a done step
# ====================================================================== F - failure: start a done step
print()
print('='*72)
print('F Failure paths')
print('F - Failure paths')
print('='*72)
done_step = job.step_ids.filtered(lambda s: s.state == 'done')[:1]
if done_step: